IAM をいつ使用しますか? - AWS Identity and Access Management

IAM をいつ使用しますか?

さまざまな職務を遂行しているとき

AWS Identity and Access Management は、AWS 内部の ID に基づくアクセス制御の基盤を提供するコアインフラストラクチャサービスです。AWS アカウントにアクセスするたびに IAM を使用します。

IAM の用途は、AWS で行う作業によって異なります。

  • サービスユーザー – ジョブを実行するために AWS のサービスを使用する場合は、管理者が必要なアクセス許可と認証情報を用意します。より高度な機能を使用して仕事をするようになると、追加のアクセス許可が必要になる場合があります。アクセスの管理方法を理解すると、管理者から適切な権限をリクエストするのに役に立ちます。

  • サービス管理者 - 社内で AWS リソースを担当している場合は、通常、IAM へのフルアクセスがあります。サービスのユーザーがどの IAM 機能やリソースにアクセスするかを決めるのは、管理者の仕事です。その後、IAM 管理者にリクエストを送信して、サービスユーザーの権限を変更する必要があります。このページの情報を点検して、IAM の基本概念を理解してください。

  • IAM 管理者 – IAM 管理者であれば、IAM ID を管理し、IAM へのアクセスを管理するポリシーを記述できます。

AWS リソースへのアクセスが許可されている場合

認証とは、アイデンティティ認証情報を使用して AWSにサインインする方法です。ユーザーは、AWS アカウントのルートユーザーもしくは IAM ユーザーとして、または IAM ロールを引き受けることによって、認証を受ける (AWS にサインインする) 必要があります。

ID ソースから提供された認証情報を使用して、フェデレーティッドアイデンティティとして AWS にサインインできます。 AWS IAM Identity Centerフェデレーティッドアイデンティティの例としては、(IAM Identity Center) ユーザー、会社のシングルサインオン認証、Google または Facebook の認証情報などがあります。フェデレーティッドアイデンティティとしてサインインする場合、IAM ロールを使用して、前もって管理者により ID フェデレーションが設定されています。フェデレーションを使用して AWSにアクセスする場合、間接的にロールを引き受けることになります。

ユーザーのタイプに応じて、AWS Management Console または AWS アクセスポータルにサインインできます。AWS へのサインインの詳細については、「AWS サインイン User Guide」の「How to sign in to your AWS アカウント」を参照してください。

プログラムで AWS にアクセスする場合、AWS は Software Development Kit (SDK) とコマンドラインインターフェイス (CLI) を提供し、認証情報でリクエストに暗号で署名します。AWS ツールを使用しない場合は、リクエストに自分で署名する必要があります。リクエストに署名する推奨方法の使用については、『IAM ユーザーガイド』の「AWS API リクエストの署名」を参照してください。

使用する認証方法を問わず、追加のセキュリティ情報の提供が求められる場合もあります。例えば、AWS では、アカウントのセキュリティ強化のために多要素認証 (MFA) の使用をお勧めしています。詳細については、「AWS IAM Identity Center User Guide」の「Multi-factor authentication」および「IAM ユーザーガイド」の「AWS での多要素認証 (MFA) の使用」を参照してください。

IAM ユーザーとしてサインインした場合

IAM ユーザーは、1 人のユーザーまたは 1 つのアプリケーションに対して特定の権限を持つ AWS アカウント 内のアイデンティティです。可能であれば、パスワードやアクセスキーなどの長期的な認証情報を保有する IAM ユーザーを作成する代わりに、一時的な認証情報を使用することをお勧めします。ただし、IAM ユーザーでの長期的な認証情報が必要な特定のユースケースがある場合は、アクセスキーをローテーションすることをお勧めします。詳細については、「IAM ユーザーガイド」の「長期的な認証情報を必要とするユースケースのためにアクセスキーを定期的にローテーションする」を参照してください。

IAM グループは、IAM ユーザーの集団を指定するアイデンティティです。グループとしてサインインすることはできません。グループを使用して、複数のユーザーに対して一度に権限を指定できます。多数のユーザーグループがある場合、グループを使用することで権限の管理が容易になります。例えば、IAMAdmins という名前のグループを設定して、そのグループに IAM リソースを管理する権限を与えることができます。

ユーザーは、ロールとは異なります。ユーザーは 1 人の人または 1 つのアプリケーションに一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。ユーザーには永続的な長期の認証情報がありますが、ロールでは一時的な認証情報が提供されます。詳細については、「IAM ユーザーガイド」の「IAM ユーザーの作成が適している場合 (ロールではなく)」を参照してください。

IAM ロールを引き受けるとき

IAM ロールは、特定の権限を持つ、AWS アカウント 内のアイデンティティです。これは IAM ユーザーに似ていますが、特定のユーザーには関連付けられていません。ロールを切り替えることによって、AWS Management Console で IAM ロールを一時的に引き受けることができます。ロールを引き受けるには、AWS CLI または AWS API オペレーションを呼び出すか、カスタム URL を使用します。ロールを使用する方法の詳細については、「IAM ユーザーガイド」の「IAM ロールを使用する」を参照してください。

