我想使用服務控制政策 (SCP) 和標籤政策,以讓我在 AWS Organizations 成員帳戶中的使用者無法建立 AWS 資源。
簡短說明
在組織中的跨成員帳戶中,使用標籤政策在支援的 AWS 資源上維護標準化標籤。依預設,標籤金鑰大小寫會繼承自父項政策。若要定義強制標籤金鑰的大小寫,請選取 Use the capitalization that you've specified above for the tag key (使用上面為標籤金鑰指定的大小寫)。如果父項政策不存在或您未啟用大小寫,則全小寫標籤金鑰將會視為合規。
建立資源時,標籤政策會檢查合規標籤金鑰是否符合定義的標籤值和大小寫。但是,使用者可以修改標準化標籤金鑰,並在沒有合規標籤的情況下建立資源。使用 SCP 限制成員帳戶中實體的權限。
解決方法
使用標籤政策來防止全新或現有的資源上不合規的標籤
下列政策允許使用者將 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的 tag_value 僅變更為 Preprod 或 Production:
{
"tags": {
"Environment": {
"tag_key": {
"@@assign": "Environment"
},
"tag_value": {
"@@assign": [
"Preprod",
"Production"
]
},
"enforced_for": {
"@@assign": [
"ec2:instance"
]
}
}
}
}
在先前的政策中,使用者無法為 tag_value 輸入 Dev,因為政策未定義 Dev 選項。此外,如果政策包含大小寫選項,則使用者無法將 Environment 變更為 environment。
在沒有不合規標籤金鑰的情況下,使用 SCP 停止建立執行個體資源
下列 SCP 要求使用者呼叫 RunInstances API 作業時,在執行個體的中繼資料中包含合規的標籤金鑰。如果附加此 SCP 的使用者建立具有合規標籤的資源,則使用者無法新增、修改或刪除標籤金鑰值對:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUpdatingOrDeletingAnyTagOnInstanceWithAnAttachedCopliantTags",
"Effect": "Deny",
"Action": [
"ec2:CreateTags",
"ec2:DeleteTags"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Environment": [
"Preprod",
"Production"
]
},
"Null": {
"aws:ResourceTag/Environment": "false"
}
}
},
{
"Sid": "DenyRunInstancesWithoutOneofTheCompliantTagKeys",
"Effect": "Deny",
"Action": [
"ec2:RunInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"Null": {
"aws:RequestTag/Environment": "true"
}
}
}
]
}
注意: 當您呼叫 RunInstances API 時,請確定傳遞所有必要的標籤。
相關資訊
AWS Organizations 服務控制政策和 IAM 政策有什麼區別?
標籤政策語法