リソース作成時にタグ付けするための許可を付与する - Amazon Elastic Container Service

リソース作成時にタグ付けするための許可を付与する

次の作成時のタグ付けの Amazon ECS API アクションを使用すると、リソースの作成時にタグを指定できます。リソース作成アクションでタグが指定されている場合、AWS は追加の認可を実行して、タグを作成するための正しい許可が割り当てられていることを検証します。

  • CreateCapacityProvider

  • CreateCluster

  • CreateService

  • CreateTaskSet

  • RegisterContainerInstance

  • RegisterTaskDefinition

  • RunTask

  • StartTask

リソースタグを使用して、属性ベースの制御 (ABAC) を実装できます。詳細については、リソースタグを使用して Amazon ECS リソースへのアクセスを制御するおよびAmazon ECS リソースにタグ付けするを参照してください。

作成時のタグ付けを許可するには、ポリシーを作成または変更して、ecs:CreateClusterecs:RunTask などのリソースを作成するアクションと ecs:TagResource アクションを使用するための両方の許可を含めます。

次の例は、ユーザーがクラスターを作成し、クラスター作成時にタグを追加できるポリシーを示しています。ユーザーには、既存のリソースへのタグ付けが許可されません (ecs:TagResource アクションを直接呼び出すことはできません)。

{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecs:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": [ "CreateCluster", "CreateCapacityProvider", "CreateService", "CreateTaskSet", "RegisterContainerInstance", "RegisterTaskDefinition", "RunTask", "StartTask" ] } } } ] }

ecs:TagResource アクションは、タグがリソース作成アクション時に適用された場合のみ評価されます。したがって、リクエストでタグが指定されていない場合、リソースを作成するアクセス許可を持っているユーザー (タグ付け条件がないと仮定) には、ecs:TagResource アクションを実行するアクセス許可は必要ありません。ただし、ユーザーがタグを使用してリソースを作成しようとした場合、ユーザーが ecs:TagResource アクションを使用するアクセス許可を持っていない場合はリクエストに失敗します。

特定のタグへの Amazon ECS アクセス制御

IAM ポリシーの Condition 要素で追加の条件を使用して、リソースに適用できるタグキーとタグ値を制御できます。

次の条件キーは、前のセクションの例で使用できます。

  • aws:RequestTag: 特定のタグキーまたはタグキーと値がリクエストに存在している必要があることを指定する場合に使用します。リクエストでは他のタグも指定できます。

    • StringEquals 条件演算子とともに使用して、特定のタグキーと値の組み合わせを適用します。例えば、タグ cost-center=cc123: を適用します。

      "StringEquals": { "aws:RequestTag/cost-center": "cc123" }
    • StringLike 条件演算子とともに使用して、リクエストで特定のタグキーを適用します。例えば、タグキー purpose を適用します。

      "StringLike": { "aws:RequestTag/purpose": "*" }
  • aws:TagKeys: リクエストで使用されるタグキーを適用する場合に使用します。

    • リクエストにタグが指定されている場合は、ForAllValues 修飾子を使用して特定のタグキーのみを適用します (リクエストにタグが指定されている場合、特定のタグキーのみが許可されます。他のタグは許可されません)。例えば、タグキー environment または cost-center が適用されます:

      "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
    • ForAnyValue 修飾子とともに使用して、指定されたタグキーの少なくとも 1 つがリクエストに存在することを要求します。例えば、タグキー environment または webserver のうち少なくとも 1 つがリクエストに存在している必要があります。

      "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }

これらの条件キーは、ecs:TagResource アクションだけでなく、タグ付けをサポートするリソース作成アクションにも適用できます。Amazon ECS API アクションがタグ付けをサポートしているかどうかについては、「Amazon ECS のアクション、リソース、および条件キー」を参照してください。

リソースの作成時にタグを指定するようにユーザーに強制するには、リソース作成アクションで aws:RequestTag 修飾子とともに aws:TagKeys 条件キーまたは ForAnyValue 条件キーを使用する必要があります。ユーザーがリソース作成アクションのタグを指定しない場合、ecs:TagResource アクションは評価されません。

条件においては、条件キーでは大文字と小文字が区別されず、条件値では大文字と小文字が区別されます。したがって、タグキーの大文字と小文字を区別するには、条件の値としてタグキーが指定される aws:TagKeys 条件キーを使用します。

複数値条件の詳細については、IAM ユーザーガイド複数のキーバリューをテストする条件を作成するを参照してください。