

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

# 使用命名资源方法授予数据库权限
<a name="granting-database-permissions"></a>

以下步骤说明如何使用命名资源方法授予数据库权限。

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

使用 Lake Formation 控制台上的**授予权限**页面。该页面分为以下几个部分：
+  **主体类型**：**主体**部分包括要授予权限的 IAM 用户、角色、IAM Identity Center 用户和组、SAML 用户和组、 AWS 账户、组织或组织单元。在**按属性划分的主体**部分，您可以为附加到 IAM 角色的属性指定键和值。
+  **LF 标签或目录资源**：要对其授予权限的数据库、表、视图或资源链接。
+  **权限** – 要授予的 Lake Formation 权限。

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

1. 打开**授予权限**页面。

   在打开 AWS Lake Formation 控制台 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)，然后以数据湖管理员、数据库创建者或对数据库拥有**可授予权限**的 IAM 用户身份登录。

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

1. 在**主体类型**部分，指定主体或使用属性向主体授予权限。  
![\[“主体”部分包含四个磁贴。每个磁贴包含一个选项按钮和文本。\]](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/identity-center-grant-perm.png)  
**IAM 用户和角色**  
从 **IAM 用户和角色**列表中选择一个或多个用户或角色。  
**IAM Identity Center**  
从**用户和组**列表中选择一个或多个用户或组。选择**添加**以添加更多用户或组。  
**SAML 用户和组**  
对于 **SAML 和 Quick 用户和群组**，请为通过 SAML 联合的用户或群组或 Amazon Quick 用户或群组输入一个或多个 ARNs Amazon 资源名称 (ARNs)。在每个 ARN 后按 Enter。  
有关如何构造的信息 ARNs，请参见[Lake Formation 授予和撤销命令 AWS CLI](lf-permissions-reference.md#perm-command-format)。  
只有 Quick 企业版支持 Lake Formation 与 Quick 集成。  
**外部账户**  
对于**AWS 账户 AWS 组织**或 **IAM 委托人**，请为 IAM 用户或角色输入一个或多个有效的 AWS 账户 IDs IDs IDs、组织、组织单位或 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.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/grant-target-resources-section-2.png)

1. 从**数据库**列表中选择一个或多个数据库。您也可以选择一个或多个**表 and/or ****数据过滤器**。

1. 在**权限**部分中，选择权限和可授予的权限。在**数据库权限**下，选择一项或多项要授予的权限。  
![\[“权限”部分包含两个水平排列的磁贴。每个磁贴包含一个选项按钮和文本。“数据库权限”磁贴处于选中状态。另一个磁贴“基于列的权限”处于禁用状态，因为它与表权限相关。磁贴下方是一组要授予的数据库权限对应的复选框。这些复选框包括 Create Table、Alter、Drop、Describe 和 Super。该组下方是另一组相同的复选框，代表可授予的权限。\]](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/grant-target-db-permissions-section.png)
**注意**  
在授予对具有指向注册位置的位置属性的数据库的 `Create Table` 或 `Alter` 权限后，请确保还向主体授予对该位置的数据位置权限。有关更多信息，请参阅 [授予数据位置权限](granting-location-permissions.md)。

1. （可选）在**可授予的权限**下，选择授予接收人可以向其 AWS 账户中的其他主体授予的权限。当您从外部账户向 IAM 主体授予权限时，不支持此选项。

1. 选择**授予**。

------
#### [ AWS CLI ]

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

**要授予数据库权限，请使用 AWS CLI**
+ 运行 `grant-permissions` 命令，并根据所授予的权限将数据库或数据目录指定为资源。

  在以下示例中，*<account-id>*替换为有效的 AWS 账户 ID。  
**Example – 授予创建数据库的权限**  

  此示例向用户 `datalake_user1` 授予 `CREATE_DATABASE` 权限。由于被授予此权限的资源是数据目录，因此该命令会将空的 `CatalogResource` 结构指定为 `resource` 参数。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_DATABASE" --resource '{ "Catalog": {}}'
  ```  
**Example – 授予在指定数据库中创建表的权限**  

  下一个示例向用户 `datalake_user1` 授予对数据库 `retail` 的 `CREATE_TABLE` 权限。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
  ```  
**Example — 使用 “授权” 选项向外部 AWS 账户授权**  

  下一个示例使用授予选项向外部账户 1111-2222-3333 授予对数据库 `retail` 的 `CREATE_TABLE` 权限。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "CREATE_TABLE" --permissions-with-grant-option "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
  ```  
**Example – 向组织授予权限**  

  下一个示例使用授予选项向组织 `o-abcdefghijkl` 授予对数据库 `issues` 的 `ALTER` 权限。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl --permissions "ALTER" --permissions-with-grant-option "ALTER" --resource '{ "Database": {"Name":"issues"}}'
  ```  
**Example - 向同一账户中的 `ALLIAMPrincipals` 授予权限**  

  下一个示例向同一账户中的所有主体授予对数据库 `retail` 的 `CREATE_TABLE` 权限。选择此选项后，账户中的每个主体即可在数据库中创建表并创建表资源链接，从而允许集成查询引擎访问共享数据库和表。当主体获得跨账户授权但无权创建资源链接时，此选项尤为有用。在这种情况下，数据湖管理员可以创建占位符数据库并向 `ALLIAMPrincipal` 组授予 `CREATE_TABLE` 权限，从而使账户中的每个 IAM 主体都能在占位符数据库中创建资源链接。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE"  --resource '{ "Database": {"Name":"temp","CatalogId":"111122223333"}}' 
  ```  
**Example - 向外部账户中的 `ALLIAMPrincipals` 授予权限**  

  下一个示例向外部账户中的所有主体授予对数据库 `retail` 的 `CREATE_TABLE` 权限。选择此选项后，账户中的每个主体即可在数据库中创建表。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE"  --resource '{ "Database": {"Name":"retail","CatalogId":"123456789012"}}'
  ```

**注意**  
在授予对具有指向注册位置的位置属性的数据库的 `CREATE_TABLE` 或 `ALTER` 权限后，请确保还向主体授予对该位置的数据位置权限。有关更多信息，请参阅 [授予数据位置权限](granting-location-permissions.md)。

------

**另请参阅**  
 [Lake Formation 权限参考](lf-permissions-reference.md) 
 [授予对与您的账户共享的数据库或表的权限](regranting-shared-resources.md) 
 [访问和查看共享数据目录表和数据库](viewing-shared-resources.md) 