本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Glue 的身分型政策範例
根據預設,使用者和角色沒有建立或修改 AWS Glue 資源的許可。他們也無法使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 來執行任務 AWS API。若要授予使用者對所需資源執行動作的許可,IAM管理員可以建立IAM政策。然後,管理員可以將IAM政策新增至角色,使用者可以擔任角色。
若要了解如何使用這些範例政策文件來建立IAM身分型JSON政策,請參閱 IAM 使用者指南 中的建立IAM政策 (主控台)。
如需 AWS Glue 定義的動作和資源類型的詳細資訊,包括ARNs每種資源類型的 格式,請參閱服務授權參考 中的 AWS Glue 的動作、資源和條件索引鍵。
注意
本節提供的範例全部使用 us-west-2
區域。您可以使用要使用的區域來取代此 AWS 項目。
主題
政策最佳實務
身分型政策會決定是否有人可以在您的帳戶中建立、存取或刪除 AWS Glue 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時,請遵循下列準則及建議事項:
-
開始使用 AWS 受管政策並邁向最低權限許可 – 若要開始將許可授予您的使用者和工作負載,請使用將許可授予許多常見使用案例的 AWS 受管政策。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策,以進一步減少許可。如需詳細資訊,請參閱 IAM 使用者指南 中的 AWS 受管政策或 AWS 任務功能的受管政策。
-
套用最低權限許可 – 當您使用IAM政策設定許可時, 只會授予執行任務所需的許可。為實現此目的,您可以定義在特定條件下可以對特定資源採取的動作,這也稱為最低權限許可。如需使用 IAM 套用許可的詳細資訊,請參閱 IAM 使用者指南 中的政策和許可IAM。
-
使用IAM政策中的條件來進一步限制存取:您可以將條件新增至政策,以限制對動作和資源的存取。例如,您可以撰寫政策條件來指定所有請求都必須使用 傳送SSL。如果透過特定 使用服務動作,例如 AWS 服務,您也可以使用 條件來授予其存取權 AWS CloudFormation。如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:條件。
-
使用 IAM Access Analyzer 驗證您的IAM政策,以確保安全且功能許可 – IAM Access Analyzer 會驗證新的和現有的政策,使政策符合IAM政策語言 (JSON) 和IAM最佳實務。IAM Access Analyzer 提供超過 100 個政策檢查和可行的建議,以協助您撰寫安全且實用的政策。如需詳細資訊,請參閱 IAM 使用者指南中的使用 IAM Access Analyzer 驗證政策。
-
需要多重要素驗證 (MFA) – 如果您有需要IAM使用者或 根使用者的案例 AWS 帳戶,請開啟 MFA 以獲得額外的安全性。若要在呼叫API操作MFA時要求 ,請將MFA條件新增至您的政策。如需詳細資訊,請參閱 IAM 使用者指南 中的使用 安全API存取MFA。
如需 中最佳實務的詳細資訊IAM,請參閱 IAM 使用者指南 中的安全最佳實務IAM。
資源層級許可僅適用於特定 AWS Glue objects
您只能定義 中特定物件的精細控制 AWS Glue。 因此,您必須撰寫用戶端IAM的政策,讓允許 Amazon Resource Names (ARNs) 的Resource
陳述式API操作不會與不允許 API的操作混合ARNs。
例如,下列IAM政策允許 GetClassifier
和 API的操作GetJobRun
。它將 定義為 Resource
,*
因為 AWS Glue 不允許 ARNs分類器和任務執行。由於 ARNs 被允許用於特定API操作,例如 GetDatabase
和 GetTable
,因此ARNs可以在政策的下半部指定 。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetClassifier*", "glue:GetJobRun*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:Get*" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default", "arn:aws:glue:us-east-1:123456789012:table/default/e*1*", "arn:aws:glue:us-east-1:123456789012:connection/connection2" ] } ] }
如需 的清單 AWS Glue 允許 的物件ARNs,請參閱 指定AWS Glue資源 ARNs。
使用 AWS Glue 主控台
若要存取 AWS Glue 主控台,您必須具有一組最低許可。這些許可必須允許您列出和檢視 中 AWS Glue 資源的詳細資訊 AWS 帳戶。如果您建立比最基本必要許可更嚴格的身分型政策,則對於具有該政策的實體 (使用者或角色) 而言,主控台就無法如預期運作。
對於僅對 AWS CLI 或 進行呼叫的使用者,您不需要允許最低主控台許可 AWS API。相反地,僅允許存取與其嘗試執行API的操作相符的動作。
為了確保使用者和角色仍然可以使用 AWS Glue 主控台,也請將 AWS Glue
或ConsoleAccess
AWS 受管政策連接至實體。如需詳細資訊,請參閱 IAM 使用者指南 中的新增許可給使用者。ReadOnly
讓使用者使用 AWS Glue 主控台,該使用者必須具有一組最低許可,允許他們使用 AWS Glue 資源 AWS 。除了這些 AWS Glue 許可,主控台需要下列服務的許可:
-
Amazon CloudWatch Logs 顯示日誌的許可。
-
AWS Identity and Access Management (IAM) 列出和傳遞角色的許可。
-
AWS CloudFormation 使用堆疊的許可。
-
列出 VPCs、子網路、安全群組、執行個體和其他物件的 Amazon Elastic Compute Cloud (Amazon EC2) 許可。
-
列出儲存貯體和物件,以及擷取和儲存指令碼的 Amazon Simple Storage Service (Amazon S3) 許可。
-
使用叢集的 Amazon Redshift 許可
-
列出執行個體的 Amazon Relational Database Service (Amazon RDS) 許可。
如需使用者檢視和使用 所需的許可的詳細資訊 AWS Glue 主控台,請參閱 步驟 3:將政策連接至存取 的使用者或群組 AWS Glue。
如果您建立IAM的政策比最低必要許可更嚴格,則主控台將無法對具有該IAM政策的使用者如預期般運作。為了確保這些使用者仍可使用 AWS Glue 主控台,也連接 中所述的AWSGlueConsoleFullAccess
受管政策AWS 的 受管 (預先定義) 政策 AWS Glue。
允許使用者檢視他們自己的許可
此範例示範如何建立政策,允許使用者檢視連接至其IAM使用者身分的內嵌和受管政策。此政策包含在主控台上完成此動作或使用 AWS CLI 或 以程式設計方式完成此動作的許可 AWS API。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
授予資料表的唯讀許可
下列政策可授予 db1
資料庫中 books
資料表的唯讀許可。如需 資源 Amazon Resource Names (ARNs) 的詳細資訊,請參閱 資料目錄 ARNs。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesActionOnBooks", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }
此政策會授予名為 db1
之資料庫中名為 books
之資料表的唯讀許可。若要將 Get
許可授予資料表,則也需要目錄和資料庫資源的該許可。
下列政策會授予在 db1
資料庫中建立 tb1
資料表的最低必要許可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:table/db1/tbl1", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:catalog" ] } ] }
依 GetTables 許可篩選資料表
假設有三個資料表 customers
、stores
以及 store_sales
在 db1
資料庫中。下列政策會授予 GetTables
許可給 stores
和 store_sales
,但不會授予給 customers
。當您使用此政策呼叫 GetTables
時,結果只會包含兩個授權的資料表 (不會傳回 customers
資料表)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store_sales", "arn:aws:glue:us-west-2:123456789012:table/db1/stores" ] } ] }
您可以使用 store*
來比對任何開頭為 store
的資料表名稱,藉此簡化上述政策。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample2", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store*" ] } ] }
同樣地,使用 /db1/*
比對 db1
中所有資料表時,下列政策可將 GetTables
存取授予 db1
中所有資料表。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesReturnAll", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }
如果未ARN提供資料表,呼叫 會GetTables
成功,但會傳回空清單。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesEmptyResults", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1" ] } ] }
如果政策中ARN缺少資料庫,呼叫 會GetTables
失敗,但使用 AccessDeniedException
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesAccessDeny", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }
授予完整存取資料表和所有分割區的許可
下列政策可授予 db1
資料庫中名稱為 books
之資料表的所有許可。這包括資料表本身、其存檔版本和其所有分割區的讀取和寫入許可。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:DeleteTableVersion", "glue:BatchDeleteTableVersion", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }
上述政策在實務中可予以簡化。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:*Table*", "glue:*Partition*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }
請注意,精細定義存取控制的最低精細程度是資料表層級。這表示您無法授予使用者存取資料表中某些分割區而非其他分割區,或是存取某些資料表欄位而非其他欄位。使用者可以存取整個資料表,不然就是完全不能存取資料表。
透過名稱字首和明確拒絕的存取控制
在此範例中,假設 AWS Glue Data Catalog 中的資料庫和資料表是使用名稱字首進行組織。開發階段中的資料庫名稱字首為 dev-
,而生產階段中的資料庫名稱字首為 prod-
。您可以使用下列政策,授予開發人員所有具有 dev-
字首的資料庫、資料表UDFs、 等的完整存取權。但是,若是含 prod-
字首的所有項目,您只授予唯讀存取。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DevAndProdFullAccess", "Effect": "Allow", "Action": [ "glue:*Database*", "glue:*Table*", "glue:*Partition*", "glue:*UserDefinedFunction*", "glue:*Connection*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/dev-*", "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/dev-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/dev-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/dev-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/dev-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/dev-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] }, { "Sid": "ProdWriteDeny", "Effect": "Deny", "Action": [ "glue:*Create*", "glue:*Update*", "glue:*Delete*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] } ] }
上述政策中的第二個陳述式會使用明確 deny
。您可以使用明確 deny
來覆寫已授予委託人的任何 allow
許可。這可讓您鎖定關鍵資源的存取權,並防止其他政策意外授予這些資源的存取權。
在上述範例中,即使第一個陳述式授予 prod-
資源的完整存取,第二個陳述式仍明確撤銷其寫入存取,而只保留 prod-
資源的唯讀取存取。
使用標籤授權存取
例如,假設您想要限定只有您帳戶下名為 Tom
的特定使用者,才能存取觸發 t2
。所有其他使用者,包括 Sam
,都可以存取該觸發條件 t1
。觸發條件 t1
和 t2
具備下列屬性。
aws glue get-triggers { "Triggers": [ { "State": "CREATED", "Type": "SCHEDULED", "Name": "t1", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" }, { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } ] }
所以此 AWS Glue 管理員連接標籤值 Tom
(aws:ResourceTag/Name": "Tom"
) 以觸發 t2
。所以此 AWS Glue 管理員也為 Tom 提供了一個IAM政策,其中包含以標籤為基礎的條件陳述式。因此,Tom 只能使用 AWS Glue 操作對具有標籤值 的資源採取行動Tom
。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }
當 Tom 嘗試存取觸發 t1
時,他會收到拒絕存取訊息。同時,他可以成功擷取觸發條件 t2
。
aws glue get-trigger --name t1 An error occurred (AccessDeniedException) when calling the GetTrigger operation: User: Tom is not authorized to perform: glue:GetTrigger on resource: arn:aws:glue:us-east-1:123456789012:trigger/t1 aws glue get-trigger --name t2 { "Trigger": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } }
Tom 無法使用複數GetTriggers
API操作來列出觸發條件,因為此操作不支援對標籤進行篩選。
若要讓 Tom 存取 GetTriggers
,AWS Glue 管理員會建立將許可分割為兩個區段的政策。一個區段允許 Tom 使用 GetTriggers
API操作存取所有觸發程序。第二節允許 Tom 存取標記值 API的操作Tom
。透過此政策,便可允許 Tom 同時擁有觸發條件 t2
的 GetTriggers
和 GetTrigger
存取權。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }
使用標籤拒絕存取
另一種資源政策方法就是明確拒絕資源存取。
重要
明確的拒絕政策不適用於複數API操作,例如 GetTriggers
。
在下列範例政策中,所有 AWS Glue 允許任務操作。但是,第二個 Effect
陳述式明確拒絕存取標記為 Team
索引鍵和 Special
值的任務。
當管理員將以下政策連接至身分時,身分能存取除標記為 Team
索引鍵和 Special
值以外的所有任務。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*" }, { "Effect": "Deny", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Special" } } } ] }
搭配清單和批次API操作使用標籤
撰寫資源政策的第三個方法是允許使用 List
API操作存取資源,以列出標籤值的資源。然後,使用對應的Batch
API操作來允許存取特定資源的詳細資訊。透過此方法,管理員不需要允許存取複數 GetCrawlers
、GetDevEndpoints
、 GetJobs
或 GetTriggers
API操作。相反地,您可以允許使用下列API操作列出資源:
-
ListCrawlers
-
ListDevEndpoints
-
ListJobs
-
ListTriggers
此外,您可以透過下列API操作,取得個別資源的詳細資訊:
-
BatchGetCrawlers
-
BatchGetDevEndpoints
-
BatchGetJobs
-
BatchGetTriggers
身為管理員,您可以使用此方法執行下列操作:
-
新增標籤到您的爬蟲程式、開發端點、任務和觸發條件。
-
拒絕使用者存取
GetCrawlers
、、GetDevEndponts
GetJobs
和 等Get
API操作GetTriggers
。 -
若要讓使用者了解他們有權存取哪些標記的資源,請允許使用者存取
ListCrawlers
、ListDevEndponts
、ListJobs
和 等List
API操作ListTriggers
。 -
拒絕使用者存取 AWS Glue 標記 APIs,例如
TagResource
和UntagResource
。 -
允許使用者存取資源詳細資訊,例如
BatchGetCrawlers
、BatchGetJobs
、BatchGetDevEndponts
和 等BatchGet
API操作BatchGetTriggers
。
例如,呼叫 ListCrawlers
操作時,提供標籤值以比對使用者名稱。然後,會得到符合所提供標籤值的爬蟲程式清單結果。將名稱清單提供給 BatchGetCrawlers
,取得每個具備指定標籤之爬蟲程式的詳細資訊。
例如,如果 Tom 應只能擷取以 標記的觸發條件詳細資訊Tom
,管理員可以將標籤新增至 的觸發條件Tom
,拒絕所有使用者存取GetTriggers
API操作,並允許所有使用者存取 ListTriggers
和 BatchGetTriggers
。
以下是 資源政策,AWS Glue 管理員授予 Tom。在政策的第一個區段中,AWS Glue API 會拒絕 的 操作GetTriggers
。在政策的第二區中,允許 ListTriggers
用於所有資源。但在第三區中,標記 Tom
的這些資源就會允許 BatchGetTriggers
存取權進行存取。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:ListTriggers" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:BatchGetTriggers" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }
使用與前例相同的觸發時,Tom 可以存取觸發 t2
,但不觸發 t1
。下面範例示範當 Tom 嘗試搭配 BatchGetTriggers
,存取 t1
和 t2
時的結果。
aws glue batch-get-triggers --trigger-names t2 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "Schedule": "cron(0 0/1 * * ? *)" } } aws glue batch-get-triggers --trigger-names t1 An error occurred (AccessDeniedException) when calling the BatchGetTriggers operation: No access to any requested resource.
下面範例示範當 Tom 嘗試使用同的 BatchGetTriggers
呼叫,同時存取觸發條件 t2
和觸發條件 t3
(其實並不存在) 時的結果。請注意,因為 Tom 具備觸發條件 t2
的存取權,且只有當 t2
傳回時才具備此存取權限。雖然 Tom 獲允存取觸發條件 t3
,但觸發條件 t3
並不存在,因此回應時傳回的 t3
會列在 "TriggersNotFound":
[]
清單中。
aws glue batch-get-triggers --trigger-names t2 t3 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "TriggersNotFound": ["t3"], "Schedule": "cron(0 0/1 * * ? *)" } }
使用條件索引鍵或內容索引鍵來控制設定
授予建立和更新任務的許可時,您可以使用條件索引鍵或內容索引鍵。以下章節討論索引鍵:
控制使用條件索引鍵來控制設定的政策
AWS Glue 提供三個IAM條件索引鍵 glue:VpcIds
、 glue:SubnetIds
和 glue:SecurityGroupIds
。在授予建立和更新任務的許可時,您可以在IAM政策中使用 條件金鑰。您可以使用此設定,確保任務或工作階段不會建立 (或更新為) 以在所需VPC環境之外執行。VPC 設定資訊不是來自CreateJob
請求的直接輸入,而是從指向 的任務「連線」欄位推斷 AWS Glue 連線。
範例使用方式
建立 AWS Glue 名為 "traffic-monitored-connection" 的網路連線,具有所需的 VpcId "vpc-id1234" SubnetIds和 SecurityGroupIds。
在IAM政策中指定 CreateJob
和 UpdateJob
動作的條件索引鍵條件。
{ "Effect": "Allow", "Action": [ "glue:CreateJob", "glue:UpdateJob" ], "Resource": [ "*" ], "Condition": { "ForAnyValue:StringLike": { "glue:VpcIds": [ "vpc-id1234" ] } } }
您可以建立類似的IAM政策,以禁止建立 AWS Glue 任務,而不指定連線資訊。
限制 上的工作階段 VPCs
若要強制執行建立的工作階段以在指定的 內執行VPC,您可以透過新增對 glue:CreateSession
動作Deny
的影響來限制角色許可,條件為 glue:vpc-id 不等於 vpc-<123>。例如:
"Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "StringNotEquals" : {"glue:VpcIds" : ["vpc-123"]} }
您也可以在 中強制執行建立的工作階段,VPC方法是新增對 條件glue:vpc-id
為 null 之glue:CreateSession
動作Deny
的影響。例如:
{ "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "Null": {"glue:VpcIds": true} } }, { "Effect": "Allow", "Action": [ "glue:CreateSession" ], "Resource": ["*"] }
控制使用內容索引鍵來控制設定的政策
AWS Glue 為每個角色工作階段提供內容索引鍵 (glue:CredentialIssuingService= glue.amazonaws.com
),AWS Glue 可供任務和開發人員端點使用。這可讓您為 採取的動作實作安全控制 AWS Glue 指令碼。AWS Glue 為每個角色工作階段提供另一個內容索引鍵 (glue:RoleAssumedBy=glue.amazonaws.com
),其中 AWS Glue 代表客戶呼叫其他 AWS 服務 (不是由任務/開發端點,而是直接由 AWS Glue 服務)。
範例使用方式
在IAM政策中指定條件式許可,並將其連接至 要使用的角色 AWS Glue 任務。這可確保根據角色工作階段是否用於 AWS Glue 任務執行期環境。
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }
拒絕給予身分建立資料預覽工作階段的能力
本節包含IAM政策範例,用於拒絕身分建立資料預覽工作階段的能力。將此政策連接至身分,此身分與資料預覽工作階段在執行期間所使用的角色不同。
{ "Sid": "DatapreviewDeny", "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Resource": [ "arn:aws:glue:*:*:session/glue-studio-datapreview*" ] }