本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IaC 強制執行「必要標籤金鑰」
標籤政策可協助您在整個基礎設施中維持一致的標記為程式碼 (IaC) 部署。使用「必要標籤金鑰」,您可以確保透過 IaC 工具建立的所有資源 CloudFormation,例如 Terraform 和 Pulumi,都包含組織定義的強制性標籤。
此功能會在建立資源之前,針對組織的標籤政策檢查您的 IaC 部署。當部署缺少必要的標籤時,您可以設定 IaC 設定來警告您的開發團隊或完全防止部署。這種主動方法會從建立資源的那一刻起維持標記合規性,而不是稍後需要手動修復。強制執行使用單一標籤政策定義跨多個 IaC 工具運作,無需為組織使用的每個工具設定單獨的標記規則。
使用 強制執行 CloudFormation
注意
若要使用 強制執行必要的標籤金鑰 CloudFormation,您必須在標籤政策中為您的資源類型指定必要的標籤。如需詳細資訊,請參閱 「必要標籤金鑰」的報告 區段内容。
設定執行角色: AWS:TagPolicies::TaggingComplianceValidator Hook
啟用AWS::TagPolicies::TaggingComplianceValidator掛鉤之前,您必須建立掛鉤用來存取 AWS 服務的執行角色。角色必須連接下列信任政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "resources.cloudformation.amazonaws.com", "hooks.cloudformation.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }
執行角色也必須具有至少具有下列許可的角色政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "tag:ListRequiredTags" ], "Resource": "*" } ] }
如需為公有擴充功能設定執行角色的詳細資訊,請參閱 CloudFormation 《 使用者指南》中的使用 IAM 許可設定執行角色和公有擴充功能存取的信任政策。
啟用 AWS::TagPolicies::TaggingComplianceValidator Hook
重要
繼續之前,請確認您擁有使用勾點所需的許可,並從 CloudFormation 主控台檢視主動控制。如需詳細資訊,請參閱授予 CloudFormation Hooks 的 IAM 許可。
更新標籤政策後,您必須在要強制執行必要標記合規的每個 AWS 帳戶和區域中啟用AWS::TagPolicies::TaggingComplianceValidator掛鉤。
此 AWS受管勾點可設定為兩種模式:
-
警告模式:允許部署繼續,但在缺少必要標籤時產生警告
-
失敗模式:封鎖缺少必要標籤的部署
若要使用 CLI AWS 啟用勾點:
aws cloudformation activate-type \ --type HOOK \ --type-name AWS::TagPolicies::TaggingComplianceValidator \ --execution-role-arn arn:aws:iam::123456789012:role/MyHookExecutionRole \ --publisher-id aws-hooks \ --region us-east-1
aws cloudformation set-type-configuration \ --configuration '{"CloudFormationConfiguration":{"HookConfiguration":{"HookInvocationStatus": "ENABLED", "FailureMode": "WARN", "TargetOperations": ["STACK"], "Properties":{}}}}' \ --type-arn "arn:aws:cloudformation:us-east-1:123456789012:type/hook/AWS-TagPolicies-TaggingComplianceValidator" \ --region us-east-1
region 將 取代為您的目標 AWS 區域,"FailureMode":"FAIL""FailureMode":"WARN"如果您偏好警告模式,請變更為 。
使用 CloudFormation StackSets 跨多個帳戶和區域啟用 AWS::TagPolicies::TaggingComplianceValidator Hook
對於具有多個 AWS 帳戶的組織,您可以使用 AWS CloudFormation StackSets 同時啟用所有帳戶和區域的標記合規掛鉤。
CloudFormation StackSets 可讓您使用單一操作,將相同的 CloudFormation 範本部署到多個帳戶和區域。此方法可確保在整個 AWS 組織中執行一致的標記,而無需在每個帳戶中手動設定。
若要將 CloudFormation StackSets 用於此目的:
-
建立啟用標記合規掛鉤的 CloudFormation 範本
-
使用 CloudFormation StackSets 部署範本,以您的組織單位或特定帳戶為目標
-
指定您要啟用強制執行的所有區域
CloudFormation StackSets 部署會自動處理所有指定帳戶和區域的啟用程序,確保整個組織的一致性標記合規。若要了解如何使用 service-managed CloudFormation StackSets 將 CloudFormation 勾點部署至 Organization,請參閱此AWS 部落格
使用 CloudFormation StackSets 部署以下 CloudFormation 範本,為組織中的帳戶啟用 AWS::TagPolicies::TaggingComplianceValidator Hook。
重要
此勾點僅做為 StackHook 運作。它在用作資源掛鉤時沒有作用。
Resources: # Activate the AWS-managed hook type HookTypeActivation: Type: AWS::CloudFormation::TypeActivation Properties: AutoUpdate: True PublisherId: "AWS" TypeName: "AWS::TagPolicies::TaggingComplianceValidator" # Configure the hook HookTypeConfiguration: Type: AWS::CloudFormation::HookTypeConfig DependsOn: HookTypeActivation Properties: TypeName: "AWS::TagPolicies::TaggingComplianceValidator" TypeArn: !GetAtt HookTypeActivation.Arn Configuration: !Sub | { "CloudFormationConfiguration": { "HookConfiguration": { "TargetStacks": "ALL", "TargetOperations": ["STACK"], "Properties": {}, "FailureMode": "Warn", "TargetFilters": { "Actions": [ "CREATE", "UPDATE" ]} } } }
注意
如需執行 CloudFormation 勾點的詳細資訊,請參閱在您的帳戶中啟用主動控制型勾點。
使用 Terraform 強制執行
若要使用 Terraform 強制執行必要的標籤金鑰,您需要將 Terraform AWS 提供者更新為 6.22.0 或更新版本,並在提供者組態中啟用標籤政策驗證。如需實作詳細資訊和組態範例,請參閱標籤政策強制執行的 Terraform AWS 提供者文件
使用 Pulumi 強制執行
若要使用 Pulumi 強制執行必要的標籤金鑰,您需要在 Pulumi Cloud 中啟用標籤政策報告政策套件,並使用標籤政策讀取許可來設定 IAM 角色。如需實作詳細資訊和組態範例,請參閱標籤政策強制執行的 Pulumi 文件