本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
指定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格式 |
---|---|
目录 |
例如: |
数据库 |
例如: |
表 |
例如: |
用户定义的函数 |
例如: |
Connection |
例如: |
交互式会话 |
例如: |
要启用精细的访问控制,您可以在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格式 |
---|---|
爬网程序 |
例如: |
作业 |
例如: |
触发器 |
例如: |
开发终端节点 |
例如: |
机器学习转换 |
例如: |
Amazon Glue非目录单API一操作的访问控制
Amazon Glue非目录单数API操作作用于单个项目(开发端点)。示例包括 GetDevEndpoint
、CreateUpdateDevEndpoint
和 UpdateDevEndpoint
。对于这些操作,策略必须将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
,资源的范围必须限定为通配符 (*)。单数操作(GetDevEndpoint
、CreateDevEndpoint
和 DeleteDevendpoint
)的范围也确定为示例中的所有 (*) 资源。
{ "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策略的其他方法,例如使用List
和BatchGet
API操作,请参阅适用于 Amazon Glue 的基于身份的策略示例。