Amazon用于访问控制的 Glue 资源策略 - Amazon连接词
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Amazon用于访问控制的 Glue 资源策略

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

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

资源策略附加到目录,它是上面提到的各种数据目录资源的虚拟容器。EAccessAmazon帐户拥有一个Amazon其目录 ID 与Amazon账户 ID。不能删除或修改目录。

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

注意

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

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

  • 每条策略语句需要一个 "Principal""NotPrincipal" 块。

  • 这些区域有:"Principal"或者"NotPrincipal"必须标识有效的现有Amazon根用户或 IAM 用户、角色或组。不允许使用通配符模式(如 arn:aws:iam::account-id:user/*)。

  • 策略中的 "Resource" 块要求所有资源 ARN 均与以下正则表达式语法匹配(其中第一个 %sregion,第二个 %saccount-id):

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

    例如,arn:aws:glue:us-west-2:account-id:*arn:aws:glue:us-west-2:account-id:database/default 都允许使用,但不允许 *

  • 与基于身份的策略不同,AmazonGlue 合资源策略只能包含属于该策略附加到的目录的资源的 Amazon 资源名称 (ARN)。此类 ARN 总是以 arn:aws:glue: 开头。

  • 策略不会使创建它的身份在未来的策略创建或修改中被锁定。

  • 资源策略 JSON 文档的大小不能超过 10 KB。

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

{ "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" ] } ] }

下面是一些无效 资源策略文档的示例。

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

{ "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 所对应的资源不是AmazonGlue 资源(在本例中为 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" ] } ] }

AmazonGlue 资源策略 API

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

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