

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用管理 LF-Tag 权限 Amazon CLI
<a name="TBAC-granting-revoking-tags-cli"></a>

您可以使用 Amazon Command Line Interface (Amazon CLI) 授予、撤销和列出对 LF 标签的权限。

**列出 LF 标签权限 (Amazon CLI)**
+ 输入 `list-permissions` 命令。您必须是 LF 标签创建者、数据湖管理员，或者具有对 LF 标签的 `Drop`、`Alter`、`Describe`、`Associate`、`Grant with LF-Tag permissions` 权限才能查看它。

  以下命令请求您有权访问的所有 LF 标签。

  ```
  aws lakeformation list-permissions --resource-type LF_TAG
  ```

  以下是数据湖管理员的示例输出，该人员可以查看向所有主体授予的所有 LF 标签。非管理员用户只能查看向其授予的 LF 标签。从外部账户授予的 LF 标签权限将显示在单独的结果页面上。要查看它们，请重复该命令并向 `--next-token` 参数提供上一次命令运行时返回的令牌。

  ```
  {
      "PrincipalResourcePermissions": [
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_admin"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "environment",
                      "TagValues": [
                          "*"
                      ]
                  }
              },
              "Permissions": [
                  "ASSOCIATE"
              ],
              "PermissionsWithGrantOption": [
                  "ASSOCIATE"
              ]
          },
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "module",
                      "TagValues": [
                          "Orders",
                          "Sales"
                      ]
                  }
              },
              "Permissions": [
                  "DESCRIBE"
              ],
              "PermissionsWithGrantOption": []
          },
  ...
      ],
      "NextToken": "eyJzaG91bGRRdWVy...Wlzc2lvbnMiOnRydWV9"
  }
  ```

  您可以列出特定 LF 标签键的所有授予。以下命令返回对 LF 标签 `module` 授予的所有权限。

  ```
  aws lakeformation list-permissions --resource-type LF_TAG --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
  ```

  您还可以列出向特定主体授予的针对特定 LF 标签的 LF 标签值。提供 `--principal` 参数时，必须提供 `--resource` 参数。因此，该命令实际只能请求向特定主体授予的针对特定 LF 标签键的值。以下命令显示如何针对主体 `datalake_user1` 和 LF 标签键 `module` 执行此操作。

  ```
  aws lakeformation list-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --resource-type LF_TAG --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
  ```

  下面是示例输出。

  ```
  {
      "PrincipalResourcePermissions": [
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "module",
                      "TagValues": [
                          "Orders",
                          "Sales"
                      ]
                  }
              },
              "Permissions": [
                  "ASSOCIATE"
              ],
              "PermissionsWithGrantOption": []
          }
      ]
  }
  ```

**授予对 LF 标签的权限 (Amazon CLI)**

1. 输入类似以下的命令。此示例向用户 `datalake_user1` 授予对带有键 `module` 的 LF 标签的 `Associate` 权限。它授予查看和分配该键的所有值的权限，如星号 (\*) 所示。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

   授予 `Associate` 权限会隐式授予 `Describe` 权限。

   下一个示例使用密钥和授权选项`Associate`向外部 Amazon 账户 1234-5678-9012 授予LF-tag。`module`它仅授予查看和分配值 `sales` 和 `orders` 的权限。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=123456789012 --permissions "ASSOCIATE" --permissions-with-grant-option "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["sales", "orders"]}}'
   ```

1. 授予 `GrantWithLFTagExpression` 权限会隐式授予 `Describe` 权限。

   下一个示例使用授予选项向用户授予对带有键 `module` 的 LF 标签的 `GrantWithLFTagExpression` 权限。它仅使用值 `sales` 和 `orders` 授予查看和授予对数据目录资源的权限。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "GrantWithLFTagExpression" --permissions-with-grant-option "GrantWithLFTagExpression" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["sales", "orders"]}}'
   ```

1. 下一个示例使用授予选项向用户授予对带有键 `module` 的 LF 标签的 `Drop` 权限。它会授予删除 LF 标签的权限。要删除 LF 标签，您需要具有对该键的所有值的权限。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "DROP" --permissions-with-grant-option "DROP" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

1. 下一个示例使用授予选项向用户授予对带有键 `module` 的 LF 标签的 `Alter` 权限。它会授予删除 LF 标签的权限。要更新 LF 标签，您需要具有对该键的所有值的权限。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "ALTER" --permissions-with-grant-option "ALTER" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

**撤销对 LF 标签的权限 (Amazon CLI)**
+ 输入类似以下的命令。此示例向用户 `datalake_user1` 授予对带有键 `module` 的 LF 标签的 `Associate` 权限。

  ```
  aws lakeformation revoke-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
  ```