のタグを使用した属性ベースのアクセスコントロール AWS Organizations - AWS Organizations

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

のタグを使用した属性ベースのアクセスコントロール AWS Organizations

属性ベースのアクセスコントロールを使用すると、両方の にアタッチされたタグなどの管理者管理属性を使用できます。 AWS リソースと AWS これらのリソースへのアクセスを制御する ID。例えば、ユーザーとリソースの両方に特定のタグの同じ値がアタッチされている場合には、ユーザーがリソースにアクセスできるように指定できます。

AWS Organizations タグ付け可能なリソースには以下が含まれます。 AWS アカウント、組織のルート、組織単位 (OUs)、またはポリシー。Organizations リソースにタグをアタッチすると、そのタグを使用して、それらのリソースにアクセスできるユーザーを制御できます。これを行うには、 に Condition要素を追加します。 AWS Identity and Access Management (IAM) アクションを許可する前に、特定のタグキーと値が存在するかどうかをチェックするアクセス許可ポリシーステートメント。これにより、「キー X と値 を持つタグOUsを持つユーザーのみの管理をユーザーに許可するY」または「ユーザーがアタッチされたOUsタグキー と同じ値を持つキー を持つタグを持つユーザーのみの管理をユーザーに許可Zする」という IAMポリシーを作成できますZ

IAM ポリシーのさまざまなタイプのタグ参照に基づいてConditionテストを行うことができます。

ポリシーでのアクセスコントロールにタグを使用する方法の詳細については、「リソースタグ を使用したIAMユーザーとロールへのアクセスとアクセスの制御」を参照してください。アクセスIAM許可ポリシーの完全な構文については、「 ポリシーIAMリファレンスJSON」を参照してください。

リクエストによって指定されたリソースにアタッチされたタグのチェック

を使用してリクエストを行う場合 AWS Management Console、 AWS Command Line Interface (AWS CLI)、または のいずれか AWS SDKs、そのリクエストでアクセスするリソースを指定します。利用可能な特定のタイプのリソースの一覧表示、リソースの読み取り、リソースの書き込み、変更、更新のいずれかを行う場合は、アクセスするリソースをリクエストのパラメータとして指定します。このようなリクエストは、ユーザーとロールにアタッチするIAMアクセス許可ポリシーによって制御されます。これらのポリシーでは、リクエストされたリソースにアタッチされているタグを比較し、それらのタグのキーと値に応じてアクセスを許可または拒否できます。

リソースにアタッチされているタグを確認するには、タグキー名の前に aws:ResourceTag/ という文字列を付けて、Condition 要素内のタグを参照します。

例えば、次のサンプルポリシーでは、ユーザーまたはロールが任意の を実行することを許可します。 AWS Organizations オペレーション。ただし、そのリソースにキー departmentと値 を持つタグが付いていない限りますsecurity。そのキーと値が存在する場合、ポリシーによって 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) が、オペレーションを呼び出すプリンシパルと、オペレーションによってアクセスされるリソースの両方に同じ値が含まれる場合にのみ、アクションを許可する方法について説明します。この例では、呼び出し元ユーザーは、EC2インスタンスにユーザーと同じcost-center値がタグ付けされている場合にのみ、Amazon インスタンスを開始および停止できます。

{ "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 要素内のタグを参照し、含まれるべきタグの値を指定します。

例えば、次のサンプルポリシーは、ユーザーまたはロールによる の作成リクエストを拒否します。 AWS アカウント リクエストに costcenter タグが欠落しているか、、1、または 以外の値でそのタグを提供します23

{ "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」を参照してください。