リソース作成時にタグ付けするための許可を付与する
次の作成時のタグ付けの Amazon ECS API アクションを使用すると、リソースの作成時にタグを指定できます。リソース作成アクションでタグが指定されている場合、AWS は追加の認可を実行して、タグを作成するための正しい許可が割り当てられていることを検証します。
-
CreateCapacityProvider
-
CreateCluster
-
CreateService
-
CreateTaskSet
-
RegisterContainerInstance
-
RegisterTaskDefinition
-
RunTask
-
StartTask
リソースタグを使用して、属性ベースの制御 (ABAC) を実装できます。詳細については、リソースタグを使用して Amazon ECS リソースへのアクセスを制御するおよびAmazon ECS リソースにタグ付けするを参照してください。
作成時のタグ付けを許可するには、ポリシーを作成または変更して、ecs:CreateCluster
や ecs: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 ユーザーガイド」の「複数のコンテキストキーまたは値による条件」を参照してください。