メニュー
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 ユーザーが切り替えることのできるロールを作成できます。

ロールを作成するには

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

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

  3. [Select role type] ページで、[Role for cross-account access] セクションを展開し、作成するロールのタイプを選択します。

    • お客様がユーザーアカウントとリソースアカウントの両方の管理者であるか、両方のアカウントが同じ会社に属している場合は、[Provide access between AWS accounts you own] で [Select] を選択します。このオプションは、ユーザー、ロール、アクセスされるリソースがすべて同じアカウントに属している場合にも選択します。

    • お客様がリソースを所有するアカウントの管理者であり、管理対象外のアカウントに属しているユーザーにアクセス権限を付与する必要がある場合は、[Allows IAM users from a 3rd party AWS account to access this account] で [Select] を選択します。このオプションでは、お客様は、第三者によって提供される外部 ID を指定する必要があります。このオプションを使用して、第三者がロールを使用してお客様のリソースにアクセスできる環境の管理性を強化する必要があります。詳細については、「AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

      重要

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

  4. 次のページで、リソースへのアクセス権を付与する AWS アカウント ID を指定します。

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

  5. [Select role type] ページで [Allows IAM users from a 3rd party AWS account to access this account] を選択した場合は、第三者のアカウントの管理者から提供された外部 ID を入力します。これにより、リクエストに正しい sts:ExternalID が含まれている場合にのみユーザーがロールを引き受けることができるという条件が、信頼ポリシーに自動的に追加されます。詳細については、「AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

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

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

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

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

    ユーザーに許可するアクセス権限を割り当てるポリシーの横にあるボックスを選択し、[Attach policy] をクリックします。この時点でポリシーを選択しないことにし、後でポリシーを作成して、ロールにアタッチすることもできます。

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

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

  11. ロールの設定を確認します。ロールを使用できるユーザーに提供するリンクを書き留めてください。ユーザーがこのリンクを選択すると、[Switch Role] ページがすぐに表示されます。このページには、[Account ID] と [Role Name] がすでに設定されています。ユーザーは、まだサインインしていない場合、認証情報を求められます。ユーザーは必要に応じて [Display Name] を設定し、[Display Color] を選択できます。また、[Switch Role] を選択すると、新しいアクセス権限を使用して操作をすぐに実行できます。

    注記

    後で簡単に選択できるように、IAM コンソールは使用する最後の 5 つのロールをキャッシュします。ユーザーが 6 つ以上のロールを必要とする場合は、アクセスを簡単にするために以下のソリューションを検討してください。

    • 少数のユーザーがロールを切り替える場合は、送信されたリンクを各ユーザーがブックマークすることをお勧めします。

    • 多数のユーザーがロールを切り替える場合は、ユーザーがアクセスする必要のあるすべてのリンクを含むウェブページのような中心となる場所を作成することを検討します。

    リンクのフォーマットは次のとおりです。

    https://signin.aws.amazon.com/switchrole?account=ACCOUNT_NUMBER&roleName=ROLE_NAME&displayName=DISPLAYNAME

  12. [Create role] を選択して、ロールの作成を完了します。

    重要

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

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

ロールの作成(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)」を参照してください。

ロールの作成(AWS API)

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

API を使用してコードにロールを作成するには

次のコマンドを使用します。

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

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

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

    -または-

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

重要

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

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

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