

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

# 限制和要求堆疊政策
<a name="limiting-and-requiring-stack-policies"></a>

作為最低權限許可的最佳實務，請考慮要求 IAM 主體指派堆疊政策，並限制 IAM 主體可以指派哪些堆疊政策。許多 IAM 主體不應該有許可來建立自訂堆疊政策並將其指派給自己的堆疊。

建立堆疊政策後，建議您將政策上傳至 S3 儲存貯體。然後，您可以使用 `cloudformation:StackPolicyUrl`條件金鑰並在 S3 儲存貯體中提供堆疊政策的 URL，來參考這些堆疊政策。

## 授予連接堆疊政策的許可
<a name="granting-permissions-to-attach-stack-policies"></a>

作為最低權限許可的最佳實務，請考慮限制 IAM 主體可以連接到 CloudFormation 堆疊的堆疊政策。在 IAM 主體的身分型政策中，您可以指定 IAM 主體有權指派的堆疊政策。這可防止 IAM 主體連接任何堆疊政策，這可以降低組態錯誤的風險。

例如，組織可能有不同的團隊有不同的需求。因此，每個團隊都會為其團隊特定的 CloudFormation 堆疊建置堆疊政策。在共用環境中，如果所有團隊將其堆疊政策存放在相同的 S3 儲存貯體中，團隊成員可能會連接可用的堆疊政策，但不適用於其團隊的 CloudFormation 堆疊。若要避免這種情況，您可以定義允許 IAM 主體僅連接特定堆疊政策的政策陳述式。

下列範例政策允許 IAM 主體連接存放在 S3 儲存貯體中團隊特定資料夾中的堆疊政策。您可以將核准的堆疊政策存放在此儲存貯體中。

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:SetStackPolicy"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "cloudformation:StackPolicyUrl": "{{<Bucket URL>}}/{{<Team folder>}}/*"
        }
      }
    }
  ]
}
```

此政策陳述式不需要 IAM 主體將堆疊政策指派給每個堆疊。即使 IAM 主體具有使用特定堆疊政策建立堆疊的許可，他們也可以選擇建立沒有堆疊政策的堆疊。

## 需要堆疊政策
<a name="requiring-stack-policies"></a>

若要確保所有 IAM 主體將堆疊政策指派給其堆疊，您可以將服務控制政策 (SCP) 或許可界限定義為預防性護欄。

下列範例政策示範如何設定 SCP，要求 IAM 主體在建立堆疊時指派堆疊政策。如果 IAM 主體未連接堆疊政策，則無法建立堆疊。此外，此政策可防止具有堆疊更新許可的 IAM 主體在更新期間移除堆疊政策。 政策會使用 `cloudformation:StackPolicyUrl`條件金鑰來限制`cloudformation:UpdateStack`動作。

```
          {
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "cloudformation:CreateStack",
        "cloudformation:UpdateStack"
      ],
      "Resource": "*",
      "Condition": {
        "Null": {
          "cloudformation:StackPolicyUrl": "true"
        }
      }
    }
  ]
}
```

透過在 SCP 中包含此政策陳述式而非許可界限，您可以將護欄套用至組織中的所有帳戶。這可以執行下列動作：

1. 減少將政策個別連接至 中多個 IAM 主體的負擔 AWS 帳戶。許可界限只能直接連接到 IAM 主體。

1. 減少為不同的許可界限建立和管理多個副本的工作量 AWS 帳戶。這可降低多個相同許可界限中的組態錯誤風險。

**注意**  
SCPs 和許可界限是許可防護機制，可定義帳戶或組織中 IAM 主體的可用許可上限。這些政策不會將許可授予 IAM 主體。如果您想要標準化帳戶或組織中所有 IAM 主體指派堆疊政策的需求，您需要同時使用許可護欄和身分型政策。