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

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

AWS Identity and Access Management (IAM) のアクセス管理では、アカウントでユーザーや他のエンティティに許可する操作を定義します。通常、このプロセスは承認と呼ばれます。アクセス許可は、アクセス許可ポリシーとアクセス許可の境界に分類されます。大半のアクセス許可ポリシーは、AWS の JSON ポリシードキュメントです。アイデンティティやリソースにアタッチして、そのアクセス許可を定義します。アクセス許可の境界は、ポリシーを使用してプリンシパルに許可されるアクセス許可の上限を設定するためのアドバンスド機能です。この境界は、AWS Organizations 組織に適用するか、IAM ユーザーまたはロールに適用できます。 ポリシーのタイプと用途の詳細については、「ポリシーとアクセス許可」を参照してください。

AWS は、ユーザーなどのプリンシパルがリクエストを行ったときに、それらのポリシーを評価します。ポリシーでのアクセス許可により、リクエストが許可されるか拒否されるかが決まります。大半のポリシーは JSON ドキュメントとして AWS に保存されます。

ポリシーとアカウント

AWS で 1 つのアカウントを管理する場合は、ポリシーを使用してそのアカウント内でアクセス許可を定義します。複数のアカウントをまたいでアクセス許可を管理する場合、ユーザーのアクセス許可の管理はより難しくなります。ベストプラクティスとして、これらのアクセス許可の管理に AWS Organizations サービスを使用できます。詳細については、「AWS Organizations とは」 (組織 ユーザーガイド) を参照してください。

ポリシーとユーザー

IAM ユーザーはサービスのアイデンティティです。IAM ユーザーを作成する場合、ユーザーはアクセス許可を付与されるまでアカウントのいずれのリソースにもアクセスできません。ユーザーにアクセス許可を付与するには、アイデンティティベースのポリシーを作成します。これは、ユーザーにアタッチされるポリシーです。次の例で示す JSON ポリシーでは、us-east-2 リージョン内の 123456789012 アカウントの Books テーブルに対してすべての Amazon DynamoDB アクション (dynamodb:*) を実行することをユーザーに許可します。

{ "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 ドキュメントの表示に関する詳細は、「ポリシーによって付与されるアクセス許可について」を参照してください。

ポリシーとグループ

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

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

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

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

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

アイデンティティベースのポリシーとリソースベースのポリシー

アイデンティティベースのポリシーは、IAM ユーザー、グループ、ロールなどのプリンシパル (またはアイデンティティ) にアタッチするアクセス許可ポリシーです。リソースベースのポリシーは、Amazon S3 バケットなどのリソースにアタッチするアクセス許可ポリシーです。

アイデンティティベースのポリシーは、ID が実行できるアクション、リソース、および条件を制御します。アイデンティティベースのポリシーはさらに次のように分類できます。

  • 管理ポリシー – AWS アカウント内の複数のユーザー、グループ、およびロールにアタッチできるスタンドアロンのアイデンティティベースポリシーです。次の 2 種類の管理ポリシーを使用できます。

    • AWS 管理ポリシー – AWS が作成および管理する管理ポリシー。ポリシーを初めて利用する場合は、AWS 管理ポリシーから開始することをお勧めします。

    • カスタマー管理ポリシー – AWS アカウントで作成および管理する管理ポリシー。カスタマー管理ポリシーでは、AWS 管理ポリシーに比べて、より正確にポリシーを管理できます。ビジュアルエディタで IAM ポリシーを作成および編集することも、JSON ポリシードキュメントを直接作成することもできます。詳細については、「IAM ポリシーの作成」および「IAM ポリシーの編集」を参照してください。

  • インラインポリシー – 自身で作成および管理するポリシーで、単一のユーザー、グループ、またはロールに直接埋め込まれています。

リソースベースのポリシーは、指定されたプリンシパルがそのリソースでどのような条件下でアクションを実行できるかを制御します。リソースベースのポリシーはインラインポリシーであり、管理リソースベースのポリシーはありません。

IAM ID は技術的には AWS リソースですが、IAM IDにリソースベースのポリシーをアタッチすることはできません。IAM でアイデンティティベースのポリシーを使用する必要があります。リソースベースのポリシーをサポートするサービスを確認するには、「IAM と連携する AWS サービス」を参照してください。リソースベースのポリシーの詳細については、「アイデンティティベースおよびリソースベースのポリシー」を参照してください。

信頼ポリシーは、ロールにアタッチするリソースベースのポリシーです。この種のポリシーは、ロールを引き受けるプリンシパルを定義します。IAM でロールを作成する場合、ロールには信頼ポリシーとアクセス許可ポリシーの両方が必要です。信頼ポリシーは、ロールを引き受けるユーザーを指定します。アクセス許可ポリシーは、このロールで何ができるかを指定します。信頼されたエンティティがロールを引き受けることができるのは、アカウントの管理者からロールを引き受けるアクセス許可を付与された場合に限ります。詳細については、「ロールを切り替えるユーザーアクセス権限の付与」を参照してください。