このトピックでは、ポリシーの継承と有効なポリシーの定義、タグポリシーの継承ロジック、および有効なポリシーの計算方法について説明します。 また、このトピックでは、タグポリシーの継承の有効化の方法および、有効なポリシーの取得方法の例についても説明します。

用語

用語説明
ポリシーの継承タグポリシーは、リソースディレクトリ内のフォルダーレベルに基づいて、親フォルダーからサブフォルダーに継承されます。 リソースディレクトリ内のフォルダーにアタッチされたタグポリシーは、フォルダー内のメンバーとそのサブフォルダーに継承されます。
親ポリシー親ポリシーは、リソースディレクトリ内における上位レベルのオブジェクトにアタッチされたポリシーを指します。
子ポリシー子ポリシーは、リソースディレクトリ内における下位レベルのオブジェクトにアタッチされたポリシーを指します。
有効なポリシー有効なポリシーは、メンバーにアタッチされたタグポリシーと、メンバーに継承されたタグポリシーを集約することで得られます。 有効なポリシーは、メンバーに対して実際に実行されるポリシーです。
継承演算子継承演算子は、メンバーにアタッチされたタグポリシーと、メンバーによって継承されたタグポリシーの集計に使われます。 詳細については、「継承演算子」をご参照ください。

タグポリシーの継承方法および有効なポリシーの取得方法

  • シングルアカウントモードでのタグポリシー

    シングルアカウントモードで、アカウントに複数のタグポリシーがアタッチされた場合、タグポリシーの集約は、タグポリシーで定義されたタグキーに基づいて行われます。 タグポリシーで定義されたタグキーが互いに競合する場合、最初にアタッチされたタグポリシーがアカウントの有効なポリシーとして使われます。

  • マルチアカウントモードでのタグポリシー
    マルチアカウントモードでは、リソースディレクトリの管理アカウントを使用して、以下のいずれかのオブジェクトにタグポリシーをアタッチできます。
    • Root フォルダー:タグポリシーが Root フォルダーにアタッチされた場合、タグポリシーは、リソースディレクトリ内のすべてのメンバーに継承されます。
    • 特定のフォルダー:タグポリシーが特定のフォルダーにアタッチされている場合、タグポリシーは、フォルダーおよびサブフォルダー内のすべてのメンバーに継承されます。
    • 特定のメンバー:タグポリシーが特定のメンバーにアタッチされている場合、タグポリシーはそのメンバーに対してのみ適用されます。

この例では、タグが env の環境タグと、タグキーが Project のプロジェクトタグを、企業のリソースに追加する必要があります。 この例では、タグポリシーの継承ロジックと、有効なポリシーの計算方法が示されています。

  1. PolicyA という名前のタグポリシーを、リソースディレクトリの Root フォルダーにアタッチします。

    以下のコードは、PolicyA のドキュメントです。

    {
        "tags": {
            "env": {
                "tag_key": {
                    "@@assign": "env"
    
                },
                  "tag_value": {
                    "@@assign": [
                        "Production",
                        "Test"
                    ]
                }
            },
            "Project": {
                "tag_key": {
                    "@@assign": "Project"
    
                }
            }
        }
    }

    PolicyA では、タグキー env および Project が、リソースディレクトリの Root フォルダーにアタッチされる規則が定義されます。 PolicyA が Root フォルダーにアタッチされると、以下の状況が発生します。

    PolicyA は、リソースディレクトリ内のすべてのメンバーに対して適用されます。 つまり、タグキーが env および Project であるコンプライアントタグを、メンバー内のすべてのリソースに追加する必要があります。 タグキー env の有効なタグ値は Production および Test.

  2. PolicyB という名前のタグポリシーを、Root フォルダー内の特定のメンバーにアタッチします。

    以下のコードは、PolicyB のドキュメントです。

    {
        "tags": {
            "env": {
                "tag_value": {
                    "@@append": [
                        "Development"
                    ]
                }
            },
            "Project": {
                "tag_value": {
                    "@@assign": [
                        "A",
                        "B"
                    ]
                }
            }
        }
    }

    PolicyB は、次を定義しています: Development がタグキー env のタグ値として追加され、タグキー Project の有効なタグ値は A および B.

  3. 特定のメンバーの有効なポリシーを計算します。

    PolicyB は特定のメンバーにアタッチされ、メンバーは PolicyA を継承します。 この場合、メンバーに対する有効なポリシーは、PolicyA と PolicyB を集約することで得られます。 これは、PolicyA および PolicyB で定義されたタグ値が準拠していることを示します。 下表に、タグキー env および Project の有効なタグ値を示します。

    タグキータグ値
    env
    • Production
    • Test
    • Development
    Project
    • A
    • B

    以下のコードは、タグポリシーのドキュメントです。

    {
        "tags": {
            "env": {
                "tag_value":  [
                       "Production",
                       "Test",
                       "Development"
                    ] ,
                 "tag_key": "env"
            },
            "Project": {
                "tag_value":  [
                       "A",
                       "B"
                    ],
                 "tag_key": "Project"
            }
        }
    }