

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# IaC で「必須タグキー」を強制する
<a name="enforce-required-tag-keys-iac"></a>

タグポリシーは、Infrastructure as Code (IaC) デプロイ全体で一貫したタグ付けを維持するのに役立ちます。「必須タグキー」を使用すると、Terraform CloudFormation、Pulumi などの IaC ツールで作成されたすべてのリソースに、組織で定義された必須タグが含まれていることを確認できます。

この機能は、リソースが作成される前にIaC デプロイを組織のタグポリシーと照合します。デプロイに必要なタグがない場合は、開発チームに警告するか、デプロイを完全に防止するように IaC 設定を設定できます。このプロアクティブアプローチは、後で手動修復を必要とせずに、リソースが作成された時点からのタグ付けコンプライアンスを維持します。エンフォースメントは、単一のタグポリシー定義を使用して複数の IaC ツールで機能するため、組織が使用するツールごとに個別のタグ付けルールを設定する必要がなくなります。

**Topics**
+ [で を強制する CloudFormation](#enforce-with-cloudformation)
+ [Terraform で強制する](#enforce-with-terraform)
+ [Pulumi で強制する](#enforce-with-pulumi)

## で を強制する CloudFormation
<a name="enforce-with-cloudformation"></a>

**注記**  
で必要なタグキーを適用するには CloudFormation、タグポリシーでリソースタイプに必要なタグを指定する必要があります。詳細については、「[「必須タグキー」のレポート](orgs_manage_policies_tag-policies-report-tagging-compliance.md#reporting-required-tag-key)」セクションを参照してください。

 ** AWS::TagPolicies::TaggingComplianceValidator フックの設定実行ロール** 

`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 アクセス許可とパブリック拡張機能アクセスの信頼ポリシーを使用して実行ロールを設定する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-execution-role)」を参照してください。

 ** AWS::TagPolicies::TaggingComplianceValidator フックをアクティブ化する** 

**重要**  
続行する前に、フックを操作し、CloudFormation コンソールからプロアクティブコントロールを表示するために必要なアクセス許可があることを確認してください。詳細については、[CloudFormation フックの IAM アクセス許可を付与する](https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/grant-iam-permissions-for-hooks.html)」を参照してください。

タグポリシーを更新したら、必要なタグ付けコンプライアンスを適用するすべての AWS アカウントとリージョンで`AWS::TagPolicies::TaggingComplianceValidator`フックをアクティブ化する必要があります。

この AWSマネージドフックは、次の 2 つのモードで設定できます。
+  **警告モード**: デプロイの続行を許可しますが、必要なタグがない場合に警告を生成します 
+  **フェイルモード**: 必要なタグがないデプロイをブロックします 

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
```

をターゲット AWS リージョン`region`に置き換え、警告モード`"FailureMode":"WARN"`が必要な場合は `"FailureMode":"FAIL"` に変更します。

 **StackSets で複数のアカウントとリージョンで AWS、::TagPolicies::TaggingComplianceValidator Hook をアクティブ化する CloudFormation StackSets** 

複数の AWS アカウントを持つ組織の場合、 AWS CloudFormation StackSets を使用して、すべてのアカウントとリージョンでタグ付けコンプライアンスフックを同時にアクティブ化できます。

CloudFormation StackSets を使用すると、1 回のオペレーションで同じ CloudFormation テンプレートを複数のアカウントとリージョンにデプロイできます。このアプローチにより、各アカウントで手動設定を必要とせずに、 AWS 組織全体で一貫したタグ付けを適用できます。

この目的で CloudFormation StackSets を使用するには:

1. タグ付けコンプライアンスフックをアクティブ化する CloudFormation テンプレートを作成する

1.  CloudFormation StackSets を使用してテンプレートをデプロイし、組織単位または特定のアカウントをターゲットにする

1. 強制を有効にするすべてのリージョンを指定する

 CloudFormation StackSets デプロイでは、指定されたすべてのアカウントとリージョンでアクティベーションプロセスが自動的に処理されるため、組織全体のタグ付けコンプライアンスが統一されます。サービスマネージド CloudFormation StackSets を使用して CloudFormation フックを Organization にデプロイする方法については、この[AWS ブログ](https://aws.amazon.com/blogs/devops/deploy-cloudformation-hooks-to-an-organization-with-service-managed-stacksets/)を参照してください。

 * CloudFormation StackSets を使用して以下の CloudFormation テンプレートをデプロイし、組織内のアカウントの AWS::TagPolicies::TaggingComplianceValidator フックをアクティブ化します。*

**重要**  
このフックは 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 フックの実行の詳細については、[「アカウントでプロアクティブコントロールベースのフックをアクティブ化する](https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/proactive-controls-hooks-activate-hooks.html)」を参照してください。

## Terraform で強制する
<a name="enforce-with-terraform"></a>

Terraform で必要なタグキーを適用するには、Terraform AWS プロバイダーを 6.22.0 以上に更新し、プロバイダー設定でタグポリシーの検証を有効にする必要があります。実装の詳細と設定例については、[タグポリシーの適用に関する Terraform AWS プロバイダーのドキュメント](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/tag-policy-compliance)を参照してください。

## Pulumi で強制する
<a name="enforce-with-pulumi"></a>

Pulumi で必要なタグキーを適用するには、Pulumi クラウドでタグポリシーレポートポリシーパックを有効にし、タグポリシーの読み取りアクセス許可を持つ IAM ロールを設定する必要があります。実装の詳細と設定例については、[タグポリシーの適用に関する Pulumi ドキュメント](https://www.pulumi.com/docs/insights/policy/integrations/aws-organizations-tag-policies/#aws-organizations-tag-policies)を参照してください。