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

IAM ユーザーにアクセス権限を委任するロールの作成

IAM ロールを使用することで、お客様の AWS リソースへのアクセス権を委任できます。IAM ロールにより、お客様の信頼するアカウントと他の信頼される AWS アカウントとの信頼関係を確立できます。信頼するアカウントは、アクセスされるリソースを所有し、信頼されるアカウントは、リソースへのアクセスを必要とするユーザーを含みます。

信頼関係の作成後、IAM ユーザーまたは信頼されるアカウントのアプリケーションは AWS Security Token Service (AWS STS) AssumeRole API アクションを使用できます。このアクションにより、アカウントの AWS リソースへのアクセスに使用できる一時的なセキュリティ認証情報を取得できます。

いずれものアカウントもお客様が管理できます。または、ユーザーが属するアカウントは第三者が管理できます。ユーザーが属する他のアカウントがお客様の管理対象外の AWS アカウントである場合は、第三者のアカウントから提供される externalID 属性と一意の識別子を使用できます。これにより、確実にそのアクセスが正しいコンテキストでのみ行われるようになります。詳細については、「AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

ロールを使用してアクセス権限を委任する方法の詳細については、「ロールに関する用語と概念」を参照してください。サービスロールを使用して、サービスからアカウントのリソースへのアクセスを許可する方法については、「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

IAM ロールの作成 (コンソール)

IAM ユーザーが引き受けるロールは、AWS マネジメントコンソール を使用して作成できます。たとえば、本稼働環境から開発環境を分離するための複数の AWS アカウントが組織に存在するとします。開発用アカウントのユーザーに、本稼働アカウントでリソースにアクセスすることを許可するロールを設定し、使用するために必要なステップの概要説明を表示するには、個別の開発用アカウントと本稼働用アカウントを使用したシナリオ例 を参照してください。

ロールを作成するには (コンソール)

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. コンソールのナビゲーションペインで、[Roles]、[Create role] の順に選択します。

  3. [Another AWS account] ロールタイプを選択します。

  4. [Account ID] ページで、リソースへのアクセス権を付与する AWS アカウント ID を入力します。

    指定したアカウントの管理者は、そのアカウントのすべての IAM ユーザーに、このロールを引き受けるアクセス権限を付与できます。そのためには、管理者から sts:AssumeRole アクションのアクセス権限を付与するユーザーまたはグループにポリシーをアタッチします。そのポリシーで、Resource としてロールの ARN を指定する必要があります。

  5. 管理対象外のアカウントのユーザーにアクセス権限を付与している場合は、[Require external ID] を選択します。外部 ID は、お客様とサードパーティアカウントの管理者との間で同意されている任意の単語または数値です。このオプションにより、リクエストに正しい sts:ExternalID が含まれている場合にのみユーザーがロールを引き受けることができるという条件が、信頼ポリシーに自動的に追加されます。詳細については、「AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

    重要

    このオプションを選択すると、AWS CLI、Tools for Windows PowerShell、または AWS API を使用した場合にのみ、ロールへのアクセスが制限されます。これは、AWS コンソールを使用して、その信頼ポリシーに externalID 条件が指定されているロールに切り替えることができないためです。ただし、該当する SDK を使用してスクリプトまたはアプリケーションを作成することで、この種のアクセスをプログラムから実行することができます。詳細とサンプルスクリプトについては、AWS セキュリティブログの「AWS マネジメントコンソールへのクロスアカウントアクセスを有効にする方法」を参照してください。

  6. 多要素認証 (MFA) を使用してサインインするユーザーにロールを制限するには、[Require MFA] オプションを選択します。これにより、MFA によるサインインの有無を確認する条件がロールの信頼ポリシーに追加されます。ロールを引き受けるユーザーは、設定した MFA デバイスから一時的なワンタイムパスワードを使用してサインインする必要があります。MFA 認証のないユーザーはロールを引き受けることができません。MFA の詳細については、「AWS での多要素認証 (MFA) の使用」を参照してください。

  7. [Next: Permissions] を選択します。

  8. ロールにアタッチするアクセス権限ポリシーを 1 つ以上選択します。特定のリソースで実行できるアクセスを指定するポリシーを選択します (IAM グループにアクセス権限を設定するのと似ています)。ポリシーを使用してアクセス権限を管理する方法の詳細については、「AWS IAM アクセス権限の概要」を参照してください。

    設定したアクセス権限は、ロールを使用するすべてのエンティティで有効となります。デフォルトでは、ロールにはいずれのアクセス権限もありません。

    ユーザーに許可するアクセス権限を割り当てるポリシーの横にあるボックスを選択します。続いて、[Next: Review] を選択します。必要に応じて、この時点でポリシーを選択せずに、後でポリシーを作成して、ロールにアタッチすることもできます。

  9. [Role name] に、ロールの名前を入力します。 このロール名は、このロールの目的を識別するのに役立ちます。ロール名は AWS アカウント内で一意でなければなりません。大文字と小文字は区別されません。たとえば、PRODROLEprodrole というロール名を両方作成することはできません。多くのエンティティによりロールが参照されるため、作成後にロール名を変更することはできません。

  10. (オプション) [Role description] に、新しいロールの説明を入力します。

  11. ロール情報を確認し、[Create role] を選択します。

    重要

    上記の手順は、必要となる設定の前半であることに注意してください。信頼されたアカウントに属している個々のユーザーに、ロールを切り替えるアクセス権限を付与する必要もあります。この手順の詳細については、「ロールを切り替えるユーザーアクセス権限の付与」を参照してください。

