本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 授予或撤消权限的信息,请参阅授予和撤消对数据目录资源的权限和授予数据位置权限.
本节中的示例演示如何向委托人授予权限的信息。Amazonaccount. 有关跨账户授权的示例,请参阅Lake Formation 许可 .
主题
Lake Formation 补助金和撤销Amazon CLI命令
本节中的每个权限描述都包括使用Amazon CLI命令。以下是 Lake Formation 的大纲grant-permissions和revoke-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 RetAmazon Relational Database Service (Amazon RDS) 等其他数据存储中的数据。
DESCRIBE
权限 | 在此资源上授予 | 被授权者还需要 |
---|---|---|
DESCRIBE |
表资源链接 数据库资源链接 |
|
DESCRIBE |
DATABASE |
glue:GetDatabase |
DESCRIBE |
TABLE |
glue:GetTable |
具有此权限的委托人可以查看指定的数据库、表或资源链接。没有隐式授予任何其他数据目录权限,也没有隐式授予任何数据访问权限。数据库和表格出现在综合服务的查询编辑器中,但除非其他 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 |
数据库资源链接 表资源链接 |
|
具有此权限的委托人可以删除数据目录中的数据库、表或资源链接。您不能将数据库上的 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 |
|
(如果该位置已注册,则不需要额外的 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"]}}'
下一个示例授予SELECT
在inventory
表使用排除列表。
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_user2
和datalake_user3
在中的所有列inventory
表。

Super
权限 | 在此资源上授予 | 被授权者还需要 |
---|---|---|
Super |
DATABASE |
glue:*Database*
|
Super |
TABLE |
glue:*Table*, glue:*Partition* |
此权限允许委托人对数据库或表执行每个受支持的 Lake Formation 操作。您不能授予Super
在数据库上转移到外部账户。
此权限可以与其他 Lake Formation 权限共存。例如,您可以授予Super
、SELECT
, 和INSERT
元数据表的权限。然后,委托人可以在表上执行所有受支持的操作。当你撤销时Super
,SELECT
和INSERT
权限仍然存在,委托人只能执行选择和插入操作。
而不是授予Super
对于个人委托人,你可以将其授予团体IAMAllowedPrincipals
. 这些区域有:IAMAllowedPrincipals
组将自动创建,其中包括 IAM 策略允许访问数据目录资源的所有 IAM 用户和角色。何时Super
被授予IAMAllowedPrincipals
对于数据目录资源,对资源的访问权限完全由 IAM 策略进行有效控制。
你可以导致Super
自动授予的权限IAMAllowedPrincipals
通过利用设置Lake Formation 控制台的页面。

-
授予
Super
到IAMAllowedPrincipals
对于所有新数据库,选择仅对新数据库使用 IAM 访问控制. -
授予
Super
到IAMAllowedPrincipals
对于新数据库中的所有新表,选择仅对新数据库中的新表使用 IAM 访问控制.注意 此选项将复选框导致复选框仅对此数据库中的新表使用 IAM 访问控制中的创建数据库默认处于选中状态的对话框。它只能做到这一点。这是中的复选框创建数据库启用授予
Super
到IAMAllowedPrincipals
.
这些设置默认情况下,将启用页面选项。有关更多信息,请参阅下列内容: