翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Organizationsのタグによる属性ベースのアクセスコントロール
属性ベースのアクセスコントロールを使用すると、 AWS リソースと ID AWS の両方にアタッチされたタグなどの管理者管理属性を使用して、それらのリソースへのアクセスを制御できます。例えば、ユーザーとリソースの両方に特定のタグの同じ値がアタッチされている場合には、ユーザーがリソースにアクセスできるように指定できます。
AWS Organizations タグ付け可能なリソースには AWS アカウント、組織のルート、組織単位 (OUs)、ポリシーなどがあります。Organizations リソースにタグをアタッチすると、そのタグを使用して、それらのリソースにアクセスできるユーザーを制御できます。これを行うには、アクションを許可する前に特定のタグキーと値が存在するかどうかを確認する Condition
要素を AWS Identity and Access Management (IAM) アクセス許可ポリシーステートメントに追加します。これにより、「キー X
と値 Y
を含むタグがアタッチされた OU のみの管理をユーザに許可する」または「ユーザにアタッチされたタグキー Z
と同じ値を含むキー Z
でタグ付けされた OU のみの管理をユーザに許可する」という効果的な IAM ポリシーを作成することができます。
IAM ポリシーのさまざまなタイプのタグリファレンスに基づいて Condition
テストを行うことができます。
ポリシーによるアクセスコントロールでタグを使用する方法の詳細については、「リソースタグを使用した IAM ユーザーおよびロールへのアクセスのコントロール」を参照してください。IAM アクセス許可ポリシーの完全な構文については、「IAM JSON ポリシーリファレンス」を参照してください。
リクエストによって指定されたリソースにアタッチされたタグのチェック
AWS Management Console、 AWS Command Line Interface (AWS CLI)、またはいずれかの AWS SDKs を使用してリクエストを行うときは、そのリクエストでアクセスするリソースを指定します。利用可能な特定のタイプのリソースの一覧表示、リソースの読み取り、リソースの書き込み、変更、更新のいずれかを行う場合は、アクセスするリソースをリクエストのパラメータとして指定します。これらのリクエストは、ユーザーとロールにアタッチする IAM アクセス許可ポリシーによって制御されます。これらのポリシーでは、リクエストされたリソースにアタッチされているタグを比較し、それらのタグのキーと値に応じてアクセスを許可または拒否できます。
リソースにアタッチされているタグを確認するには、タグキー名の前に aws:ResourceTag/
という文字列を付けて、Condition
要素内のタグを参照します。
例えば、以下のポリシー例では、リソースにキー department
と値 security
のタグがアタッチされない限り、ユーザーまたはロールはすべての AWS Organizations オペレーションを実行することができます。そのキーと値が存在する場合、ポリシーによって UntagResource
オペレーションが明示的に拒否されます。
{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "organizations:*", "Resource" : "*" }, { "Effect" : "Deny", "Action" : "organizations:UntagResource", "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceTag/department" : "security" } } } ] }
この要素の使用方法の詳細については、IAM ユーザーガイドの「リソースへのアクセスのコントロール」および「aws:ResourceTag」を参照してください。
リクエストを行う IAM ユーザーまたはロールにアタッチされているタグを確認する
リクエストを行うユーザー (プリンシパル) が実行できるオペレーションを、そのユーザーの IAM ユーザーまたはロールにアタッチされたタグに応じて制御できます。これを行うには、aws:PrincipalTag/
条件キーを使用して、呼び出し元のユーザーまたはロールにアタッチする必要のあるタグと値を指定します。key-name
次の例では、指定されたタグ (cost-center
) が、オペレーションを呼び出すプリンシパルと、オペレーションによってアクセスされるリソースの両方に同じ値が含まれる場合にのみ、アクションを許可する方法について説明します。この例では、呼び出し元ユーザーは、インスタンスにユーザーと同じ cost-center
値がタグ付けされている場合にのみ、Amazon EC2 インスタンスを開始および停止できます。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "ec2:startInstances", "ec2:stopInstances" ], "Resource": "*", "Condition": {"StringEquals": {"ec2:ResourceTag/cost-center": "${aws:PrincipalTag/cost-center}"}} } }
この要素の使用方法の詳細については、IAM ユーザーガイドの「IAM プリンシパルのアクセスのコントロール」および「aws:PrincipalTag
」を参照してください。
リクエストのパラメータとして含まれているタグをチェックする
いくつかのオペレーションでは、リクエストの一部としてタグを指定できます。例えば、リソースを作成する際に、新しいリソースにアタッチされるタグを指定できます。aws:TagKeys
を使用する Condition
要素を指定し、特定のタグキーまたはキーのセットがリクエストに含まれているかどうかによって、オペレーションを許可または拒否できます。この比較演算子では、タグにどのような値が含まれていても問題ありません。指定されたキーのタグが存在するかどうかだけがチェックされます。
タグキーまたはキーのリストを確認するには、次の構文で Condition
要素を指定します。
"aws:TagKeys": [ "tag-key-1", "tag-key-2", ... , "tag-key-n" ]
比較演算子の前に ForAllValues:
を使用することで、リクエストに含まれるすべてのキーが、ポリシーで指定されたキーの 1 つと確実に一致しているかどうかを確認できます。例えば次のポリシー例では、リクエストに存在するすべてのタグがこのポリシー内の 3 つのタグのサブセットである場合にのみ、Organizations のすべてのオペレーションが許可されます。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "organizations:*", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "department", "costcenter", "manager" ] } } } }
あるいは、ForAnyValue:
を比較演算子の前に記述して使用し、リクエスト内の少なくとも 1 つのキーが、ポリシーで指定されたキーの 1 つと確実に一致しているかどうかを確認できます。例えば、次のポリシーでは、指定されたタグキーの少なくとも 1 つがリクエスト内に存在する場合にのみ、Organizations のオペレーションを許可します。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "organizations:*", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "stage", "region", "domain" ] } } } }
複数のオペレーションによって、リクエストのタグを指定できます。例えば、リソースを作成する際に、新しいリソースにアタッチされるタグを指定できます。ポリシー内のタグキーと値のペアと、リクエストに含まれるキーと値のペアを比較できます。これを行うには、タグのキー名の前に aws:RequestTag/
という文字列を付けて key-name
Condition
要素内のタグを参照し、含まれるべきタグの値を指定します。
たとえば、次のサンプルポリシーでは、リクエストに costcenter
タグが欠落 AWS アカウント している を作成するユーザーまたはロールによるリクエストを拒否するか、そのタグに 1
、、2
または 以外の値を提供します3
。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "organizations:CreateAccount", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/costcenter": "true" } } }, { "Effect": "Deny", "Action": "organizations:CreateAccount", "Resource": "*", "Condition": { "ForAnyValue:StringNotEquals": { "aws:RequestTag/costcenter": [ "1", "2", "3" ] } } } ] }
これらの要素を使用する方法の詳細については、IAM ユーザーガイドの「aws:TagKeys」および「aws:RequestTag」を参照してください。