スキップしてコンテンツを表示

PrincipalTag、ResourceTag、RequestTag、TagKeys 条件キーは IAM ポリシーのアクセスをどのように制御しますか。

所要時間2分
0

AWS Identity and Access Management (IAM) ポリシーで、PrincipalTag、ResourceTag、RequestTag、TagKeys のタグベースの条件キーを使用して AWS リソースへのアクセスを制御したいです。

解決策

以下の IAM ポリシー例では、条件キーを使用して、AWS リソースへのアクセスをタグに基づいて制御しています。

実行できる API アクションを決定するには、使用しているサービスの API ドキュメントを確認するのがベストプラクティスです。

PrincipalTag 条件キー

aws:PrincipalTag/Tag-Key 条件キーを使用して次のタグを比較します。

  • リクエストを行うプリンシパルにアタッチされているタグ
  • IAM ポリシーで指定するタグ

次の例における Amazon Simple Storage Service (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 リソースへのアクセスの制御」を参照してください。

条件キー aws:ResourceTag/Tag-Key は、グローバルバージョンの aws:ResourceTagec2:ResourceTag などの AWS サービスで使用できます。

次の例では、IAM ポリシーにより、ユーザーはテスト環境にある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動、停止、終了できます。

{
  "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 条件キー

aws: RequestTag/tag-key 条件キーを使用して、ユーザーリクエスト内のキーと値のペアを IAM ポリシーで指定されたタグペアと比較します。この条件キーを使用して、リソースを作成するアクションを制御し、これらの操作中にタグを検証できます。

次の例では、IAM ポリシーによりユーザーが Amazon Elastic Block Store (Amazon EBS) ボリュームを作成できるのは、Env タグが DevProdQA のいずれかを含む場合のみです。

{
  "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"
          ]
        }
      }
    }
  ]
}

TagKey 条件キー

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

リクエストに複数のキーと値のペアが含まれている場合、ForAllValues または ForAnyValue 集合演算子を使用してこれらの値を比較します。

次の例では、IAM ポリシーが AWS リソースでのタグ作成を制限しています。これにより、ユーザーは新しい Amazon EBS ボリュームを作成するときに、Env タグと CostCenter タグのみを作成できます。ForAllValues 集合演算子と aws:TagKeys 条件キーにより、ユーザーは必要なタグを 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公式更新しました 1ヶ月前
コメントはありません

関連するコンテンツ