

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

# 使用命名资源方法授予表权限
使用命名资源方法授予表权限

你可以使用 Lake Formation 控制台或 Amazon CLI 授予 Lake Formation 对数据目录表的权限。您可以授予对单个表的权限，也可以通过一次授予操作来授予对数据库中所有表的权限。

如果您授予对数据库中所有表的权限，则将隐式授予对数据库的 `DESCRIBE` 权限。然后，数据库将显示在控制台的**数据库**页面上，由 `GetDatabases` API 操作返回。使用基于属性的访问权限控制（ABAC）时，这个自动 `DESCRIBE` 权限授予不适用。使用属性对数据库中所有表授予权限时，Lake Formation 不会向数据库隐式授予 `DESCRIBE` 权限。

当您选择 `SELECT` 作为要授予的权限时，可以选择应用列筛选条件、行筛选条件或单元格筛选条件。

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

以下步骤说明如何使用命名资源方法和 Lake Formation 控制台上的**授予数据湖权限**页面来授予表权限。该页面分为以下几个部分：
+  **主体类型**：要向其授予权限的用户、角色、 Amazon 账户、组织或组织单元。您还可向具有匹配属性的主体授予权限。
+  **LF 标签或目录资源** – 要对其授予权限的数据库、表或资源链接。
+  **权限** – 要授予的 Lake Formation 权限。

**注意**  
要授予对表资源链接的权限，请参阅[授予资源链接权限](granting-link-permissions.md)。

