用于访问控制的基于身份的策略(IAM 策略) - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

用于访问控制的基于身份的策略(IAM 策略)

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

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

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

基于身份的策略示例

下面是一个基于身份的示例策略,用于授予 Amazon 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 区域的另一个示例,该示例使用占位符表示特定 Amazon 账号。

{ "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 权限,同时需要对目录和数据库资源的这一权限。

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

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

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

带标签的基于身份的策略(IAM 策略)

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

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

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

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

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

使用条件键或上下文键控制设置的基于身份的策略(IAM 策略)

授予创建和更新任务的权限时,可以使用条件键或上下文键。以下部分讨论了这些键:

使用条件键控制设置的 IAM 策略

Amazon Glue 提供了三个 IAM 条件键,分别是 glue:VpcIdsglue:SubnetIdsglue:SecurityGroupIds。授予创建和更新任务的权限时,可以使用 IAM 策略中的条件键。您可以使用此设置确保创建(或更新)的任务不会在所需 VPC 环境之外运行。VPC 设置信息不是 CreateJob 请求中的直接输入,而是从指向 Amazon Glue 连接的任务“connections”(连接)字段推断得出。

示例用法

使用所需的 VpcId“vpc-id1234”、SubnetIds 和 SecurityGroupIdss 创建名为“traffic-monitored-connection”(流量监控连接)的 Amazon Glue 网络类型连接。

为 IAM 策略中的 CreateJobUpdateJob 操作指定条件键条件。

{ "Effect": "Allow", "Action": [ "glue:CreateJob", "glue:UpdateJob" ], "Resource": [ "*" ], "Condition": { "ForAnyValue:StringLike": { "glue:VpcIds": [ "vpc-id1234" ] } } }

您可以创建类似的 IAM 策略,以禁止在不指定连接信息的情况下创建 Amazon Glue 任务。

使用上下文键控制设置的 IAM 策略

Amazon Glue 为 Amazon Glue 提供给任务和开发人员端点的每个角色会话提供了上下文键 (glue:CredentialIssuingService= glue.amazonaws.com)。这允许您对 Amazon Glue 脚本执行的操作实施安全控制。Amazon Glue 还为每个角色会话提供了另一个上下文键 (glue:RoleAssumedBy=glue.amazonaws.com),其中 Amazon Glue 会代表客户调用另一个 Amazon(不是通过任务/开发端点,而是直接通过 Amazon Glue 服务)。

示例用法

在 IAM 策略中指定条件权限,并将其附上 Amazon Glue 任务要使用的角色。这确保了可以基于角色会话是否用于 Amazon Glue 任务执行环境而允许/拒绝某些操作。

{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }

资源级权限仅应用于特定的 Amazon Glue 对象

您只能定义 Amazon Glue 中特定对象的精细控制。因此,您必须编写客户端的 IAM 策略,以便允许 Resource 语句的 Amazon Resource Name(ARN)的 API 操作与不允许使用 API 的操作不混合。例如,以下 IAM 策略允许 GetClassifierGetJobRun 的 API 操作。它将 Resource 定义为 *,因为 Amazon Glue 不允许分类符和作业运行的 ARN。由于允许将 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 的 Amazon Glue 对象的列表,请参阅资源 ARN

使用 Amazon Glue 控制台所需要的权限

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

  • 用于显示日志的 Amazon CloudWatch Logs 权限。

  • Amazon Identity and Access Management用于列出并传递角色的 (IAM)权限。

  • Amazon CloudFormation用于处理堆栈的 权限。

  • 用于列出 VPC、子网、安全组、实例和其他对象的 Amazon Elastic Compute Cloud(Amazon EC2)权限。

  • 用于列出存储桶和对象以及检索和保存脚本的 Amazon Simple Storage Service(Amazon S3)权限。

  • 用于使用集群的 Amazon Redshift 权限。

  • 用于列出实例的 Amazon Relational Database Service(Amazon RDS)权限。

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

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

对于只需要调用 Amazon CLI 或 Amazon Glue API 的用户,无需为其提供最低控制台权限。

Amazon适用于 的 托管(预定义)策略Amazon Glue

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

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

  • AWSGlueConsoleFullAccess – 在使用 Amazon Glue 时授予对 Amazon Web Services Management Console 资源的完全访问权限。如果遵循此策略中指定的资源的命名约定,则用户具有完全控制台功能。此策略通常附加到 Amazon Glue 控制台的用户。

  • AWSGlueServiceRole – 授予对各种 Amazon Glue 进程代表您运行所需的资源的访问权限。这些资源包括 Amazon Glue、Amazon S3、IAM、CloudWatch Logs 和 Amazon EC2。如果您遵循此策略中指定的资源的命名约定,则 Amazon Glue 进程具有所需的权限。此策略通常附加到在定义爬网程序、作业和开发终端节点时指定的角色。

  • AwsGlueSessionUserRestrictedServiceRole – 提供对除会话之外的所有 Amazon Glue 资源的完全访问权限。允许用户仅创建和使用与用户关联的交互式会话。此策略还包括管理其他 Amazon 服务中的 Glue 资源,Amazon Glue 所需的其他权限。此策略还允许向其他 Amazon 服务中的 Amazon Glue 资源添加标签。

    注意

    若要完全实现安全益处,请勿将此策略授予分配到 AWSGlueServiceRoleAWSGlueConsoleFullAccessAWSGlueConsoleSageMakerNotebookFullAccess 策略的用户。

  • AwsGlueSessionUserRestrictedPolicy – 仅当提供的标签键“拥有者”和值与受让人的 Amazon Glue 用户 ID 匹配时,才提供使用 CreateSession API 创建 Amazon 交互式会话的访问权限。此身份策略已附上调用 CreateSession API 的 IAM用户。此策略还允许受让人与使用与其 Amazon 用户 ID 匹配的“拥有者”标签和值创建的 Amazon Glue 交互式会话资源进行交互。此策略拒绝在创建会话后从 Amazon Glue 会话资源中更改或删除“拥有者”标签的权限。

    注意

    若要完全实现安全益处,请勿将此策略授予分配到 AWSGlueServiceRoleAWSGlueConsoleFullAccessAWSGlueConsoleSageMakerNotebookFullAccess 策略的用户。

  • AwsGlueSessionUserRestrictedNotebookServiceRole – 提供对 Amazon Glue Studio 笔记本会话的充分访问权限,以与使用与创建笔记本的主体(IAM 用户或角色)的 Amazon 用户 ID 匹配的“拥有者”标签值创建的 Amazon Glue 交互式会话资源进行交互。有关这些标签的更多信息,请参阅 IAM 用户指南中的 主体键值图表。

    此服务角色策略将附上使用笔记本中的魔术语句指定的角色,或作为角色传递给 CreateSession API。此策略还允许主体仅当标签键“拥有者”和值与主体的 Amazon Glue 用户 ID 匹配时,才从 Amazon Glue Studio 笔记本界面创建 Amazon 交互式会话。此策略拒绝在创建会话后从 Amazon Glue 会话资源中更改或删除“拥有者”标签的权限。此策略还包括写入和读取 Amazon S3 存储桶、写入 CloudWatch Logs、为 Amazon Glue 使用的 Amazon EC2 资源创建和删除标签的权限。

    注意

    若要完全实现安全益处,请勿将此策略授予分配到 AWSGlueServiceRoleAWSGlueConsoleFullAccessAWSGlueConsoleSageMakerNotebookFullAccess 策略的角色。

  • AwsGlueSessionUserRestrictedNotebookPolicy – 仅当存在标签键“拥有者”和值与创建笔记本的主体(IAM 用户或角色)的 Amazon 用户 ID 匹配时,才提供从 Amazon Glue Studio 笔记本界面创建 Amazon Glue 交互式会话的访问权限。有关这些标签的更多信息,请参阅 IAM 用户指南中的 主体键值图表。

    此策略已附上从 Amazon Glue Studio 笔记本界面创建会话的主体(IAM 用户或角色)。此策略还允许对 Amazon Glue Studio 笔记本的充分访问权限,以便与使用与主体的 Amazon 用户 ID 匹配的“拥有者”标签值创建的 Amazon Glue 交互式会话资源进行交互。此策略拒绝在创建会话后从 Amazon Glue 会话资源中更改或删除“拥有者”标签的权限。

  • AWSGlueServiceNotebookRole – 授予对 Amazon Glue Studio 中创建的笔记本中开启的 Amazon Glue 会话的访问权限。此策略允许列出和获取所有会话的会话信息,但仅允许用户创建和使用标记为其 Amazon 用户 ID 的会话。此策略会拒绝从标记为其 Amazon ID 的 Amazon Glue 会话资源中更改或删除“拥有者”标签的权限。

    将此策略分配给使用 Amazon Glue Studio 中的笔记本界面创建任务的 Amazon 用户。

  • AWSGlueConsoleSageMakerNotebookFullAccess – 在使用 Amazon Web Services Management Console 时授予对 Amazon Glue 和 SageMaker 资源的完全访问权限。如果遵循此策略中指定的资源的命名约定,则用户具有完全控制台功能。此策略通常附加到管理 SageMaker 笔记本的 Amazon Glue 控制台的用户。

  • AWSGlueSchemaRegistryFullAccess – 在使用 Amazon Web Services Management Console 或 Amazon CLI 时授予对 Amazon Glue 架构注册表资源的完全访问权限。如果遵循此策略中指定的资源的命名约定,则用户具有完全控制台功能。此策略通常附加到管理架构注册表的 Amazon Glue 控制台或 Amazon CLI 的用户。

  • AWSGlueSchemaRegistryReadonlyAccess – 在使用 Amazon Web Services Management Console 或 Amazon CLI 时授予对 Amazon Glue 架构注册表资源的只读访问权限。如果遵循此策略中指定的资源的命名约定,则用户具有完全控制台功能。此策略通常附加到使用架构注册表的 Amazon Glue 控制台或 Amazon CLI 的用户。

注意

您可以通过登录到 IAM 控制台并在该控制台中搜索特定策略来查看这些权限策略。

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

对 Amazon 托管式策略的 Amazon Glue 更新

查看有关 Amazon Glue 的 Amazon 托管式策略更新的详细信息(从该服务开始跟踪这些更改开始)。有关这些更新的自动提示,请订阅 Amazon Glue Document history (文档历史记录) 页面上的 RSS 馈送。

更改 描述 日期

为交互式会话功能添加了新的托管式策略

  • AwsGlueSessionUserRestrictedServiceRole

  • AwsGlueSessionUserRestrictedPolicy

  • AwsGlueSessionUserRestrictedNotebookServiceRole

  • AwsGlueSessionUserRestrictedNotebookPolicy

这些策略旨在为 Amazon Glue Studio 中的交互式会话和笔记本提供额外的安全性。这些策略会限制对 CreateSession API 的访问,使得只有拥有者有权访问。

2021 年 11 月 30 日

AWSGlueConsoleSageMakerNotebookFullAccess – 现有策略的更新

为以下操作删除了冗余资源 ARN(arn:aws:s3:::aws-glue-*/*):为 Amazon Glue 用于存储脚本和临时文件的 Amazon S3 存储桶授予读取/写入权限。

通过将 "StringEquals" 更改为 "ForAnyValue:StringLike" 修复了语法问题,并且在行乱序的每个位置将 "Effect": "Allow" 行移到 "Action": 行之前。

2021 年 7 月 15 日

AWSGlueConsoleFullAccess – 对现有策略的更新

为以下操作删除了冗余资源 ARN(arn:aws:s3:::aws-glue-*/*):为 Amazon Glue 用于存储脚本和临时文件的 Amazon S3 存储桶授予读取/写入权限。 2021 年 7 月 15 日

Amazon Glue 已开启跟踪更改

Amazon Glue 为其 Amazon 托管式策略开启了跟踪更改。

2021 年 6 月 10 日