PrincipalTag、ResourceTag、RequestTag、および TagKeys 条件キーを使用して、タグベースの制限のための IAM ポリシーを作成するにはどうすればよいですか?

所要時間2分
0

タグベースの制限のための AWS Identity and Access Management (IAM) ポリシーを作成したいと考えています。PrincipalTag、ResourceTag、RequestTag、および TagKeys の各条件キーを使用するにはどうすればよいですか?

簡単な説明

以下のサンプル IAM ポリシーを使用して、ユースケースの条件キーを使用してタグベースの制限を作成します。

解決方法

PrincipalTag 条件キー

aws:PrincipalTag 条件キーは、リクエストを実行するプリンシパルにアタッチされたタグと IAM ポリシーのタグを照合するために使用されます。PrincipalTag キーの値は、リクエストのプリンシパルに一致するタグキーがある IAM タグの値と比較されます (存在する場合)。

次のサンプル IAM ポリシーは、Amazon Simple Storage Service (Amazon S3) バケットに制限を提供します。Amazon S3 PutObject アクションは、「Product-Manager」というタイトルを持つユーザーを除くすべてのユーザーについて、バケットへのアクセス許可を拒否しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllButProductManagers",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::productionbucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalTag/job-title": "Product-Manager"
        }
      }
    }
  ]
}

ResourceTag 条件キー

aws:ResourceTag/tag-key 条件キーは、IAM ポリシーで指定されたタグキーと値のペアと、AWS リソースにアタッチされているキーと値のペアを比較します。詳細については、「AWS リソースへのアクセスの制御」を参照してください。

IAM ポリシーの評価中、ResourceTag タグは IAM タグと比較されます。ResourceTag キーの値は、一致するキーと値のペアを持つ IAM タグの値と比較されます (AWS リソースに存在する場合)。この条件キーは、グローバルバージョン aws:ResourceTag および ec2:ResourceTag などの AWS のサービスで使用できます。詳細については、「AWS のサービスのアクション、リソース、および条件キー」を参照してください。

次のサンプル IAM ポリシーは、ユーザーが「テスト」環境にあるインスタンスを開始、停止、および終了することを許可します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowOnlyForTestEnvironment",
      "Effect": "Allow",
      "Action": [
        "ec2:TerminateInstances",
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/Env": "test"
        }
      }
    }
  ]
}

RequestTag 条件キー

ユーザーリクエストで渡されたキーと値のペアを IAM ポリシーで指定されたタグペアと比較するために使用される aws:RequestTag/tag-key 条件キー。条件キーは、リソースを作成し、またはリソースでタグを作成するアクションで使用でき、タグの値をチェックします。

例えば、次の IAM ポリシーを参照してください。Amazon Elastic Block Store (Amazon EBS) ボリュームの作成時に、ユーザーが「Dev」、「Prod」、または「QA」の値を持つ特定のタグ「Env」を作成するように強制します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCreateVolumeWithEnvTag",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/Env": [
            "Dev",
            "Prod",
            "QA"
          ]
        }
      }
    }
  ]
}

TagKeys 条件キー

aws:TagKeys 条件キーは、リクエスト内のタグキーと IAM ポリシーで指定されたキーを比較するために使用されます。TagKeys キーの値は、AWS リソースリクエストのタグのリストと比較されます。TagKeys 条件キーは、リソースにアタッチされたタグキーを検証するために使用されます。

リクエストで複数のタグのキーと値のペアを定義できるため、リクエストは複数の値を持つことができます。これらの値は、ForAllValues または ForAnyValue セット演算子を使用して比較できます。

以下のサンプルポリシーは、AWS リソースに作成されるタグを制限します。「Env」および「CostCenter」タグは、ユーザーが新しい Amazon EBS ボリュームで作成できる唯一のタグキーです。aws:TagKeys とともに ForAllValues セット演算子を使用すると、AWS リソースに必要なタグのみをアタッチするようにユーザーが制限されます。これは、リソース作成リクエストでこれらのタグキーを提供するようユーザーに求めるものではありませんが、ユーザーが他のキーと値のペアを使用してタグを作成できなくなります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "Env",
            "CostCenter"
          ]
        }
      }
    }
  ]
}

関連情報

IAM チュートリアル: タグに基づいて AWS リソースにアクセスするためのアクセス許可を定義する

AWS リクエスト時のアクセスの制御

コメントはありません

関連するコンテンツ