アクセス管理の概要: アクセス許可とポリシー - AWS Identity and Access Management

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

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

ポリシーとアカウント

AWS で 1 つのアカウントを管理する場合は、ポリシーを使用してそのアカウント内でアクセス許可を定義します。複数のアカウントをまたいでアクセス許可を管理する場合、ユーザーのアクセス許可の管理はより難しくなります。IAM ロール、リソースベースのポリシー、アクセスコントロールリスト (ACL) はクロスアカウントのアクセス許可で使用できます。ただし、複数のアカウントを所有している場合は、このようなアクセス許可を管理しやすいように AWS Organizations サービスを使用することをお勧めします。詳細については、Organizations ユーザーガイドの「AWS Organizations とは」を参照してください。

ポリシーとユーザー

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

{ "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 グループにまとめ、そのグループにポリシーをアタッチできます。その場合、個々のユーザーは、まだ独自の認証情報を持っていますが、そのグループのすべてのユーザーは、グループにアタッチされているアクセス許可を持っています。アクセス許可の管理を簡素化するため、また「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 のサービス」を参照してください。 リソースベースのポリシーの詳細については、「アイデンティティベースおよびリソースベースのポリシー」を参照してください。