お客様がロールを作成し、AWS タスクの実行や AWS リソースへのアクセスに必要なアクセス権限を付与したら、ユーザーはそのロールを引き受けることができます。詳細については、「ロールの切り替え(AWS マネジメントコンソール)」を参照してください。

IAM ロールの作成 (AWS CLI)

AWS CLI を使用したロールの作成には、複数のステップがあります。コンソールを使用してロールを作成する場合、多くのステップは自動的に行われますが、AWS CLI を使用する場合は、各ステップを明示的に実行する必要があります。ポリシーを作成して、ロールにアクセス権限のポリシーを割り当てる必要があります。

クロスアカウントアクセス用のロールを作成するには(AWS CLI)

次の例は、シンプルな環境における上の 2 つのステップを示しています。この例では、Windows を実行しているクライアントコンピュータを使用中で、アカウントの認証情報とリージョンを使ってコマンドラインインターフェイスを設定済みであることを前提にしています。詳細については、「AWS コマンドラインインターフェイスの設定」を参照してください。

最初のコマンドで参照されているサンプル信頼ポリシーには、アカウント 123456789012 内のユーザーがロールを引き受けることができるようにする次の JSON コードが含まれています。 (ユーザーが MFA 認証を提供する場合のみ)MFA の詳細については、「AWS での多要素認証 (MFA) の使用」を参照してください。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } } } }

重要

Principal 要素に、特定の IAM ロールまたはユーザーを指し示す ARN が含まれている場合、その ARN は、ポリシーを保存するときに一意のプリンシパル ID に変換されます。これにより、ロールまたはユーザーを削除して再作成することにより、誰かがそのユーザーの特権をエスカレートするリスクを緩和できます。通常、この ID はコンソールには表示されません。これは、信頼ポリシーが表示されるときに、ARN への逆変換が行われるためです。ただし、ロールまたはユーザーを削除すると、関係が壊れます。ポリシーは、ユーザーまたはロールを再作成しても適用されません。これは、信頼ポリシーに保存されているプリンシパル ID に一致しないためです。この場合、プリンシパル ID はコンソールに表示されます。これは、AWS が ARN に ID をマッピングできなくなるためです。その結果、信頼ポリシーの Principal 要素で指し示しているユーザーまたはロールを削除し、再作成する場合、ロールを編集して ARN を置き換える必要があります。ポリシーを保存するときに、そのユーザーまたはロールは新しいプリンシパル ID に変換されます。

2 番目のコマンドで参照されている管理ポリシーは、IAM にすでに存在するものとします。このポリシーでは、ロールを引き受けるユーザーは example_bucket という名前の S3 バケットに対して ListBucket アクションのみを実行できます。このポリシーは以下のとおりです。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } }

実行するコマンドは次のとおりです。

Copy
# Create the role and attach the trust policy that allows users in an account to switch to the role. $ aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json # Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do. $ aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws:iam::123456789012:role/PolicyForRole

重要

上記の手順は、必要となる設定の前半であることに注意してください。信頼されたアカウントに属している個々のユーザーに、ロールを切り替えるアクセス権限を付与する必要もあります。この手順の詳細については、「ロールを切り替えるユーザーアクセス権限の付与」を参照してください。

お客様がロールを作成し、AWS タスクの実行や AWS リソースへのアクセスに必要なアクセス権限を付与した後、ユーザーはそのロールに切り替えることができます。詳細については、「IAM ロールの切り替え(AWS Command Line Interface)」を参照してください。

IAM ロールの作成 (AWS API)

API 呼び出しを使用して、IAM ユーザーが切り替えることのできるロールを作成できます。

コードでロールを作成するには (API)

  • ロールを作成します。CreateRole

    ロールの信頼ポリシーに対して、ファイルの場所を指定できます。

  • ロールに管理アクセスポリシーをアタッチします。AttachRolePolicy

    -または-

    ロールにインラインアクセスポリシーを作成します。PutRolePolicy

重要

上記の手順は、必要となる設定の前半であることに注意してください。信頼されたアカウントに属している個々のユーザーに、ロールを切り替えるアクセス権限を付与する必要もあります。この手順の詳細については、「ロールを切り替えるユーザーアクセス権限の付与」を参照してください。

お客様がロールを作成し、AWS タスクの実行や AWS リソースへのアクセスに必要なアクセス権限を付与した後、ユーザーはそのロールに切り替えることができます。詳細については、「IAM ロールの切り替え(API)」を参照してください。

MFA の詳細については、「AWS での多要素認証 (MFA) の使用」を参照してください。