1. 打开“授予权限”页面。

   在打开 Amazon Lake Formation 控制台 [https://console.aws.amazon.com/lakeformation/](https://console.amazonaws.cn/lakeformation/)，然后以数据湖管理员、表创建者或使用授权选项获得表权限的用户身份登录。

   请执行以下操作之一：
   + 在导航窗格的**权限**下，选择**数据权限**。然后选择**授予**。
   + 在导航窗格中，选择**表**。然后在**表**页面上选择一个表，并在**操作**菜单的**权限**下选择**授予**。
**注意**  
您可以通过表的资源链接授予对表的权限。为此，在**表**页面上选择一个资源链接，然后在**操作**菜单上选择**对目标的授权**。有关更多信息，请参阅 [资源链接在 Lake Formation 中的工作原理](resource-links-about.md)。

1. 接下来，在**主体类型**部分，指定主体或使用匹配属性向主体授予权限。  
**IAM 用户和角色**  
从 **IAM 用户和角色**列表中选择一个或多个用户或角色。  
**IAM Identity Center**  
从**用户和组**列表中选择一个或多个用户或组。  
**SAML 用户和组**  
对于 **SAML 和 Quick 用户和群组**，请为通过 SAML 联合的用户或群组或快速用户或群组输入一个或 ARNs 多个 Amazon 资源名称 (ARNs)。在每个 ARN 后按 Enter。  
有关如何构造的信息 ARNs，请参见[Lake Formation 授予和撤销命令 Amazon CLI](lf-permissions-reference.md#perm-command-format)。  
仅Quick 企业版支持 Lake Formation 与 Quick 集成。  
**外部账户**  
对于**Amazon Web Services 账户 、 Amazon 组织**或 **IAM 委托人**，请输入一个或多个有效的组织 Amazon Web Services 账户 IDs IDs IDs、组织单位或 IAM 用户或角色的 ARN。在每个 ID 后按 **Enter**。  
组织 ID 由“o-”后跟 10 到 32 个小写字母或数字组成。  
单位 ID 以“ou-”开头，后跟 4 到 32 个小写字母或数字（包含 OU 的根的 ID）。该字符串后跟第二个“-”字符和 8 到 32 个额外的小写字母或数字。  
按属性划分的主体  
指定属性键和值。如果选择多个值，则将使用 OR 运算符来创建属性表达式。这意味着，如果分配给 IAM 角色或用户的任何属性标签值匹配，则该角色或用户将 role/user 获得对资源的访问权限  
 通过指定您是向同一账户中具有匹配属性的主体，还是向另一个账户中具有匹配属性的主体授予权限来选择权限范围。

1. 在 **LF 标签或目录资源**部分中，选择一个数据库。然后选择一个或多个表或**所有表**。  
![\[“LF 标签或目录资源”部分包含两个水平排列的磁贴，其中每个磁贴包含一个选项按钮和描述性文本。选项包括“通过 LF 标签匹配的资源”和“命名数据目录资源”。“命名数据目录资源”处于选中状态。磁贴下方是两个下拉列表：“数据库”和“表”。“数据库”下拉列表下方有一个磁贴，其中包含所选数据库名称。“表”下拉列表下方有一个磁贴，其中包含所选表名称。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/grant-target-resources-tables-section-2.png)

1. 

**指定权限，不应用任何数据筛选。**

   在**权限**部分中，选择要授予的表权限，也可以选择可授予的权限。  
![\[表和列权限部分包含两个子部分：“表权限”和“可授予的权限”。每个子部分都有一个复选框，对应每种可能的 Lake Formation 权限：Alter、Insert、Drop、Delete、Select、Describe 和 Super。Super 权限位于其他权限的右侧，其描述为：“此权限允许主体向左侧授予任何权限，并取代这些可授予的权限。”\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/grant-table-permissions-section-no-filter.png)

   如果授予**选择**权限，则**数据权限**部分将显示在**表和列权限**部分下方，其中**所有数据访问**选项默认处于选中状态。接受默认设置。  
![\[该部分包含三个水平排列的磁贴，其中每个磁贴有一个选项按钮和描述。选项按钮包括“所有数据访问”（已选择）、“基于列的简单访问”和“高级单元格级筛选条件”。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/grant-select-all-data-access.png)

1. 选择**授予**。

1. 

**通过数据筛选指定 **Select** 权限**

   选择 **Select** 权限。不要选择任何其他权限。

   **数据权限**部分将显示在**表和列权限**部分下方。

1. 请执行以下操作之一：
   + 仅应用简单列筛选。

     1. 选择**基于列的简单访问**。  
![\[顶部是“表和列权限”部分，如前面的屏幕截图所示。该部分包含表权限和可授予的权限对应的复选框。底部“数据权限”有三个水平排列的磁贴，其中每个磁贴有一个选项按钮和描述。选项按钮包括“所有数据访问”、“基于列的简单访问”和“高级单元格级筛选条件”。“基于列的简单访问”选项处于选中状态。磁贴下方是一个选项按钮组，其标签为“选择权限筛选条件”。选项包括“包括列”和“排除列”。选项组下方是“选择列”下拉列表，该下拉列表下方是“可授予的权限”子部分，其中包含一个标有“Select”的复选框。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/grant-table-permissions-section-column-filter.png)

     1. 选择是包括还是排除列，然后选择要包括或排除的列。

        向外部 Amazon 账户或组织授予权限时，仅支持包含列表。

     1. （可选）在**可授予的权限**下，开启“Select”权限的授予选项。

         如果包括授予选项，则授予接收人只能授予对您授予给他们的列的权限。
**注意**  
您也可以通过创建指定列筛选条件并将所有行指定为行筛选条件的数据筛选条件来应用列筛选。但是，这需要更多的步骤。
   + 应用列、行或单元格筛选。

     1. 选择**高级单元格级筛选条件**。  
![\[此部分标题为“数据权限”，位于“表权限”部分下方。它有三个水平排列的磁贴，其中每个磁贴有一个选项按钮和描述。选项按钮包括“所有数据访问”、“基于列的简单访问”和“高级单元格级筛选条件”。“高级单元格级筛选条件”选项处于选中状态。磁贴下方是“查看现有权限”标签，左侧有一个曝光三角形。现有权限不会显示出来。接着是标题为“要授予权限的数据筛选条件”的部分。标题右侧有三个按钮：“刷新”、“管理筛选条件”和“创建新筛选条件”。标题和按钮下方是一个文本字段，其中包含占位符文本“查找过滤器”。该文本字段下面是现有过滤条件的表。每行左侧都有一个复选框。列标题分别是“筛选条件名称”、“表”、“数据库” 和 “表目录 ID”。表中有两行。第一行中的筛选条件名称是 restrict-pharma。第二行中的筛选条件名称是 no-pharma。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/grant-table-permissions-section-cell-filter.png)

     1. （可选）展开**查看现有权限**。

     1. （可选）选择**创建新筛选条件**。

     1. （可选）要查看列出的筛选条件的详细信息，或者要创建新筛选条件或删除现有筛选条件，请选择**管理筛选条件**。

        此时将在新的浏览器窗口中打开**数据筛选条件**页面。

        完成**数据筛选条件**页面上完成操作后，返回到**授予权限**页面，如有必要，请刷新该页面以查看创建的任何新的数据筛选条件。

     1. 选择一个或多个要应用于授予的数据筛选条件。
**注意**  
如果列表中没有数据筛选条件，则表示未为所选表创建任何数据筛选条件。

1. 选择**授权**。

------
#### [ Amazon CLI ]

您可以使用命名资源方法和 Amazon Command Line Interface (Amazon CLI) 来授予表权限。

**要授予表权限，请使用 Amazon CLI**
+ 运行 `grant-permissions` 命令并指定表作为资源。

**Example – 对单个表授予权限 - 无筛选**  
以下示例`ALTER`向 Amazon 账户 1111-2222-3333 `datalake_user1` 中的用户授予数据库表上的`SELECT`和。`inventory` `retail`  

```
1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" "ALTER" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```
如果您授予对其基础数据位于注册位置的表的 `ALTER` 权限，请确保还向主体授予对该位置的数据位置权限。有关更多信息，请参阅 [授予数据位置权限](granting-location-permissions.md)。

**Example – 使用“授予”选项对所有表授予权限 - 无筛选**  
下一个示例使用授予选项授予对数据库 `retail` 中所有表的 `SELECT` 权限。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --permissions-with-grant-option "SELECT" --resource '{ "Table": { "DatabaseName": "retail", "TableWildcard": {} } }'
```<a name="simple-column-filter-example"></a>

**Example – 通过简单列筛选授予权限**  
下一个示例授予对表 `persons` 中一部分列的 `SELECT` 权限。它使用简单列筛选。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "TableWithColumns": {"DatabaseName":"hr", "Name":"persons", "ColumnNames":["family_name", "given_name", "gender"]}}'
```

**Example – 使用数据筛选条件授予权限**  
此示例授予对 `orders` 表的 `SELECT` 权限并应用 `restrict-pharma` 数据筛选条件。  

```
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": ["SELECT"],
    "PermissionsWithGrantOption": ["SELECT"]
}
```

------

**另请参阅**  
[Lake Formation 权限概述](lf-permissions-overview.md)
[Lake Formation 中的数据筛选和单元格级别安全性](data-filtering.md)
[Lake Formation 角色和 IAM 权限参考](permissions-reference.md)
 [授予资源链接权限](granting-link-permissions.md)
 [访问和查看共享数据目录表和数据库](viewing-shared-resources.md) 