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

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

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

ポリシーとユーザー

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

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

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

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

AWS マネジメントコンソール の IAM ユーザー詳細ページには、ユーザーにアタッチされているポリシー内の各サービスに対して定義されているアクション、リソース、条件を要約したテーブルが含まれています。

たとえば、前のポリシーは 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 ユーザーからのみアクセス可能であることを示しています。