Lake Formation 权限参考 - AWS Lake Formation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Lake Formation 权限参考

要执行 AWS Lake Formation 运营,负责人需要两者 Lake Formation 权限和 AWS Identity and Access Management (人IAM)权限。您通常 IAM 权限使用 粗粒 访问控制策略,如 Lake Formation 访问控制概述. 您可以授予 Lake Formation 使用控制台、API或 AWS Command Line Interface (人AWS CLI)。

了解如何授予或撤销 Lake Formation 权限,请参阅 授予和撤销数据目录权限授予数据位置权限.

注意

本节中的示例显示了如何授予相同 AWS 帐户。有关跨帐户授予的示例,请参阅 授予 Lake Formation 权限.

Lake Formation 授予和撤销 AWS CLI 命令

本节中的每个权限描述都包括使用 AWS CLI 命令。以下是 Lake Formation grant-permissionsrevoke-permissions AWS CLI 命令。

grant-permissions [--catalog-id <value>] --principal <value> --resource <value> --permissions <value> [--permissions-with-grant-option <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
revoke-permissions [--catalog-id <value>] --principal <value> --resource <value> --permissions <value> [--permissions-with-grant-option <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]

有关这些命令的详细描述,请参阅 授予权限撤消权限AWS CLI Command Reference. 本节提供有关 --principal 选项。

--principal 选项是下列选项之一:

  • Amazon资源名称(ARN),用于 AWS Identity and Access Management (人IAM)用户或角色

  • 通过SAML提供程序(例如MicrosoftActiveDirectory联合服务(ADFS))进行身份验证的用户或组的ARN

  • ARN代表 Amazon QuickSight 用户或组

  • 对于跨帐户权限, AWS 帐户ID、组织ID或组织单位ID

以下是所有 --principal 类型。

委托人是 IAM 用户

语法:

--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/<user-name>

示例:

--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1
委托人是 IAM 角色

语法:

--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:role/<role-name>

示例:

--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:role/workflowrole
委托人是通过SAML提供商进行身份验证的用户

语法:

--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:saml-provider/<SAMLproviderName>:user/<user-name>

示例:

--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/idp1:user/datalake_user1
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/AthenaLakeFormationOkta:user/athena-user@example.com
委托人是通过SAML提供商进行身份验证的团体

语法:

--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:saml-provider/<SAMLproviderName>:group/<group-name>

示例:

--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/idp1:group/data-scientists
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/AthenaLakeFormationOkta:group/my-group
委托人是 Amazon QuickSight EnterpriseEdition用户

语法:

--principal DataLakePrincipalIdentifier=arn:aws:quicksight:<region>:<account-id>:user/<namespace>/<user-name>
注意

对于 <namespace>,您必须指定 default.

示例:

--principal DataLakePrincipalIdentifier=arn:aws:quicksight:us-east-1:111122223333:user/default/bi_user1
委托人是 Amazon QuickSight 企业版组

语法:

--principal DataLakePrincipalIdentifier=arn:aws:quicksight:<region>:<account-id>:group/<namespace>/<group-name>
注意

对于 <namespace>,您必须指定 default.

示例:

--principal DataLakePrincipalIdentifier=arn:aws:quicksight:us-east-1:111122223333:group/default/data_scientists
委托人是 AWS 账户

语法:

--principal DataLakePrincipalIdentifier=<account-id>

示例:

--principal DataLakePrincipalIdentifier=111122223333
负责人是一个组织

语法:

--principal DataLakePrincipalIdentifier=arn:aws:organizations::<account-id>:organization/<organization-id>

示例:

--principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl
负责人是一个组织单位

语法:

--principal DataLakePrincipalIdentifier=arn:aws:organizations::<account-id>:ou/<organization-id>/<organizational-unit-id>

示例:

--principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:ou/o-abcdefghijkl/ou-ab00-cdefghij

ALTER

许可 授予此资源 受赠人也需求
ALTER DATABASE glue:UpdateDatabase
ALTER TABLE glue:UpdateTable

具有此权限的主体可以更改 Data Catalog. 对于表,您可以更改列框架并添加列参数。您不能更改元数据表指向的基础数据中的列。

如果被更改的物业是 Amazon Simple Storage Service (和Amazon S3)位置,主体必须在新位置上具有数据位置权限。

以下示例授予 ALTER 用户权限 datalake_user1 在数据库中 retail 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ALTER" --resource '{ "Database": {"Name":"retail"}}'

以下示例授予 ALTER 到用户 datalake_user1 放在餐桌上 inventory 在数据库中 retail.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ALTER" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'

CREATE_DATABASE

许可 授予此资源 受赠人也需求
CREATE_DATABASE Data Catalog glue:CreateDatabase

具有此权限的主体可以在 Data Catalog. 主体还可以在数据库中创建表。

以下示例授予 CREATE_DATABASE 到用户 datalake_user1 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_DATABASE" --resource '{ "Catalog": {}}'

当承运人在 Data Catalog,不会授予对基础数据的权限。将授予以下附加元数据权限(以及授予他人这些权限的功能):

  • CREATE_TABLE 在数据库中

  • ALTER 数据库

  • DROP 数据库

在创建数据库时,校长可以选择指定 Amazon S3 位置。根据主体是否具有数据位置权限, CREATE_DATABASE 权限可能不足以在所有情况下创建数据库。请务必牢记以下三个案例。

创建数据库使用案例 所需权限
位置属性未指定。 CREATE_DATABASE 是足够的。
指定了位置属性,并且该位置不由 Lake Formation (未注册)。 CREATE_DATABASE 是足够的。
指定了位置属性,并且该位置由 Lake Formation (已注册)。 CREATE_DATABASE 在指定位置上需要数据位置许可。

CREATE_TABLE

许可 授予此资源 受赠人也需求
CREATE_TABLE DATABASE glue:CreateTable

具有此权限的主体可以在 Data Catalog 在指定数据库中。

以下示例将为用户提供 datalake_user1 在中创建表的权限 retail AWS帐户中的数据库 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'

当承运人在 Data Catalog, 全部 Lake Formation 上的权限将授予主, 能够向他人授予这些权限.

跨账户拨款

如果数据库所有者帐户授予 CREATE_TABLE 到接收方账户,并且接收方账户中的用户成功在所述所有者账户的数据库中创建表,以下规则适用:

  • 接收方账户中的用户和数据湖管理员具有 Lake Formation 权限。他们可以向帐户中的其他主体授予表格权限。他们无法授予所有者帐户或任何其他帐户中的主体权限。

  • 所有者帐户中的数据湖管理员可以将表格上的权限授予其帐户中的其他主体。

数据位置权限

当你 试图 创建一个指向 Amazon S3 位置,具体取决于 您 有 数据位置权限, CREATE_TABLE 权限可能不足以创建 a 表. 请务必牢记以下三个案例。

创建表使用案例 所需权限
指定的位置不由管理 Lake Formation (未注册)。 CREATE_TABLE 是足够的。
指定的位置由管理 Lake Formation (已注册),且包含的数据库没有位置属性或位置属性不是 Amazon S3 表位置的前缀。 CREATE_TABLE 在指定位置上需要数据位置许可。
指定的位置由管理 Lake Formation (已注册),且包含的数据库具有指向已注册且 Amazon S3 表位置的前缀。 CREATE_TABLE 是足够的。

DATA_LOCATION_ACCESS

许可 授予此资源 受赠人也需求
DATA_LOCATION_ACCESS Amazon S3 位置 (Amazon S3 该位置的权限,必须由用于注册该位置的角色指定。)

这是唯一的数据位置权限。具有此权限的主体可以创建指向指定 Amazon S3 位置。该位置必须注册。具有位置数据位置权限的主体也具有子位置的位置权限。

以下示例授予数据位置权限 s3://products/retail 到用户 datalake_user1 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"S3Location":"s3://products/retail"}}'

DATA_LOCATION_ACCESS 不需要查询或更新基础数据。此权限仅适用于创建 Data Catalog 资源。

有关数据位置权限的更多信息,请参阅 Underlying Data Access Control.

DELETE

许可 授予此资源 受赠人也需求
DELETE TABLE (无额外 IAM 位置已注册时需要权限。)

具有此权限的主体可以在 Amazon S3 由表指定的位置。校长还可以在 Lake Formation 控制台,并使用 AWS Glue API。

以下示例授予 DELETE 用户权限 datalake_user1 放在餐桌上 inventory 在数据库中 retail 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DELETE" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'

此权限仅适用于 Amazon S3,而不是其他数据仓库中的数据,例如 Amazon Relational Database Service (人Amazon RDS)。

DESCRIBE

许可 授予此资源 受赠人也需求
DESCRIBE 资源链接 glue:GetTable 以授予 DESCRIBE 在表资源链接上,以及 glue:GetDatabase 以授予 DESCRIBE 数据库资源链接上。
DESCRIBE DATABASE glue:GetDatabase 以授予 DESCRIBE 在数据库上。
DESCRIBE TABLE glue:GetTable 以授予 DESCRIBE 放在餐桌上。

具有此权限的主体可以查看 指定的数据库, 表,或 资源链接。没有其他的 Data Catalog 权限是隐式授予的,没有隐式授予数据访问权限。数据库和表显示在集成服务的查询编辑器中,但除非有其他 Lake Formation 许可(例如, SELECT)已授予。

例如,一个用户 DESCRIBE 数据库上可以查看数据库和所有数据库元数据(描述、位置等). 但是,用户 无法找到数据库包含哪些表,并且无法在数据库中删除、更改或创建表。同样,用户 DESCRIBE 表上的可以查看表和表元数据(描述、框架、位置等),但不能根据表删除、更改或运行查询。

以下是一些关于 DESCRIBE:

  • 如果用户有其他 Lake Formation 数据库、表格或资源链接的权限, DESCRIBE 是隐式授予的。

  • 如果用户 SELECT 只在表格的列子集上(部分 SELECT),用户只能看到那些列。

  • 您无法授予 DESCRIBE 到在表格中已部分选择的用户。反之,您不能为 DESCRIBE 于授予。

以下示例授予 DESCRIBE 用户权限 datalake_user1 在表资源链接上 inventory-link 在数据库中 retail 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory-link"}}'

DROP

许可 授予此资源 受赠人也需求
DROP DATABASE glue:DeleteDatabase
DROP TABLE glue:DeleteTable
DROP 资源链接 glue:DeleteDatabase 以断开数据库资源链接,以及 glue:DeleteTable 以挂断表资源链接。

具有此权限的主体可以在 Data Catalog. 无法将数据库中的DROP授予外部帐户或组织。

警告

拖放数据库会将所有表放入数据库。

以下示例授予 DROP 用户权限 datalake_user1 在数据库中 retail 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DROP" --resource '{ "Database": {"Name":"retail"}}'

以下示例授予 DROP 到用户 datalake_user1 放在餐桌上 inventory 在数据库中 retail.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DROP" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'

以下示例授予 DROP 到用户 datalake_user1 在表资源链接上 inventory-link 在数据库中 retail.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DROP" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory-link"}}'

