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

IAM タグを使用したアクセス制御

IAM タグを使用して、キー – 値のペアの形式でカスタム属性をユーザーまたはロールに追加できます。IAM タグの詳細については、「IAM エンティティのタグ付け」を参照してください。AWS のアクセス許可を制御するには、タグを使用します。つまり、ユーザーやロールが実行できること、またはユーザーやロールのリソースに対して実行できることを制御できます。

タグを使用してアクセスを制御するには、AWS がアクセスを許可する方法を理解する必要があります。AWS はリソースの集合で構成されています。IAM ユーザーはリソースです。Amazon S3 バケットはリソースです。AWS API、AWS CLI、または AWS マネジメントコンソール を使用してオペレーション (ユーザーの作成など) を実行する場合、このオペレーションに対するリクエストを送信します。リクエストでは、アクション、リソース、プリンシパルエンティティ (ユーザーまたはロール)、プリンシパルアカウント、および必要なリクエスト情報を指定します。これらのすべての情報により、コンテキストが提供されます。

次に、AWS はユーザー (プリンシパルエンティティ) が認証され (サインイン済み)、指定されたリソースで指定されたアクションの実行が許可されている (アクセス許可がある) ことを確認します。認可時、AWS は、リクエストのコンテキストに該当するすべてのポリシーをチェックします。通常、ポリシーは JSON ドキュメントとして AWS に保存され、プリンシパルエンティティのアクセス許可を指定します。ポリシーのタイプと用途の詳細については、「ポリシーとアクセス許可」を参照してください。

AWS は、リクエストの各部分がポリシーで許可されている場合のみ、リクエストを許可します。図を表示して IAM インフラストラクチャの詳細について学習するには、「IAM の詳細を理解します。」を参照してください。IAM でリクエストを承認するかどうかの決定方法の詳細については、「ポリシーの評価論理」を参照してください。

タグは、リソースにアタッチするか、リクエストで渡すか、リクエストを行うプリンシパルにアタッチすることができるため、このプロセスはタグによって複雑になる場合があります。タグに基づいてアクセスを制御するには、ポリシーの条件要素でタグ情報を提供します。

IAM ポリシーを作成するときは、IAM タグと、アクセスを制御するタグ条件キーを使用して、以下のいずれかの操作を実行できます。

  • リソース – それらのリソースのタグに基づいて、ユーザーまたはロールへのアクセスを制御します。これを行うには、iam:ResourceTag/key-name 条件キーを使用して、リソースにアタッチされたタグに基づいて IAM リソースへのアクセスを許可するかどうかを決定します。

  • リクエスト – IAM リクエストに渡すことができるタグを制御します。そのためには、aws:RequestTag/key-name 条件キーを使用して、IAM ユーザーまたはロールに対して追加、変更、または削除できるタグを指定します。

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

  • 認証プロセスの一部aws:TagKeys 条件キーを使用して、特定のタグキーをリソース、リクエスト、プリンシパルで使用できるかどうかを制御します。この場合、値は重要ではありません。

JSON を使用するか、既存の管理ポリシーをインポートして、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 ユーザーまたはロールに対して追加、変更、削除できるタグを制御できます。

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

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

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

ユーザーのアイデンティティに付けられたタグに基づき、IAM ポリシーでタグを使用して、リクエストを行っているユーザー (プリンシパル) が実行できる操作を制御します。

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:*", "Resource": "*", "Condition": {"StringEquals": {"aws:PrincipalTag/tagManager": "true"}} } ] }

タグキーを使用したアクセス制御

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

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

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