

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

# 授予数据筛选条件权限
<a name="granting-filter-perms"></a>

您可以向主体授予对数据筛选条件的 `SELECT`、`DESCRIBE` 和 `DROP` Lake Formation 权限。

首先，只有您可以查看为表创建的数据筛选条件。要使其他主体能够查看数据筛选条件并向数据筛选条件授予数据目录权限，您必须执行以下任一操作：
+ 使用授予选项向主体授予对表的 `SELECT` 权限，然后将数据筛选条件应用于授权。
+ 向主体授予对数据筛选条件的 `DESCRIBE` 或 `DROP` 权限。

您可以向外部 AWS 账户授予`SELECT`权限。然后，该账户中的数据湖管理员可以将该权限授予给该账户中的其他主体。向外部账户授予权限时，必须包括授予选项，以便外部账户的管理员可以进一步将权限级联到 his/her 账户中的其他用户。向账户中的主体授权时，可以使用授予选项进行授权。

您可以使用 AWS Lake Formation 控制台、API 或 AWS Command Line Interface (AWS CLI) 授予和撤消数据筛选器的权限。

------
#### [ Console ]

1. 登录 AWS 管理控制台 并打开 Lake Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在导航窗格的**权限**下，选择**数据湖权限**。

1. 在**权限**页面的**数据权限**部分中，选择**授予**。

1. 在**授予数据权限**页面上，选择要向其授予权限的主体。

1. 在“LF 标签或目录资源”部分下，选择**已命名数据目录资源**。然后选择要为其授予权限的数据库、表和数据筛选条件。  
![该图片是控制台中“权限”页面的屏幕截图。其中显示了“LF 标签或目录资源”部分，并已选择“已命名数据目录资源”选项。在“数据库”下，提供了一个值：cloudtrail。在“表”下，提供了一个值：cloudtrail-logs-aws_logs。在“数据筛选条件”下，提供了一个值：cloudtrail_lakeformation_filter。](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. 在**数据筛选条件权限**部分中，选择要向所选主体授予的权限。  
![该图片是 Lake Formation 控制台中“权限”页面上的“数据筛选条件权限”部分屏幕截图。对于“数据筛选条件权限”，未选择 Select 权限，选择 Describe 和 Drop 权限。在“可授予的权限”下，未选择任何权限（Select、Describe、Drop）。](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/grant-perms-on-filters.png)

------
#### [ AWS CLI ]
+ 输入 `grant-permissions` 命令。为 `resource` 参数指定 `DataCellsFilter`，并为 `Permissions` 参数和 `PermissionsWithGrantOption` 参数（可选）指定 `DESCRIBE` 或 `DROP`。

  以下示例在 AWS 账户 1111-2222-3333 中使用授予选项向用户 `datalake_user1` 授予对数据筛选条件 `restrict-pharma` 的 `DESCRIBE` 权限，该筛选条件属于 `sales` 数据库中的 `orders` 表。

  ```
  aws lakeformation grant-permissions --cli-input-json file://grant-params.json
  ```

  以下是 `grant-params.json` 文件的内容。

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------