メニュー
AWS Identity and Access Management
ユーザーガイド

アクセス管理の概要: アクセス許可とポリシー

AWS Identity and Access Management (IAM) のアクセス管理部分は、ユーザーまたは他のエンティティがアカウントで行うことが許可されているものを定義するのに役立ちます。これはしばしば承認と呼ばれます。アクセス権限は、作成され、ユーザー、グループ、ロールに関連付けられたポリシーを通じて付与されます。

ポリシーとユーザー

デフォルトでは、IAM ユーザーはお客様のアカウントのいずれのリソースにもアクセスできません。効果、アクション、リソース、オプションの条件を定義するドキュメントであるポリシーを作成して、ユーザーにアクセス許可を与えます。以下の例では、us-east-2 リージョン内のアカウント 123456789012 の Books テーブルで、Amazon DynamoDB アクション (dynamodb:*) を実行するアクセス権限を付与するポリシーを示しています。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-east-2:123456789012:table/Books" } }

ユーザー、グループ、ロールにポリシーをアタッチすると、IAM エンティティは DynamoDB アクセス許可を持つことになります。通常、アカウントのユーザーが、そのユーザーのアクセス許可を表す複数のポリシーを持っています。

明示的に許可されていないアクションやリソースはすべて、デフォルトで拒否されます。たとえば、上述のポリシーがユーザーにアタッチされている唯一のポリシーである場合、そのユーザーは Books テーブルでのみ DynamoDB アクションを実行できます。他のすべてのテーブルでのアクションは禁止されます。同様に、そのユーザーは Amazon EC2、Amazon S3 などの AWS サービスでいずれのアクションも実行できません。これらのサービスで使用するアクセス許可がポリシーに含まれていないためです。

IAM コンソールには、ポリシー内の各サービスに対して許可または拒否されるアクセスレベル、リソース、条件を定義するポリシー概要テーブルが含まれます。ポリシーは、ポリシー概要サービス概要アクション概要の 3 つのテーブルにまとめられています。ポリシー概要テーブルには、サービスのリストが含まれます。そのリストからサービスを選択して、サービス概要を表示します。この概要テーブルには、選択したサービスに対して定義されているアクションとその関連するアクセス権限のリストが含まれます。そのテーブルからアクションを選択して、アクション概要を表示できます。このテーブルには、選択したアクションのリソースと条件のリストが含まれます。

 3 つのテーブルとそれらの関係を示すポリシー概要の図

そのユーザーにアタッチされているすべてのポリシー (管理およびインライン) について、[Users] ページでポリシー概要を表示できます。すべての管理ポリシーについて、[Policies] ページで概要を表示します。

たとえば、前のポリシーは AWS マネジメントコンソール で以下のように要約されます。

DynamoDB のサンプル概要

ポリシーの JSON ドキュメントも表示できます。概要や JSON ドキュメントの表示に関する詳細は、「AWS マネジメントコンソール のポリシー概要を理解する」を参照してください。

ポリシーとグループ

IAM ユーザーを IAM グループにまとめ、そのグループにポリシーをアタッチできます。その場合、個々のユーザーは、まだ独自の認証情報を持っていますが、そのグループのすべてのユーザーは、グループにアタッチされているアクセス許可を持っています。アクセス許可の管理を簡素化するため、また「IAM のベストプラクティス」に従うために、グループを使用します。

 ユーザーをグループにまとめると、アクセス許可の管理を簡素化できます。ユーザーはグループに割り当てられたアクセス許可を持つようになるためです。

ユーザーまたはグループには、さまざまなアクセス許可を付与する複数のポリシーをアタッチできます。その場合、ユーザーのアクセス許可はポリシーの組み合わせに基づいて評価されます。この場合もやはり、基本的な原則が適用されます。ユーザーにアクションとリソースへの明示的にアクセス許可が付与されていない場合、そのユーザーにはそれらのアクセス許可はありません。

フェデレーションユーザーとロール

フェデレーションユーザーは、IAM ユーザーとは異なり、AWS アカウントに永続的な ID を持っていません。フェデレーションユーザーにアクセス許可を割り当てるには、ロールと呼ばれるエンティティを作成し、ロールのアクセス許可を定義できます。フェデレーションユーザーが AWS にサインインすると、そのユーザーはロールに関連付けられ、ロールで定義されているアクセス許可が付与されます。詳細については、「サードパーティの ID プロバイダー(フェデレーション)用のロールの作成」を参照してください。

ユーザーベースとリソースベースのポリシー

前の例では、ユーザーまたはグループにアタッチできるポリシーについて説明しました。そのようなユーザー用にポリシーを作成するときは、許可されるアクションと、ユーザーがアクセスを許可されるリソース (EC2 インスタンス、RDS データベースなど) を指定します。

場合によって、ユーザーまたはグループに加えてリソースにも、ポリシーをアタッチできます。たとえば、Amazon S3 では、バケットにポリシーをアタッチできます。リソースベースのポリシーには、ユーザーベースのポリシーとは若干異なる情報が含まれます。リソースベースのポリシーでは、許可されるアクションと、影響を受けるリソースを指定します(ユーザーベースのポリシーと同様)。ただし、リソースへのアクセスが許可されるユーザーも明示的に登録します(ユーザーベースのポリシーでは、リソースへのアクセスが許可されるユーザーは、ポリシーがアタッチされているユーザーになります)。

以下の例に示しているのは、AWS アカウント 777788889999 の bob という名前の IAM ユーザーが、example-bucket という名前のバケットにオブジェクトを配置することを許可する、S3 バケットポリシーです。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::777788889999:user/bob"}, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::example-bucket/*" } }

リソースベースのポリシーには、アクセス許可が付与されているユーザーを指定する Principal エレメントが含まれています。前の例では、Principal 要素が、AWS アカウント 777788889999 の bob という IAM ユーザーの Amazon リソースネーム (ARN) に設定されています。これは、リソース (この場合は S3 バケット) にその IAM ユーザーはアクセスできるが、他のユーザーはアクセスできないことを示します。