指定AWS Glue資源 ARNs - AWS 連接詞

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

指定AWS Glue資源 ARNs

在中AWS Glue,您可以使用 AWS Identity and Access Management (IAM) 策略來控制對資源的存取。在政策中,您可以使用 Amazon 資源名稱 (ARN) 來識別該政策適用的資源。並非所有資源都在AWS Glue支援中ARNs。

資料目錄 ARNs

Data Catalog 資源擁有階層結構,以 catalog 為根。

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

每個 AWS 帳戶在 AWS 區域中都有一個資料目錄,其中 12 位數的帳戶 ID 做為目錄 ID。資源與其ARNs相關聯具有唯一性,如下表所示。

Resource Type (資源類型) 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

連線

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/*
重要

Data Catalog 資源上執行的所有操作,都需要資源的許可與該資源所有上階的許可。例如,建立資料表分割區時,需要資料表、資料庫和資料表所在目錄的許可。以下範例說明要在 Data Catalog 的 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" ] }

除了資源的許可與其所有上階的許可,所有刪除操作也需要該資源所有子項的許可。例如,刪除資料庫,除需要資料庫及其所在目錄的許可之外,還需要資料庫中所有資料表和使用者定義函數的許可。以下範例說明要刪除 Data 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" ] }

總而言之,對 Data Catalog 資源採取的動作需遵循以下許可規則:

  • 針對目錄採取的動作只需要有目錄的許可即可。

  • 針對資料庫採取的動作需要資料庫和目錄的許可。

  • 針對資料庫的刪除動作需要資料庫和目錄的許可,再加上資料庫中所有資料表和使用者定義函數的許可。

  • 針對資料表、分割區或資料表版本採取的動作需要資料表、資料庫和目錄的許可。

  • 針對使用者定義函數採取的動作需要使用者定義函數、資料庫和目錄的許可。

  • 針對連線採取的動作需要連線和目錄的許可。

ARNs針對非目錄物件 AWS Glue

某些AWS Glue資源允許資源層級權限使用. ARN 您可以在IAM原則ARNs中使用這些功能來啟用精細的存取控制。下表列出了可以包含資源的資源ARNs。

Resource Type (資源類型) 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

AWS Glue非目錄單API一作業的存取控制

AWS Glue非目錄一API作業作用於單一項目 (開發端點)。範例包括 GetDevEndpointCreateUpdateDevEndpointUpdateDevEndpoint。對於這些操作,策略必須將API名稱放在"action"塊中,並將資源放ARN在"resource"塊中。

假設您想要允許使用者呼叫 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-*" } ] }

您可以結合兩個政策,如下範例所示。您可以查看 EntityNotFoundException 以取得名稱開頭為 A 的任何開發端點。不過,當您嘗試存取其他開發端點時會傳回拒絕存取錯誤。

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

擷取多個項目之AWS Glue非目錄API作業的存取控制

某些AWS GlueAPI作業會擷取多個項目 (例如多個開發端點);例如,GetDevEndpoints。對於此作業,您只能指定萬用字元 (*) 資源,而不能指定特定資源ARNs。

例如,若要在政策中包含 GetDevEndpoints,資源範圍必須以萬用字元 (*) 放大。單數操作 (GetDevEndpointCreateDevEndpointDeleteDevendpoint) 也會將範圍限制為範例中的所有 (*) 資源。

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

AWS Glue非目錄作業的存 BatchGet API取控制

某些AWS 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作業,請參閱AWS Glue 的身分型政策範例