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

IAM の詳細を理解します。

ユーザーを作成する前に、IAM の機能を理解しておく必要があります。IAM は、アカウントの認証と許可を制御するために必要なインフラストラクチャを提供します。IAM インフラストラクチャには以下のエレメントが含まれています。


        IntroToIAM_Diagram

Principal

プリンシパルは、AWS リソースに対するアクションまたはオペレーションをリクエストできるエンティティです。ユーザー、ロール、フェデレーティッドユーザー、アプリケーションはすべて AWS プリンシパルです。AWS アカウントのルートユーザー は最初のプリンシパルとなります。ベストプラクティスとして、ルートユーザー は日常業務に使用しないでください。代わりに、IAM ユーザーやロールを作成します。フェデレーティッドユーザーやプログラムによるアクセスをサポートし、AWS アカウントへのアクセスをアプリケーションに許可することもできます。

リクエスト

プリンシパルが AWS マネジメントコンソール、AWS API、または AWS CLI を使用しようとすると、プリンシパルは AWS にリクエストを送信します。リクエストには、以下の情報が含まれます。

  • アクションまたはオペレーション – プリンシパルが実行するアクションまたはオペレーション。AWS マネジメントコンソール ではアクション、AWS CLI や AWS API ではオペレーションです。

  • リソース – アクションまたはオペレーションを実行する対象の AWS リソースオブジェクト。

  • プリンシパル – リクエストの送信元のユーザー、ロール、フェデレーティッドユーザー、またはアプリケーション。プリンシパルに関する情報には、そのプリンシパルに関連付けられたポリシーが含まれます。

  • 環境データ – IP アドレス、ユーザーエージェント、SSL 有効化ステータス、または時刻に関する情報。

  • リソースデータ – リクエストされているリソースに関連するデータ。これには、DynamoDB テーブル名、Amazon EC2 インスタンスのタグなどの情報が含まれる場合があります。

AWS は、リクエスト情報をリクエストコンテキスト内に収集し、リクエストの評価と承認に使用します。

認証

AWS にリクエストを送信するには、プリンシパルとして認証されている (AWS にサインインしている) 必要があります。Amazon S3 や AWS STS などの一部のサービスは、匿名ユーザーからの少数のリクエストを許可しますが、これは例外的です。

コンソールからユーザーとして認証するには、ユーザー名とパスワードでサインインする必要があります。API または AWS CLI から認証するには、アクセスキーとシークレットキーを指定する必要があります。また、追加のセキュリティ情報を提供する必要があります。たとえば、AWS では多要素認証 (MFA) を使用してアカウントのセキュリティを高めることを推奨しています。AWS が認証できる IAM ID の詳細については、「ID (ユーザー、グループ、ロール) 」を参照してください。

承認

承認の際に、AWS はリクエストコンテキストの値に基づいて、リクエストに適用されるポリシーを確認します。次に、ポリシーを使用してリクエストの許可または拒否を決定します。大半のポリシーは JSON ドキュメントとして AWS に保存され、プリンシパルに対して許可または拒否するアクセス許可を指定します。複数のポリシータイプがリクエストの承認/却下に影響する場合があります。これらのポリシータイプは、アクセス許可ポリシーまたはアクセス許可の境界として分類できます。アクセス許可ポリシーは、アタッチ先のオブジェクトのアクセス許可を定義します。アクセス許可ポリシーには、アイデンティティベースのポリシー (最も一般的)、リソースベースのポリシー、および ACL があります。アクセス許可の境界は、ポリシーを使用してプリンシパルに許可されるアクセス許可の上限を設定するためのアドバンスド機能です。この境界は、AWS Organizations 組織に適用するか、IAM ユーザーまたはロールに適用できます。

ユーザーに許可したアクセス許可でユーザー自身のアカウント内の AWS リソースにアクセスする場合は、アイデンティティベースのポリシーのみが必要です。リソースベースのポリシーは、一般的にクロスアカウントアクセスを許可するために使用します。他のポリシータイプはアドバンスド機能であり、慎重に使用する必要があります。

AWS は、リクエストのコンテキストに該当する各ポリシーをチェックします。1 つのポリシーに拒否されたアクションが含まれている場合、AWS はリクエスト全体を拒否し、評価を停止します。このプロセスは明示的な拒否と呼ばれています。リクエストはデフォルトで拒否されるため、AWS では、リクエストのすべての部分が該当するポリシーによって許可された場合に限り、リクエストを承認します。評価論理は以下のルールに基づきます。

  • デフォルトでは、すべてのリクエストが拒否されます。(通常、AWS アカウントのルートユーザー 認証情報を使用したアカウントのリソースに対するリクエストは常に許可されます)。

  • アクセス許可ポリシーの明示的な許可は、このデフォルトに優先します。

  • アクセス許可の境界 (AWS Organizations SCP またはユーザー/ロールの境界) は、この許可に優先します。アクセス許可の境界を適用できる場合、この境界はリクエストを許可する必要があります。それ以外の場合、リクエストは暗黙的に拒否されます。

  • ポリシー内の明示的な拒否は、すべての許可に優先します。

アクションまたはオペレーション

リクエストが認証および承認されると、AWS はリクエストのアクションまたはオペレーションを承認します。オペレーションはサービスによって定義されます。オペレーションは、リソースの表示、作成、編集、削除など、リソースに対して実行できる処理です。たとえば、IAM は、ユーザーリソースに対して、以下のアクションを含む約 40 のアクションをサポートしています。

  • CreateUser

  • DeleteUser

  • GetUser

  • UpdateUser

オペレーションを実行することをプリンシパルに許可するには、プリンシパルまたは対象のリソースに適用されるポリシーに、必要なアクションを含める必要があります。各サービスでサポートされるアクション、リソースタイプ、および条件キーのリストについては、「」を参照してください。

リソース

AWS で承認されたリクエスト内のオペレーションは、アカウント内の関連リソースに対して実行できます。リソースは、サービス内に存在するオブジェクトです。例として、Amazon EC2 インスタンス、IAM ユーザー、Amazon S3 バケットなどがあります。このサービスは、各リソースで実行できる一連のアクションを定義します。関連していないアクションをリソースに対して実行するリクエストを作成すると、そのリクエストは拒否されます。たとえば、IAM ロールの削除をリクエストしても IAM グループリソースを指定すると、そのリクエストは失敗します。アクションの影響を受けるリソースを示す AWS のサービス別の表については、「」を参照してください。