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

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

AWS Identity and Access Management の "アクセス管理" の側面は、"私のアカウントでユーザーが実行を許可されているアクションは何か" という質問に答えるために役立ち、承認と呼ばれることがよくあります。IAM でアクセス許可を付与するための基本的なツールがポリシーです。

ポリシーとユーザー

デフォルトでは、ユーザーはお客様のアカウントのいずれのリソースにもアクセスできません。ポリシーを作成することで、ユーザーにアクセス許可を付与します。ポリシーは、ユーザーが実行できるアクションと、アクションが影響を与えることができるリソースを登録したドキュメントです。以下に示しているのはポリシーの例です。

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

このポリシーは、アカウント 123456789012 の Books テーブルに対してすべての DynamoDB アクション(dynamodb:*)を実行するためのアクセス許可を付与します。このポリシーをユーザーにアタッチすると、そのユーザーは DynamoDB へのそれらのアクセス許可を持つことになります。一般的に、アカウントのユーザーにはさまざまなポリシーがアタッチされています。ポリシーは、ユーザーが AWS アカウントで作業するために必要なアクセス許可を表します。

明示的に許可されていないアクションやリソースはすべて、デフォルトで拒否されます。たとえば、これがユーザーにアタッチされている唯一のポリシーである場合、ユーザーは別のテーブルに対して DynamoDB アクションを実行することはできません。同様に、そのユーザーは Amazon EC2、Amazon S3 などの 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 ユーザーからのみアクセス可能であることを示しています。