INSERT

许可 授予此资源 受赠人也需求
INSERT TABLE (无额外 IAM 位置已注册时需要权限。)

具有此权限的主体可以插入, 更新,并读取 基础数据 Amazon S3 由表指定的位置。校长还可以在 Lake Formation 控制台,并使用 AWS Glue API。

以下示例授予 INSERT 用户权限 datalake_user1 放在餐桌上 inventory 在数据库中 retail 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "INSERT" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'

此权限仅适用于 Amazon S3,而不是其他数据仓库中的数据,例如 Amazon RDS.

SELECT

许可 授予此资源 受赠人也需求
SELECT
  • TABLE

(无额外 IAM 位置已注册时需要权限。)

具有此权限的主体可以 查看 一张桌子 在 Data Catalog,并可在 Amazon S3 位于表指定的位置。校长可以 查看 Lake Formation 控制台,并使用 AWS Glue API。如果授予此权限时应用了列筛选,则主体只能查看包含列的元数据,并且只能从包含的列查询数据。

注意

集成分析服务负责在处理查询时应用列过滤。

以下示例授予 SELECT 用户权限 datalake_user1 于 餐桌 inventory 在数据库中 retail 在AWS帐户中 1111-2222-3333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'

此权限仅适用于 Amazon S3,而不是其他数据仓库中的数据,例如 Amazon RDS.

