IAM の仕組みについて - AWS Identity and Access Management

IAM の仕組みについて

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


      IntroToIAM_Diagram

規約

IAM の用語について説明します。

リソース

IAM に保存されているユーザー、グループ、ロール、ポリシー、および ID プロバイダー。AWS サービスと同様に、IAM のリソースを追加、編集、削除することができます。

ID

識別し、グループ化するために使用される IAM リソースオブジェクト。IAM ユーザーにポリシーをアタッチすることができます。ユーザー、グループ、およびロールなどがあります。

エンティティ

AWS によって認証に使用される IAM リソースオブジェクト。たとえば、IAM ユーザー、フェデレーションユーザー、引き受ける IAM ロールです。

プリンシパル

AWS にサインインし、リクエストを作成するために AWS アカウントのルートユーザー、IAM ユーザー、または IAM ロールを使用する人またはアプリケーション。

プリンシパル

プリンシパルは、AWS リソースのアクションまたはオペレーションに対してリクエストできるユーザーまたはアプリケーションを指します。プリンシパルは、AWS アカウントのルートユーザー または IAM エンティティとして認証され、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 などの一部のサービスは、匿名ユーザーからの少数のリクエストを許可します。ただし、これは例外的です。

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

承認

また、リクエストを完了する権限がある (許可されている) 必要があります。承認の際に、AWS はリクエストコンテキストの値に基づいて、リクエストに適用されるポリシーを確認します。次に、ポリシーを使用してリクエストの許可または拒否を決定します。通常、ポリシーは JSON ドキュメントとして AWS に保存され、プリンシパルエンティティのアクセス許可を指定します。複数のポリシータイプがリクエストの承認/却下に影響する場合があります。ユーザーに許可したアクセス許可でユーザー自身のアカウント内の AWS リソースにアクセスする場合は、アイデンティティベースのポリシーのみが必要です。リソースベースのポリシーは、一般的にクロスアカウントアクセスを許可するために使用します。他のポリシータイプはアドバンスド機能であり、慎重に使用する必要があります。

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

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

  • アクセス許可ポリシー (アイデンティティベースまたはリソースベース) に明示的な許可が含まれている場合、このデフォルト設定は上書きされます。

  • Organizations SCP、IAM アクセス許可の境界、またはセッションポリシーがある場合、その許可は上書きされます。上記のポリシータイプが 1 つ以上存在する場合は、そのすべてにおいてリクエストが許可されている必要があります。それ以外の場合、リクエストは暗黙的に拒否されます。

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

すべてのタイプのポリシーの評価方法については、「ポリシーの評価論理」を参照してください。別のアカウントでリクエストを作成する必要がある場合は、他のアカウントのポリシーでリソースへのアクセスを許可する必要があります。また、リクエストを作成するために使用する IAM エンティティには、リクエストを許可するアイデンティティベースのポリシーが必要です。

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

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

  • CreateUser

  • DeleteUser

  • GetUser

  • UpdateUser

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

リソース

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