一時的な認証情報を持った IAM ロールは、以下の状況で役立ちます。

  • フェデレーティッドユーザーアクセス – フェデレーティッドアイデンティティに権限を割り当てるには、ロールを作成してそのロールの権限を定義します。フェデレーティッドアイデンティティが認証されると、そのアイデンティティはロールに関連付けられ、ロールで定義されている権限が付与されます。フェデレーションの詳細については、「IAM ユーザーガイド」の「サードパーティーアイデンティティプロバイダー向けロールの作成」を参照してください。IAM アイデンティティセンターを使用する場合、権限セットを設定します。アイデンティティが認証後にアクセスできるものを制御するため、IAM Identity Center は、権限セットを IAM のロールに関連付けます。権限セットの詳細については、「AWS IAM Identity Center ユーザーガイド」の「権限セット」を参照してください。

  • 一時的な IAM ユーザー権限 - IAM ユーザーまたはロールは、特定のタスクに対して複数の異なる権限を一時的に IAM ロールで引き受けることができます。

  • クロスアカウントアクセス - IAM ロールを使用して、自分のアカウントのリソースにアクセスすることを、別のアカウントの人物 (信頼済みプリンシパル) に許可できます。クロスアカウントアクセス権を付与する主な方法は、ロールを使用することです。ただし、一部の AWS のサービスでは、(ロールをプロキシとして使用する代わりに) リソースにポリシーを直接アタッチできます。クロスアカウントアクセスにおけるロールとリソースベースのポリシーの違いについては、『IAM ユーザーガイド』の「IAM ロールとリソースベースのポリシーとの相違点」を参照してください。

  • クロスサービスアクセス - 一部の AWS のサービスでは、他の AWS のサービスの機能を使用します。例えば、あるサービスで呼び出しを行うと、通常そのサービスによって Amazon EC2 でアプリケーションが実行されたり、Amazon S3 にオブジェクトが保存されたりします。サービスでは、呼び出し元プリンシパルの権限、サービスロール、またはサービスリンクロールを使用してこれを行う場合があります。

    • 転送アクセスセッション (FAS、Forward Access Session) – IAM ユーザーまたはロールを使用して AWS でアクションを実行するユーザーは、プリンシパルと見なされます。一部のサービスを使用する際に、あるアクションを実行することで、別のサービスの別のアクションが開始されることがあります。FAS は、AWS のサービスを呼び出すプリンシパルのアクセス許可を使用し、リクエスト元の AWS のサービスと組み合わせて、ダウンストリームサービスにリクエストを行います。FAS リクエストは、完了するために他の AWS のサービスまたはリソースとのやり取りを必要とするリクエストをサービスが受信した場合にのみ作成されます。この場合、両方のアクションを実行するための権限が必要です。FAS リクエストを行う際のポリシーの詳細については、「転送アクセスセッション」を参照してください。

    • サービスロール - サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロールです。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「IAM ユーザーガイド」の「AWS のサービス に権限を委任するロールの作成」を参照してください。

    • サービスリンクロール - サービスリンクロールは、AWS のサービス にリンクされたサービスロールの一種です。サービスがロールを引き受け、ユーザーに代わってアクションを実行できるようになります。サービスリンクロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスリンクロールの権限を表示できますが、編集することはできません。

  • Amazon EC2 で実行されているアプリケーション - EC2 インスタンスで実行され、AWS CLI または AWS API 要求を行っているアプリケーションの一時的な認証情報を管理するには、IAM ロールを使用できます。これは、EC2 インスタンス内でのアクセスキーの保存に推奨されます。AWS ロールを EC2 インスタンスに割り当て、そのすべてのアプリケーションで使用できるようにするには、インスタンスに添付されたインスタンスプロファイルを作成します。インスタンスプロファイルにはロールが含まれ、EC2 インスタンスで実行されるプログラムは一時的な認証情報を取得できます。詳細については、「IAM ユーザーガイド」の「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用して権限を付与する」を参照してください。

IAM ロールと IAM ユーザーのどちらを使用するかについては、「IAM ユーザーガイド」の「IAM ロールの作成が適している場合 (ユーザーではなく)」を参照してください。

ポリシーと許可を作成するとき

ポリシーを作成することで、ユーザーにアクセス許可を付与します。ポリシーは、ユーザーが実行できるアクションと、それらのアクションが影響を与えることができるリソースを登録したドキュメントです。明示的に許可されていないアクションやリソースはすべて、デフォルトで拒否されます。ポリシーは、プリンシパル (ユーザー、ユーザーグループ、ユーザーが引き受けるロール、およびリソース) に対して作成およびアタッチできます。

これらのポリシーは IAM ロールで使用されます。

  • 信頼ポリシー — どのプリンシパルがどのような条件でロールを引き受けることができるかを定義します。信頼ポリシーは、IAM ロール用の特定のタイプのリソースベースのポリシーです。ロールが持つことが可能な信頼ポリシーは 1 つのみです。

  • ID ベースのポリシー (インラインおよび管理) — これらのポリシーは、ロールのユーザーが実行できる (または実行が拒否される) 権限と、どのリソースに対して実行できるかを定義します。

IAM アイデンティティベースのポリシーの例 を使用して、IAM ID のアクセス許可を定義するのに役立ちます。必要なポリシーを見つけたら、[View this policy (このポリシーを表示)] を選択してそのポリシーの JSON を表示します。JSON のポリシードキュメントをテンプレートとして使用して、独自のポリシーを作成できます。

注記

IAM Identity Center を使用してユーザーを管理している場合は、プリンシパルにアクセス許可ポリシーをアタッチするのではなく IAM ID Center で許可セットを割り当てます。アクセス許可セットをグループまたは AWS IAM アイデンティティセンターのユーザー に割り当てると、IAM Identity Center は、各アカウントに対応する IAM ロールを作成し、アクセス許可セットで指定されたポリシーをそれらのロールにアタッチします。IAM Identity Center がロールを管理し、定義した正規ユーザーがロールを引き受けることを可能にします。アクセス許可セットを変更すると、IAM Identity Center は、対応する IAM ポリシーとロールがそれに応じて更新されることを保証します。

IAM アイデンティティセンターの詳細については、「AWS IAM Identity Center ユーザーガイド」の「What is IAM Identity Center?」(IAM アイデンティティセンターとは) を参照してください。