您可以 过滤器(限制 访问) 包含可选包含列表或排除列表的特定列。包含列表指定了 可以访问. 排除列表指定 不能 访问编. 在没有入选或排除列表的情况下, 全部 表 列 可访问.

结果是 glue:GetTable 仅返回主叫方有权查看的列。综合服务,如 Amazon Athena 和 Amazon Redshift 表彰列包括和排除列表。

以下示例授予 SELECT 到用户 datalake_user1 放在餐桌上 inventory 使用包含列表。

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnNames": ["prodcode","location","period","withdrawals"]}}'

下一个示例将授予 SELECTinventory 表 使用排除列表。

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnWildcard": {"ExcludedColumnNames": ["intkey", "prodcode"]}}}'

以下限制适用于 SELECT 许可:

  • 授予 SELECT,您可以特 包括授予选项 如果应用了列过滤。

  • 您不能 限制 是分区键的列的访问控制。

  • 具有 SELECT 无法授予对表中列子集的权限 ALTER, DROP, DELETE,或 INSERT 对该表的权限。同样, ALTER, DROP, DELETE,或 INSERT 无法授予表格权限 是 SELECT 权限 含列过滤.

SELECT 权限始终显示在 数据权限 页面 Lake Formation 控制台作为单独的行。以下图片显示 SELECT 授予用户 datalake_user2datalake_user3 列上 inventory 表。


            数据权限页面显示用户datalake_user1和表清单的两行。第一行列出了具有资源类型表格的“删除”和“插入”权限,第二行列出了具有资源类型列以及具有retail.inventory.*的资源的“选择”权限。

