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

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

AWS Identity and Access Management (IAM) のアクセス管理では、アカウントでプリンシパルエンティティに許可する操作を定義します。プリンシパルエンティティとは、IAM エンティティ (ユーザーまたはロール) を使用して認証されているユーザーまたはアプリケーションを指します。アクセス管理は、認可と呼ばれることもあります。AWS でのアクセスを管理するには、ポリシーを作成し、IAM アイデンティティ (ユーザー、ユーザーのグループ、ロール) または AWS リソースにアタッチします。ポリシーは AWS のオブジェクトであり、アイデンティティやリソースに関連付けて、これらのアクセス許可を定義します。AWS は、プリンシパルが IAM エンティティ (ユーザーまたはロール) を使用してリクエストを行うと、それらのポリシーを評価します。ポリシーでのアクセス許可により、リクエストが許可されるか拒否されるかが決まります。大半のポリシーは JSON ドキュメントとして AWS に保存されます。ポリシーのタイプと用途の詳細については、「ポリシーとアクセス許可」を参照してください。

ポリシーとアカウント

AWS で 1 つのアカウントを管理する場合は、ポリシーを使用してそのアカウント内でアクセス許可を定義します。複数のアカウントをまたいでアクセス許可を管理する場合、ユーザーのアクセス許可の管理はより難しくなります。IAM ロール、リソースベースのポリシー、アクセスコントロールリスト (ACL) はクロスアカウントのアクセス許可で使用できます。ただし、複数のアカウントを所有している場合は、このようなアクセス許可を管理しやすいように 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 つのテーブルとそれらの関係を示すポリシー概要の図

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

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


        DynamoDB のサンプル概要

ポリシーの JSON ドキュメントも表示できます。概要や JSON ドキュメントの表示に関する詳細は、「ポリシーによって付与されるアクセス許可について」を参照してください。

ポリシーとグループ

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


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

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

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

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

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

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

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

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

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

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

  • インラインポリシー – お客様が作成および管理するポリシーであり、単一のユーザー、グループ、またはロールに直接埋め込まれます。通常、インラインポリシーを使用することは推奨されていません。

リソースベースのポリシーでは、指定されたプリンシパルが実行できるリソースと条件を制御します。リソースベースのポリシーはインラインポリシーであり、管理リソースベースのポリシーはありません。クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。

IAM サービスは、ロールの信頼ポリシーと呼ばれるリソースベースのポリシーのタイプを 1 つのみサポートします。これが、IAM ロールにアタッチされています。IAM ロールは、リソースベースのポリシーをサポートするアイデンティティかつリソースであるため、信頼ポリシーとアイデンティティベースのポリシーのいずれも IAM ロールにアタッチする必要があります。信頼ポリシーでは、ロールを引き受けることができるプリンシパルエンティティ (アカウント、ユーザー、ロール、フェデレーティッドユーザー) を定義します。IAM ロールと、他のリソースベースのポリシーとの違いについては、「IAM ロールとリソースベースのポリシーとの相違点」を参照してください。

リソースベースのポリシーをサポートするサービスを確認するには、「IAM と連携する AWS のサービス」を参照してください。リソースベースのポリシーの詳細については、「アイデンティティベースおよびリソースベースのポリシー」を参照してください。