AWS Identity and Access Management
ユーザーガイド

IAM リソースタグを使用した IAM ユーザーおよびロールへのアクセスとそのユーザーおよびロールのアクセスの制御

次のセクションの情報を使用して、IAM ユーザーおよびロールにアクセスできるユーザーと、ユーザーとロールがアクセスできるリソースを制御します。他の AWS リソースへのアクセスを制御するための一般的な情報と例については、「リソースタグを使用した AWS リソースへのアクセスの制御」を参照してください。

タグは、IAM リソースにアタッチするか、リクエストで渡すか、リクエストを行うプリンシパルにアタッチすることができます。IAM ユーザーまたはロールは、リソースとプリンシパルの両方にすることができます。たとえば、ユーザーのグループを一覧表示することをユーザーに許可するポリシーを記述できます。このオペレーションは、リクエストを行うユーザー (プリンシパル)に、表示しようとしているユーザーと同じ project=blue タグがある場合にのみ許可されます。この例では、ユーザーは、同じプロジェクトで作業している限り、自分自身を含む任意のユーザーのグループメンバーシップを表示できます。

タグに基づいてアクセスを制御するには、ポリシーの条件要素でタグ情報を提供します。IAM ポリシーを作成するときは、IAM タグおよび関連付けられたタグ条件キーを使用して、以下のいずれかへのアクセスを制御できます。

  • リソース – ユーザーまたはロールへのアクセスをそれらのタグに基づいて制御します。これを行うには、iam:ResourceTag/key-name 条件キーを使用して、リソースにアタッチする必要があるタグのキーと値のペアを指定します。ec2:ResourceTag などの同様のサービス固有のキーは、他の AWS リソースで使用されます。詳細については、「AWS リソースへのアクセスの制御」を参照してください。

  • リクエスト – IAM リクエストで渡すことができるタグを制御します。そのためには、aws:RequestTag/key-name 条件キーを使用して、IAM ユーザーまたはロールに対して追加、変更、または削除できるタグを指定します。このキーは、 IAM リソースと他の AWS リソースでも同じ方法で使用されます。詳細については、「AWS リクエスト時のアクセスの制御」を参照してください。

  • プリンシパル – 個人の IAM ユーザーまたはロールにアタッチされたタグに基づき、リクエストを行っている個人 (プリンシパル) が実行できる操作を制御します。そのためには、aws:PrincipalTag/key-name 条件キーを使用して、リクエストを許可する前に、IAM ユーザーまたはロールにアタッチする必要のあるタグを指定します。

  • 認証プロセスの一部aws:TagKeys 条件キーを使用して、特定のタグキーをリソース、リクエスト、プリンシパルで使用できるかどうかを制御します。この場合、キー値は重要ではありません。このキーは、IAM リソースや他の AWS リソースでも同様に動作します。ただし、IAM でユーザーにタグを付けると、これにより、プリンシパルが任意のサービスに対してリクエストを行うことができるかどうかも制御されます。詳細については、「タグキーに基づいたアクセスの制御」を参照してください。

ビジュアルエディタまたは JSON を使用するか、既存の管理ポリシーをインポートして、IAM ポリシーを作成できます。詳細については、「IAM ポリシーの作成」を参照してください。

IAM リソースへのアクセスの制御

IAM ユーザーおよびロールのリソースへのアクセスを制御するには、IAM ポリシーのタグを使用します。ただし、IAM ではグループのタグをサポートしていないため、タグを使用してグループへのアクセスを制御することはできません。

次のようなポリシーを作成する方法を示します。この例では、 を使用することで、status=terminated タグを使用してユーザーを削除することができます。このポリシーを使用するには、ポリシー例の赤の斜体テキストを自分の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:DeleteUser", "Resource": "*", "Condition": {"StringLike": {"iam:ResourceTag/status": "terminated"}} }] }

次のようなポリシーを作成する方法を示します。この例では、 では、jobFunction = employee タグを使用して、すべてのユーザーのタグを編集できます。このポリシーを使用するには、ポリシー例の赤の斜体テキストを自分の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:ListUserTags", "iam:TagUser", "iam:UntagUser" ], "Resource": "*", "Condition": {"StringLike": {"iam:ResourceTag/jobFunction": "employee"}} }] }

IAM リクエスト時のアクセスの制御

IAM ポリシーでタグを使用して、IAM リクエストで渡すことができるタグを制御できます。IAM ユーザーまたはロールで追加、変更、または削除できるタグのキーと値のペアを指定できます。

次のようなポリシーを作成する方法を示します。この例では、 では、department = HR または department = CS タグを使用してのみユーザーにタグ付けすることができます。このポリシーを使用するには、ポリシー例の赤の斜体テキストを自分の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:TagUser", "Resource": "*", "Condition": {"StringLike": {"aws:RequestTag/department": [ "HR", "CS" ]}} }] }

IAM プリンシパルへのアクセスの制御

IAM タグを使用すると、ユーザーのアイデンティティに付けられたタグに基づき、プリンシパルが実行できる操作を制御できます。

次のようなポリシーを作成する方法を示します。この例では、 は、プリンシパルが Amazon EC2 インスタンスを開始または停止することを許可します。このオペレーションは、インスタンスのリソースタグと、プリンシパルのタグのタグキー cost-center の値が同じである場合にのみ許可されます。このポリシーを使用するには、ポリシー例の赤の斜体テキストを自分の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "ec2:startInstances", "ec2:stopInstances" ], "Resource": "*", "Condition": {"StringEquals": {"ec2:ResourceTag/costcenter": "${aws:PrincipalTag/cost-center}"}} } }

タグキーに基づいたアクセスの制御

IAM ポリシーでタグを使用して、リソース、リクエスト、またはプリンシパルで特定のタグキーを使用できるかどうか制御できます。

次のようなポリシーを作成する方法を示します。この例では、 では、ユーザーの temporary キーを使用してタグのみ削除することができます。このポリシーを使用するには、ポリシー例の赤の斜体テキストを自分の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:UntagUser", "Resource": "*", "Condition": {"ForAllValues:StringEquals": {"aws:TagKeys": ["temporary"]}} }] }