Super

许可 授予此资源 受赠人也需求
Super DATABASE glue:*Database*
Super TABLE glue:*Table*, glue:*Partition*

此权限允许主体执行每个支持的 Lake Formation 对数据库或表执行的操作。您无法授予 Super 数据库上的到外部帐户。

此权限可以与其他权限共存 Lake Formation 权限。例如,您可以授予 Super, SELECT,和 INSERT 元数据表的权限。然后,主体可以在表上执行所有支持的操作。当您撤销 Super, SELECTINSERT 权限保留,并且主体只能执行选择和插入操作。

而不是给予 Super 个人承运人,你可以将其授予 IAMAllowedPrincipals。的 IAMAllowedPrincipals 将自动创建组,包括允许访问您 Data Catalog 资源 IAM 政策。何时 Super 被授予 IAMAllowedPrincipals 用于 Data Catalog 资源,对资源的访问仅由 IAM 政策。

您可以使 Super 自动授予的权限 IAMAllowedPrincipals 新的目录资源,利用 设置 页面 Lake Formation 控制台。


            “数据目录设置”对话框具有副标题“新创建的数据库和表格的默认权限”,并且有两个复选框,如文本中所述。
  • 授予 SuperIAMAllowedPrincipals 对于所有新数据库,请选择 仅对新数据库使用IAM访问控制.

  • 授予 SuperIAMAllowedPrincipals 对于新数据库中的所有新表,请选择 仅对新数据库中的新表使用IAM访问控制.

    注意

    此选项会导致复选框 仅对此数据库中的新表使用IAM访问控制创建数据库 对话框。没有什么比这更好的了。它是 创建数据库 对话框,允许授予 SuperIAMAllowedPrincipals.

这些 设置 默认情况下,会启用页面选项。有关更多信息,请参阅下列内容: