本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudFormation 的身分型政策範例
本節包含以身分為基礎的政策範例,示範如何授予和拒絕 CloudFormation 的許可。您可以使用這些範例政策,開始設計符合最低權限原則的自有政策。
如需 CloudFormation 特定動作和條件的清單,請參閱 和 條件的動作、資源和條件索引鍵 AWS CloudFormation。 AWS CloudFormation如需與條件搭配使用的資源類型清單,請參閱AWS 資源和屬性類型參考。
本節包含下列範例政策:
允許檢視存取
檢視存取是對 CloudFormation 存取的最低權限類型。這種政策可能適用於想要檢視 中所有 CloudFormation 堆疊的 IAM 主體 AWS 帳戶。下列範例政策授予許可,以檢視帳戶中任何 CloudFormation 堆疊的詳細資訊。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResource", "cloudformation:DescribeStackResources" ], "Resource": "*" } ] }
允許根據範本建立堆疊
下列範例政策允許 IAM 主體僅使用存放在特定 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的 CloudFormation 範本來建立堆疊。儲存貯體名稱為 my-CFN-templates
。您可以將核准的範本上傳至此儲存貯體。政策中的cloudformation:TemplateUrl
條件索引鍵可防止 IAM 主體使用任何其他範本來建立堆疊。
重要
允許 IAM 主體具有此 S3 儲存貯體的唯讀存取權。這有助於防止 IAM 主體新增、移除或修改核准的範本。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateStack" ], "Resource": "*", "Condition": { "StringLike": { "cloudformation:TemplateUrl": "https:// my-CFN-templates.s3.amazonaws.com/*" } } } ] }
拒絕更新或刪除堆疊
為了協助保護佈建業務關鍵 AWS 資源的特定 CloudFormation 堆疊,您可以限制該特定堆疊的更新和刪除動作。您只能允許對幾個指定的 IAM 主體執行這些動作,並拒絕環境中任何其他 IAM 主體執行這些動作。下列政策陳述式拒絕更新或刪除特定 AWS 區域 和 中特定 CloudFormation 堆疊的許可 AWS 帳戶。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/
<stack_ID>
" } ] }
此政策陳述式拒絕更新或刪除 MyProductionStack
CloudFormation 堆疊的許可,其位於 us-east-1
AWS 區域 和 中123456789012
AWS 帳戶。您可以在 CloudFormation 主控台中檢視堆疊 ID。以下是一些範例,說明如何針對您的使用案例修改此陳述式的 Resource
元素:
-
您可以在此政策的
Resource
元素中新增多個 CloudFormation 堆疊 IDs。 -
您可以使用
arn:aws:cloudformation:us-east-1:123456789012:stack/*
來防止 IAM 主體更新或刪除us-east-1
AWS 區域 和123456789012
帳戶中的任何堆疊。
一個重要的步驟是決定哪些政策應該包含此陳述式。您可以將此陳述式新增至下列政策:
-
連接到 IAM 主體的身分型政策 – 在此政策中放置 陳述式會限制特定 IAM 主體建立或刪除特定 CloudFormation 堆疊。
-
連接到 IAM 主體的許可界限 – 在此政策中放置 陳述式會建立許可護欄。它會限制多個 IAM 主體建立或刪除特定 CloudFormation 堆疊,但不會限制您環境中的所有主體。
-
連接到帳戶、組織單位或組織的 SCP – 在此政策中放置 陳述式會建立許可護欄。它限制目標帳戶、組織單位或組織中的所有 IAM 主體建立或刪除特定的 CloudFormation 堆疊。
不過,如果您不允許至少一個 IAM 主體,即特權主體,更新或刪除 CloudFormation 堆疊,則您將無法在必要時對透過此堆疊佈建的資源進行任何變更。使用者或開發管道 (建議) 可以擔任此特權主體。如果您想要將限制部署為 SCP,建議您改用下列政策陳述式。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/
<stack_ID>
", "Condition": { "ArnNotLike": { "aws:PrincipalARN": [ "<ARN of the allowed privilege IAM principal>
" ] } } } ] }在此陳述式中,
Condition
元素定義從 SCP 排除的 IAM 主體。除非 IAM 主體的 ARN 符合Condition
元素中的 ARN,否則此陳述式會拒絕任何 IAM 主體更新或刪除 CloudFormation 堆疊的許可。aws:PrincipalARN
條件金鑰接受清單,這表示您可以視需要將多個 IAM 主體排除在 限制之外。如需防止修改 CloudFormation 資源的類似 SCP,請參閱 SCP-CLOUDFORMATION-1(GitHub)。