

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

# CloudFormation 的身分型政策範例
<a name="sample-id-policies-for-cloudformation"></a>

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

如需 CloudFormation 特定動作和條件的清單，請參閱 [和 條件的動作、資源和條件索引鍵 AWS CloudFormation](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html)。 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-template-conditions)如需與條件搭配使用的資源類型清單，請參閱[AWS 資源和屬性類型參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)。

**Topics**
+ [允許檢視存取](#sample-allow-view-access)
+ [允許根據範本建立堆疊](#sample-allow-stack-creation-based-on-template)
+ [拒絕更新或刪除堆疊](#sample-deny-stack-changes)

## 允許檢視存取
<a name="sample-allow-view-access"></a>

檢視存取權是對 CloudFormation 存取的最低權限類型。這種政策可能適用於想要檢視 中所有 CloudFormation 堆疊的 IAM 主體 AWS 帳戶。下列範例政策授予許可，以檢視帳戶中任何 CloudFormation 堆疊的詳細資訊。

```
{ 
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:DescribeStacks",
        "cloudformation:DescribeStackEvents",
        "cloudformation:DescribeStackResource",
        "cloudformation:DescribeStackResources"
      ],
      "Resource": "*"
    }
  ]
}
```

## 允許根據範本建立堆疊
<a name="sample-allow-stack-creation-based-on-template"></a>

下列範例政策允許 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/*"
        }
      }
    }
  ]
}
```

## 拒絕更新或刪除堆疊
<a name="sample-deny-stack-changes"></a>

為了協助保護佈建業務關鍵 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，否則此陳述式會拒絕更新或刪除 CloudFormation 堆疊的任何 IAM 主體許可。`aws:PrincipalARN` 條件金鑰接受清單，這表示您可以視需要將多個 IAM 主體排除在 限制之外。如需防止修改 CloudFormation 資源的類似 SCP，請參閱 [SCP-CLOUDFORMATION-1](https://aws-samples.github.io/aws-iam-permissions-guardrails/guardrails/scp-guardrails.html#scp-cloudformation-1) (GitHub)。