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

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

Lake Formation

执行Amazon Lake Formation操作,委托人需要 Lake Formation 权限和Amazon Identity and Access Management(IAM) 权限。您通常使用粗粒度访问控制策略,如中所述Lake Formation. 您可 Lake Formation 使用控制台、API 或Amazon Command Line Interface(Amazon CLI)。

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

注意

本节中的示例向您展示如何向委托人授予权限。Amazonaccount. 有关跨账户赠款的示例,请参阅授予 Lake Formation.

Lake Formation 补助金和撤销Amazon CLI命令

本节中的每个权限描述都包括使用Amazon CLI命令。以下是 Lake Formation 的大纲grant-permissionsrevoke-permissions Amazon 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>]

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

的价值--principal选项是以下操作之一:

  • 的亚马逊资源名称 (ARN)Amazon Identity and Access Management(IAM) 用户或角色

  • 针对通过 SAML 提供商进行身份验证的用户或组的 ARN,例如 Microsoft Active Directory 联合身份验证服务 (AD FS)

  • 针对 Amazon QuickSight 用户或群组的 ARN

  • 对于跨账户权限,请将 ARN 用于Amazon账户 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 企业版用户

语法:

--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
委托人是Amazon账户

语法:

--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

具有此权限的委托人可以更改数据目录中数据库或表的元数据。对于表,您可以更改列架构并添加列参数。不能更改元数据表所指向的基础数据中的列。

如果正在更改的属性是注册的 Amazon Simple Storage Service (Amazon S3) 位置,则委托人必须对新位置具有数据位置权限。

以下示例将ALTER授予用户权限datalake_user1在数据库中retail在Amazon账户 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 数据目录 glue:CreateDatabase

具有此权限的委托人可以在数据目录中创建元数据库或资源链接。委托人还可以在数据库中创建表。

以下示例授予CREATE_DATABASE给用户datalake_user1在Amazon账户 1111-2222-3333。

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_DATABASE" --resource '{ "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

具有此权限的委托人可以在指定数据库的数据目录中创建元数据表或资源链接。

以下示例向用户授予。datalake_user1在中创建表的权限retail中的数据库Amazon账户 1111-2222-3333。

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

当委托人在数据目录中创建表时,表格上的所有 Lake Formation 权限都将授予委托人,并能够将这些权限授予其他人。

跨账户资助

如果数据库拥有者账户授予CREATE_TABLE对于收件人帐户,并且收件人账户中的用户成功在所有者帐户的数据库中创建表,则适用以下规则:

  • 收件人账户中的用户和数据湖管理员拥有表格上的所有 Lake Formation 权限。他们可以向账户中的其他委托人授予对表的权限。他们不能向所有者账户或任何其他账户中的委托人授予权限。

  • 所有者帐户中的数据湖管理员可以向其账户中的其他委托人授予对表的权限。

数据位置权限

当您尝试创建指向 Amazon S3 位置的表时,具体取决于您是否拥有数据位置权限,CREATE_TABLE权限可能不足以创建表。务必牢记以下三种情况。

创建表格使用案例 需要权限
指定的位置不由 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在Amazon账户 1111-2222-3333。

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

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

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

DELETE

权限 在此资源上授予 被授予者还需要
DELETE TABLE (如果该位置已注册,则不需要额外的 IAM 权限。)

拥有此权限的委托人可以删除表指定的 Amazon S3 位置的底层数据。委托人还可以在 Lake Formation 控制台上查看表格,并使用Amazon GlueAPI。

以下示例将DELETE向用户发出权限datalake_user1在桌上inventory在数据库中retail在Amazon账户 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在桌子上。

具有此权限的委托人可以查看指定的数据库、表或资源链接。没有隐式授予任何其他数据目录权限,也没有隐式授予任何数据访问权限。数据库和表格出现在综合服务的查询编辑器中,但除非其他 Lake Formation 权限(例如,SELECT) 被授予。

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

以下是针对以下几个附加规则:DESCRIBE

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

  • 如果用户有SELECT仅针对表的一部分列(部分)SELECT),用户只能看到那些列。

  • 您不能授予DESCRIBE给在表格上有部分选择的用户。相反,您无法为以下表指定列包含列或排除列表DESCRIBE已被授予。

以下示例将DESCRIBE向用户发出权限datalake_user1在表资源链接上inventory-link在数据库中retail在Amazon账户 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删除表资源链接。

具有此权限的委托人可以删除数据目录中的数据库、表或资源链接。您不能将数据库上的 DROP 授予外部帐户或组织。

警告

删除数据库会删除数据库中的所有表。

以下示例将DROP向用户发出权限datalake_user1在数据库中retail在Amazon账户 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 控制台中查看表格,并使用Amazon GlueAPI。

以下示例将INSERT向用户发出权限datalake_user1在桌上inventory在数据库中retail在Amazon账户 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 权限。)

拥有此权限的委托人可以在数据目录中查看表,并可以在该表指定的位置查询 Amazon S3 中的底层数据。委托人可以在 Lake Formation 控制台中查看表格,然后使用Amazon GlueAPI。如果在授予此权限时应用了列筛选,则委托人只能查看所包含列的元数据,并且只能查询所包含列的数据。

注意

集成分析服务有责任在处理查询时应用列筛选。

以下示例将SELECT向用户发出权限datalake_user1在桌上inventory在数据库中retail在Amazon账户 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不能授予表中某个列子集的权限ALTERDROPDELETE,或者INSERT在那张桌子上的许可。同样,拥有ALTERDROPDELETE,或者INSERT无法授予对表的权限SELECT具有列筛选的权限。

这些区域有:SELECT权限始终显示在数据权限将 Lake Formation 控制台的页面作为单独的行。下图显示了SELECT被授予用户datalake_user2datalake_user3在中的所有列inventory表。


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

Super

权限 在此资源上授予 被授权者还需要
Super DATABASE glue:*Database*
Super TABLE glue:*Table*, glue:*Partition*

此权限允许委托人对数据库或表执行每个受支持的 Lake Formation 操作。您不能授予Super在数据库上转移到外部账户。

此权限可以与其他 Lake Formation 权限共存。例如,您可以授予SuperSELECT, 和INSERT元数据表的权限。然后,委托人可以执行桌面上所有受支持的操作。当你撤销时SuperSELECTINSERT权限仍然存在,委托人只能执行选择和插入操作。

而不是授予Super对于个人委托人,你可以将其授予团体IAMAllowedPrincipals. 这些区域有:IAMAllowedPrincipals组将自动创建,其中包括 IAM 策略允许访问数据目录资源的所有 IAM 用户和角色。何时Super被授予IAMAllowedPrincipals对于数据目录资源,对资源的访问权限完全由 IAM 策略进行有效控制。

你可以导致Super自动授予的权限IAMAllowedPrincipals通过利用设置Lake Formation 控制台的页面。


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

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

    注意

    此选项将导致复选框仅对此数据库中的新表使用 IAM 访问控制中的创建数据库默认情况下,要选择的对话框。它只能做到这一点。这是中的复选框创建数据库启用授予SuperIAMAllowedPrincipals.

这些设置默认情况下,处于启用状态。有关更多信息,请参阅下列内容: