Identity-Based Policies (IAM Policies) for Access Control - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Identity-Based Policies (IAM Policies) for Access Control

基于身份的策略会附加到 IAM 身份(用户、组、角色或服务)。此类策略为 IAM 身份授予对指定资源的访问权限。

AWS Glue 对所有 AWS Glue 操作均支持基于身份的策略(IAM 策略)。通过将策略附加到账户中的用户或组,可向其授予在 AWS Glue 数据目录 中创建、访问或修改 AWS Glue 资源(例如表)的权限。

通过将策略附加到 IAM 角色,您可以向其他 AWS 账户中的 IAM 身份授予跨账户访问权限。有关更多信息,请参阅 Granting Cross-Account Access。)

下面是一个基于身份的示例策略,用于授予 AWS Glue 操作(glue:GetTableGetTablesGetDatabaseGetDatabases)的权限。Resource 值中的通配符字符 (*) 表示,您正在对这些操作授予权限,以获取数据目录中的所有表和数据库的名称和详细信息。如果根据资源策略用户还可以访问其他目录,则该用户也会获得对这些资源的访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTables", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTables", "glue:GetDatabase", "glue:GetDataBases" ], "Resource": "*" } ] }

下面是面向 us-west-2 区域的另一个示例,该示例使用占位符表示特定 AWS 账号。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesActionOnBooks", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

此策略授予对名称表格的只读权限 books 在名为 db1。注意要授予 Get 同时需要对目录和数据库资源权限的权限。

要拒绝对表的访问权限,需要您创建一个策略,拒绝用户访问该表或其父数据库或目录。这样您可以轻松地拒绝对特定资源的访问权限,通过后续的允许权限无法规避这些拒绝权限。例如,如果您拒绝对数据库 db1 中的表 books 的访问权限,那么如果您授予对数据库 db1 的访问权限,但仍会拒绝对表 books 的访问权限。下面是一个基于身份的策略示例,该示例拒绝对 db1 及其中的所有表执行 AWS Glue 操作(glue:GetTablesGetTable)的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyGetTablesToDb1", "Effect": "Deny", "Action": [ "glue:GetTables", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:database/db1" ] } ] }

有关更多策略示例,请参阅基于身份的策略示例

Identity-Based Policies (IAM Policies) with Tags

您也可以使用 AWS 标签控制对特定类型的 AWS Glue 资源的访问。有关 AWS Glue 中的标签的更多信息,请参阅AWS 标签

您可以在 IAM 用户策略中使用 Condition 元素与 glue:resourceTag 上下文键,根据与爬网程序、作业、触发器和开发终端节点关联的键来允许或拒绝访问。例如:。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "glue:resourceTag/Name": "Tom" } } } ] }
重要

条件上下文键仅应用于针对爬网程序、作业、触发器和开发终端节点的那些 AWS Glue API 操作。有关受影响的 API 的更多信息,请参阅AWS Glue API 权限:操作和资源参考

有关如何使用标签控制访问的信息,请参阅AWS Glue 带标签的基于身份的 (IAM) 访问控制策略示例

Resource-Level Permissions Only Apply to Specific AWS Glue Objects

您只能定义 AWS Glue 中特定对象的精细控制。因此,您必须编写客户端的 IAM 策略,以便允许 Resource 语句的 Amazon 资源名称 (ARN) 的 API 操作与不允许使用 API 的操作不混合。例如,以下IAM策略允许API操作 GetClassifierGetJobRun。它定义 Resource AS * 因为 AWS Glue 不允许分类器和工作的ARNS运行。由于允许将 ARN 用于 GetDatabaseGetTable 等特定 API 操作,因此,可以在策略的第二部分中指定 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetClassifier*", "glue:GetJobRun*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:Get*" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default", "arn:aws:glue:us-east-1:123456789012:table/default/e*1*", "arn:aws:glue:us-east-1:123456789012:connection/connection2" ] } ] }

有关允许 ARN 的 AWS Glue 对象的列表,请参阅资源 ARN

Permissions Required to Use the AWS Glue Console

某个用户要能够使用 AWS Glue 控制台,必须拥有一组允许其使用其 AWS 账户的 AWS Glue 资源的最低权限。除这些 AWS Glue 权限以外,控制台还需要来自以下服务的权限:

  • Amazon CloudWatch Logs permissions to display logs.

  • AWS Identity and Access Management (IAM) permissions to list and pass roles.

  • AWS CloudFormation permissions to work with stacks.

  • Amazon Elastic Compute Cloud (Amazon EC2) permissions to list VPCs, subnets, security groups, instances, and other objects.

  • Amazon Simple Storage Service (Amazon S3) permissions to list buckets and objects, and to retrieve and save scripts.

  • Amazon Redshift permissions to work with clusters.

  • Amazon Relational Database Service (Amazon RDS) permissions to list instances.

有关用户查看和使用 AWS Glue 控制台所需的权限的更多信息,请参阅步骤 3:将策略附加到访问 AWS Glue 的 IAM 用户

如果创建比必需的最低权限更为严格的 IAM 策略,对于附加了该 IAM 策略的用户,控制台将无法按预期正常运行。为确保这些用户仍可使用 AWS Glue 控制台,也可向用户附加 AWSGlueConsoleFullAccess 托管策略,如AWS Managed (Predefined) Policies for AWS Glue中所述。

对于仅调用 AWS CLI 或 AWS Glue API 的用户,您不需要允许最低控制台权限。

AWS Managed (Predefined) Policies for AWS Glue

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来解决很多常用案例。这些 AWS 托管策略可针对常用案例授予必要的权限,使您免去调查所需权限的工作。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略

下面的 AWS 托管策略可附加到您账户中的用户,这些托管策略特定于 AWS Glue 并且按使用案例场景进行分组:

  • AWSGlueConsoleFullAccess – Grants full access to AWS Glue resources when using the AWS 管理控制台. If you follow the naming convention for resources specified in this policy, users have full console capabilities. This policy is typically attached to users of the AWS Glue console.

  • AWSGlueServiceRole – Grants access to resources that various AWS Glue processes require to run on your behalf. These resources include AWS Glue, Amazon S3, IAM, CloudWatch Logs, and Amazon EC2. If you follow the naming convention for resources specified in this policy, AWS Glue processes have the required permissions. This policy is typically attached to roles specified when defining crawlers, jobs, and development endpoints.

  • AWSGlueServiceNotebookRole – Grants access to resources required when creating a notebook server. These resources include AWS Glue, Amazon S3, and Amazon EC2. If you follow the naming convention for resources specified in this policy, AWS Glue processes have the required permissions. This policy is typically attached to roles specified when creating a notebook server on a development endpoint.

  • AWSGlueConsoleSageMakerNotebookFullAccess – Grants full access to AWS Glue and SageMaker resources when using the AWS 管理控制台. If you follow the naming convention for resources specified in this policy, users have full console capabilities. This policy is typically attached to users of the AWS Glue console who manage SageMaker notebooks.

注意

登录 IAM 控制台后搜索特定策略,可以查看这些权限策略。

此外,您还可以创建自己的自定义 IAM 策略,以授予对 AWS Glue 操作和资源的相关权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。