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

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

AWS Glue Resource Policies for Access Control

A resource policy 是一个与资源相关的政策,而不是 IAM 身份。例如,在 Amazon Simple Storage Service (Amazon S3) 中,资源策略将附加到 Amazon S3 存储桶。AWS Glue 支持使用资源策略控制对 数据目录 资源的访问。这些资源包括数据库、表、连接和用户定义的函数,以及与这些资源交互的 数据目录 API。

AWS Glue 资源策略只能用于管理 数据目录 资源的权限。不能将其附加到任何其他 AWS Glue 资源,如任务、触发器、开发终端节点、爬网程序或分类器。

资源策略附加到 catalog,这是一个适用于所有类型的 数据目录 之前提到的资源。每个 AWS 账户在 AWS 区域中有单个目录,其目录 ID 与 AWS 账户 ID 相同。不能删除或修改目录。

将对目录的所有 API 调用评估资源策略,其中调用方委托人包含在策略文档的 "Principal" 块中。

注意

目前只有 one 每个目录允许使用资源策略,其大小限制为10KB。

可使用以 JSON 格式编写的策略文档来创建或修改资源策略。策略语法与 IAM 策略相同(请参阅 IAM JSON 策略参考),但存在以下例外:

  • A "Principal" or "NotPrincipal" block is required for each policy statement.

  • The "Principal" or "NotPrincipal" must identify valid existing AWS root users or IAM users, roles, or groups. Wildcard patterns (like arn:aws:iam::account-id:user/*) are not allowed.

  • The "Resource" block in the policy requires all resource ARNs to match the following regular expression syntax (where the first %s is the region and the second %s is the account-id):

    *arn:aws:glue:%s:%s:(\*|[a-zA-Z\*]+\/?.*)

    For example, both arn:aws:glue:us-west-2:account-id:* and arn:aws:glue:us-west-2:account-id:database/default are allowed, but * is not allowed.

  • Unlike identity-based policies, an AWS Glue resource policy must only contain Amazon Resource Names (ARNs) of resources belonging to the catalog to which the policy is attached. Such ARNs always start with arn:aws:glue:.

  • A policy cannot cause the identity creating it to be locked out of further policy creation or modification.

  • A resource-policy JSON document cannot exceed 10 KB in size.

例如,假定将以下策略附加到账户 A 中的目录。它会向账户 A 中的 IAM 身份 dev 授予在账户 A 的数据库 db1 中创建任意表的权限。该策略还会向账户 B 中的根用户授予相同权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Principal": {"AWS": [ "arn:aws:iam::account-A-id:user/dev", "arn:aws:iam::account-B-id:root" ]}, "Resource": [ "arn:aws:glue:us-east-1:account-A-id:table/db1/*", "arn:aws:glue:us-east-1:account-A-id:database/db1", "arn:aws:glue:us-east-1:account-A-id:catalog" ] } ] }

以下是一些资源策略文件示例 not 有效。

例如,如果策略指定的用户在该策略附加到的目录的账户中不存在,则该策略无效。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Principal": {"AWS": [ "arn:aws:iam::account-A-id:user/(non-existent-user)" ]}, "Resource": [ "arn:aws:glue:us-east-1:account-A-id:table/db1/tbl1", "arn:aws:glue:us-east-1:account-A-id:database/db1", "arn:aws:glue:us-east-1:account-A-id:catalog" ] } ] }

如果策略包含的资源 ARN 所对应的资源与该策略附加到的目录在不同账户中,则该策略无效。在以下示例中,如果策略附加到 account-A,则该策略不正确。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Principal": {"AWS": [ "arn:aws:iam::account-A-id:user/dev" ]}, "Resource": [ "arn:aws:glue:us-east-1:account-B-id:table/db1/tbl1", "arn:aws:glue:us-east-1:account-B-id:database/db1", "arn:aws:glue:us-east-1:account-B-id:catalog" ] } ] }

如果策略包含的资源 ARN 所对应的资源不是 AWS Glue 资源(在此示例中为 Amazon S3 存储桶),则该策略无效。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Principal": {"AWS": [ "arn:aws:iam::account-A-id:user/dev" ]}, "Resource": [ "arn:aws:glue:us-east-1:account-A-id:table/db1/tbl1", "arn:aws:glue:us-east-1:account-A-id:database/db1", "arn:aws:glue:us-east-1:account-A-id:catalog", "arn:aws:s3:::bucket/my-bucket" ] } ] }

AWS Glue Resource Policy APIs

您可以使用以下 AWS Glue 数据目录 API 来创建、检索、修改和删除 AWS Glue 资源策略:

还可以使用 AWS Glue 控制台来查看和编辑资源策略。有关更多信息,请参阅 在 AWS Glue 控制台中使用数据目录设置。)