指定Amazon Glue资源 ARNs - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

指定Amazon Glue资源 ARNs

在中Amazon Glue,您可以使用 Amazon Identity and Access Management (IAM) 策略控制对资源的访问权限。在策略中,您可以使用 Amazon 资源名称 (ARN) 来标识该政策适用的资源。并非所有资源都Amazon Glue支持ARNs。

数据目录 ARNs

数据目录资源具有层次结构,其中以 catalog 作为根。

arn:aws:glue:region:account-id:catalog

每个 Amazon 账户在一个 Amazon 区域中都有一个数据目录,其中 12 位数的账户 ID 作为目录 ID。资源具有与其ARNs关联的唯一性,如下表所示。

资源类型 ARN格式

目录

arn:aws:glue:region:account-id:catalog

例如:arn:aws:glue:us-east-1:123456789012:catalog

数据库

arn:aws:glue:region:account-id:database/database name

例如:arn:aws:glue:us-east-1:123456789012:database/db1

arn:aws:glue:region:account-id:table/database name/table name

例如:arn:aws:glue:us-east-1:123456789012:table/db1/tbl1

用户定义的函数

arn:aws:glue:region:account-id:userDefinedFunction/database name/user-defined function name

例如:arn:aws:glue:us-east-1:123456789012:userDefinedFunction/db1/func1

Connection

arn:aws:glue:region:account-id:connection/connection name

例如:arn:aws:glue:us-east-1:123456789012:connection/connection1

交互式会话

arn:aws:glue:region:account-id:session/interactive session id

例如:arn:aws:glue:us-east-1:123456789012:session/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

要启用精细的访问控制,您可以在IAM策略和资源策略ARNs中使用这些权限来授予和拒绝对特定资源的访问权限。允许在策略中使用通配符。例如,以下内容ARN匹配数据库中的所有表default

arn:aws:glue:us-east-1:123456789012:table/default/*
重要

对数据目录资源执行所有操作都需要具有对该资源及其所有原级的权限。例如,要为一个表创建分区,需要具有该表的权限以及该表所在数据库和目录的权限。以下示例显示对数据目录中的数据库 PrivateDatabase 中的表 PrivateTable 创建分区所需的权限。

{ "Sid": "GrantCreatePartitions", "Effect": "Allow", "Action": [ "glue:BatchCreatePartitions" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/PrivateTable", "arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase", "arn:aws:glue:us-east-1:123456789012:catalog" ] }

除了对资源及其所有原级的权限外,所有删除操作还需要具有该资源的所有子级的权限。例如,要删除一个数据库,您需要具有该数据库中的所有表和用户定义函数的权限,以及该数据库及其所在目录的权限。以下示例显示删除数据目录中的数据库 PrivateDatabase 所需的权限。

{ "Sid": "GrantDeleteDatabase", "Effect": "Allow", "Action": [ "glue:DeleteDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/*", "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/PrivateDatabase/*", "arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase", "arn:aws:glue:us-east-1:123456789012:catalog" ] }

概括来说,对数据目录资源的操作遵循以下权限规则:

  • 针对目录的操作只需要具有目录的权限。

  • 针对数据库的操作需要具有数据库和目录的权限。

  • 针对数据库的删除操作需要具有数据库和目录的权限,以及数据库中所有表和用户定义函数的权限。

  • 针对表、分区或表版本的操作需要具有表、数据库和目录的权限。

  • 针对用户定义的函数的操作需要具有用户定义的函数、数据库和目录的权限。

  • 针对连接的操作需要具有连接和目录的权限。

ARNs对于中的非目录对象 Amazon Glue

某些Amazon Glue资源允许资源级权限使用来控制访问权限。ARN您可以在IAM策略ARNs中使用它们来启用精细的访问控制。下表列出了可以包含资源的资源ARNs。

资源类型 ARN格式

爬网程序

arn:aws:glue:region:account-id:crawler/crawler-name

例如:arn:aws:glue:us-east-1:123456789012:crawler/mycrawler

作业

arn:aws:glue:region:account-id:job/job-name

例如:arn:aws:glue:us-east-1:123456789012:job/testjob

触发器

arn:aws:glue:region:account-id:trigger/trigger-name

例如:arn:aws:glue:us-east-1:123456789012:trigger/sampletrigger

开发终端节点

arn:aws:glue:region:account-id:devEndpoint/development-endpoint-name

例如:arn:aws:glue:us-east-1:123456789012:devEndpoint/temporarydevendpoint

机器学习转换

arn:aws:glue:region:account-id:mlTransform/transform-id

例如:arn:aws:glue:us-east-1:123456789012:mlTransform/tfm-1234567890

Amazon Glue非目录单API一操作的访问控制

Amazon Glue非目录单数API操作作用于单个项目(开发端点)。示例包括 GetDevEndpointCreateUpdateDevEndpointUpdateDevEndpoint。对于这些操作,策略必须将API名称放在"action"区块中,将资源放在"resource"区块ARN中。

假设您要允许用户调用 GetDevEndpoint 操作。以下策略将所需的最低权限授予名为 myDevEndpoint-1 的终端节点。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "MinimumPermissions", "Effect": "Allow", "Action": "glue:GetDevEndpoint", "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-1" } ] }

以下策略允许 UpdateDevEndpoint 访问用通配符 (*) 与 myDevEndpoint- 匹配的资源。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionWithWildcard", "Effect": "Allow", "Action": "glue:UpdateDevEndpoint", "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-*" } ] }

您可以合并两个策略,如以下示例所示。您可能会看到名称以 A 开头的任何开发终端节点的 EntityNotFoundException。不过,当您尝试访问其他开发终端节点时,将返回一个访问被拒绝错误。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CombinedPermissions", "Effect": "Allow", "Action": [ "glue:UpdateDevEndpoint", "glue:GetDevEndpoint" ], "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/A*" } ] }

检索多个项目的Amazon Glue非目录API操作的访问控制

有些Amazon GlueAPI操作会检索多个项目(例如多个开发端点);例如,GetDevEndpoints。对于此操作,您只能指定通配符 (*) 资源,而不能指定特定ARNs资源。

例如,要在策略中包含 GetDevEndpoints,资源的范围必须限定为通配符 (*)。单数操作(GetDevEndpointCreateDevEndpointDeleteDevendpoint)的范围也确定为示例中的所有 (*) 资源。

{ "Sid": "PluralAPIIncluded", "Effect": "Allow", "Action": [ "glue:GetDevEndpoints", "glue:GetDevEndpoint", "glue:CreateDevEndpoint", "glue:UpdateDevEndpoint" ], "Resource": [ "*" ] }

Amazon Glue非目录 BatchGet API操作的访问控制

有些Amazon GlueAPI操作会检索多个项目(例如多个开发端点);例如,BatchGetDevEndpoints。对于此操作,您可以指定ARN以限制可以访问的资源的范围。

例如,要允许访问特定的开发端点,请在策略BatchGetDevEndpoints中包含其资源ARN。

{ "Sid": "BatchGetAPIIncluded", "Effect": "Allow", "Action": [ "glue:BatchGetDevEndpoints" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:devEndpoint/de1" ] }

利用此策略,您可以成功访问名为 de1 的开发终端节点。但是,如果您尝试访问名为 de2 的开发终端节点,则会返回错误。

An error occurred (AccessDeniedException) when calling the BatchGetDevEndpoints operation: No access to any requested resource.
重要

有关设置IAM策略的其他方法,例如使用ListBatchGetAPI操作,请参阅适用于 Amazon Glue 的基于身份的策略示例