本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
指定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格式 |
---|---|
目錄 |
例如: |
資料庫 |
例如: |
資料表 |
例如: |
使用者定義的函數 |
例如: |
連線 |
例如: |
互動式工作階段 |
例如: |
若要啟用精細的存取控制,您可以在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格式 |
---|---|
爬蟲程式 |
例如: |
任務 |
例如: |
觸發條件 |
例如: |
開發端點 |
例如: |
機器學習轉換 |
例如: |
AWS Glue非目錄單API一作業的存取控制
AWS Glue非目錄單一API作業作用於單一項目 (開發端點)。範例包括 GetDevEndpoint
、CreateUpdateDevEndpoint
和 UpdateDevEndpoint
。對於這些操作,策略必須將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
,資源範圍必須以萬用字元 (*) 放大。單數操作 (GetDevEndpoint
、CreateDevEndpoint
和 DeleteDevendpoint
) 也會將範圍限制為範例中的所有 (*) 資源。
{ "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原則的替代方法,例如使用List
和BatchGet
API作業,請參閱AWS Glue 的身分型政策範例。