メニュー
AWS Identity and Access Management
ユーザーガイド

所有している別の AWS アカウントへのアクセス権を IAM ユーザーに提供

IAM ユーザーには、AWS アカウント内のロール、または所有する他の AWS アカウントで定義されたロールに切り替えるアクセス権限を付与することができます。

注記

お客様が所有または制御していないアカウントへのアクセス権を付与する場合は、このトピックの「第三者が所有する AWS アカウントへのアクセス権を付与する」を参照してください。

組織の業務に不可欠な Amazon Elastic Compute Cloud(Amazon EC2)インスタンスがあるとします。インスタンスを終了するアクセス権限をユーザーに直接付与する代わりに、それらの権限を持つロールを作成し、インスタンスを終了する必要があるときに管理者がそのロールに切り替えることを許可できます。これにより、インスタンスに次の保護レイヤーが追加されます。

  • ユーザーにロールを引き受けるアクセス権限を明示的に付与する必要があります。

  • ユーザーは AWS マネジメントコンソールを使用して、アクティブにロールを切り替える必要があります。

  • MFA デバイスでサインインしているユーザーのみがロールを引き受けることができるように、ロールに多要素認証 (MFA) 保護を追加できます。

このアプローチを使用して最小限のアクセスの原則を適用することをお勧めします。つまり、昇格されたアクセス権限の使用を、特定のタスクに必要なときのみに制限します。ロールを使用すると、機密性の高い環境が誤って変更されるのを防ぐことができます(特に、ロールが必要なときだけ使用されるように監査と組み合わせている場合)。

この目的でロールを作成する場合、ユーザーがロールの信頼ポリシーの Principal 要素にアクセスする必要のあるアカウントを ID で指定します。その後、その他のアカウントの特定のユーザーに、そのロールに切り替えるためのアクセス権限を付与できます。

あるアカウントのユーザーは、同じアカウントまたは別のアカウントのロールに切り替えることができます。そのロールを使用している間、ユーザーはアクションだけを実行して、ロールによって許可されているリソースのみにアクセスできますが、元のユーザーアクセス権限は停止されます。ユーザーがそのロールを終了すると、元のユーザーのアクセス権限に戻ります。

別の例として、本稼働環境と開発環境を分離するための複数の AWS アカウントが組織に存在するとします。開発用アカウントのユーザーが、本稼働用アカウントのリソースへのアクセスを必要とすることがあります。たとえば、開発環境から本稼働環境に更新を移す場合などです。両方のアカウントで作業するユーザーにそれぞれの ID(およびパスワード)を作成することも可能ですが、複数のアカウントに対する複数の認証情報を管理する必要があり、ID 管理が困難になります。以下の図では、すべてのユーザーは開発用アカウントで管理されていますが、数名の開発者は本稼働用アカウントに制限付きでアクセスする必要があります。開発用アカウントにはテスターと開発者の 2 つのグループがあり、それぞれ個別のポリシーがあります。

 ロールを使用して別のアカウントのユーザーにアクセス権限を委任する
  1. 管理者が本稼働用アカウントで IAM を使用して、このアカウントに UpdateAPP ロールを作成します。ロールでは、管理者は開発用アカウントを Principal として指定する信頼ポリシーを定義します。これは、開発用アカウントの認証されたユーザーが UpdateAPP ロールを使用できることを意味します。管理者は、ロールのアクセス権限ポリシーも定義し、そのロールのユーザーには productionapp という名前の Amazon Simple Storage Service(S3)バケットで読み書きのアクセス権限があることを特定します。

    次に管理者は、ロールのアカウント番号と名前(AWS コンソールユーザーの場合)またはロールの Amazon リソースネーム(ARN)(AWS CLI、Tools for Windows PowerShell、または AWS API アクセスの場合)を、ロールを引き受ける必要があるすべてのユーザーと共有します。ロールの ARN は arn:aws:iam::123456789012:role/UpdateAPP のようになります。これは、ロールの名前が UpdateAPP で、ロールがアカウント番号 123456789012 に作成されたことを意味します。

    注記

    管理者は、ロールを引き受けるユーザーが最初に多要素認証 (MFA) を使用して認証されるように、オプションでロールを設定できます。詳細については、「MFA 保護 API アクセスの設定」を参照してください。

  2. 開発者用アカウントでは、管理者が Developers グループのメンバーにそのロールに切り替えるアクセス権限を付与します。これは、Developers グループに AWS Security Token Service(AWS STS)UpdateAPP ロールの AssumeRole API を呼び出すアクセス権限を付与することで行われます。これにより、開発用アカウントの Developers グループに所属する IAM ユーザーは、本稼働用アカウントの UpdateAPP ロールに切り替えることができます。Developers グループに所属しないの他のユーザーには、そのロールに切り替えるアクセス権限がないため、本稼働用アカウントの S3 バケットにはアクセスできません。

  3. ユーザーは、ロールへの切り替えをリクエストします。

    • AWS コンソール: ユーザーはナビゲーションバーのアカウント名をクリックし、[Switch Role] を選択します。ユーザーは、アカウント ID(またはエイリアス)とロール名を指定します。または、管理者からメールで送信されたリンクをクリックすることもできます。リンクをクリックすると、詳細がすでに入力された [Switch Role] ページに移動します。

    • AWSAPI/Tools for Windows PowerShell/AWS CLI: 開発用アカウントの Developers グループに所属するユーザーが AssumeRole 関数を呼び出し、UpdateAPP ロールの認証情報を取得します。呼び出しの一部として、ユーザーが UpdateAPP ロールの ARN を指定します。Testers グループのユーザーが同じ要求をしても、テスターは UpdateAPP ロールの ARN に対して AssumeRole を呼び出すことは許可されていないため、その要求は拒否されます。

  4. AWS STS が一時的な認証情報を返します。

    • AWS コンソール: AWS STS はリクエストをロールの信頼ポリシーと照合し、そのリクエストが信頼されたエンティティ(開発用アカウント)からであることを確認します。照合の後、AWS STS は AWS コンソールに一時的なセキュリティ認証情報を返します。

    • API/CLI: AWS STS は、リクエストをロールの信頼ポリシーと照合し、信頼されたエンティティ(Development アカウント)からであることを確認します。照合の後、AWS STS はアプリケーションに一時的なセキュリティ認証情報を返します。

  5. 一時的な認証情報により、AWS リソースにアクセスすることができます。

    • AWS コンソール: AWS コンソールは、後続のすべてのコンソールアクション(この場合は、productionapp バケットの読み書き)でユーザーの代わりに一時的な認証情報を使用します。コンソールは、本稼働用アカウントにある他のリソースにはアクセスできません。ユーザーがロールを終了すると、ユーザーのアクセス権限がロールに切り替える前に持っていた元のアクセス権限に戻ります。

    • API/CLI: アプリケーションは、その一時的な認証情報を使用して productionapp バケットを更新します。一時的な認証情報を使用し、アプリケーションは productionapp バケットでのみ読み書きを行うことができますが、生産アカウントにあるその他のリソースにはアクセスできません。アプリケーションは、ロールを終了する必要はありませんが、その代わりに一時的な認証情報の使用を停止し、後続の API 呼び出しで元の認証情報の使用する必要があります。

制御している IAM ユーザーにアクセス権を委任するためのロールの作成について、詳細は「IAM ユーザーにアクセス権限を委任するロールの作成」を参照してください。