CloudFormation 的身分型政策範例 - AWS 方案指引

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

CloudFormation 的身分型政策範例

本節包含以身分為基礎的政策範例,示範如何授予和拒絕 CloudFormation 的許可。您可以使用這些範例政策,開始設計符合最低權限原則的自有政策。

如需 CloudFormation 特定動作和條件的清單,請參閱 和 條件的動作、資源和條件索引鍵 AWS CloudFormationAWS 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)。