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

AWS サービスにアクセス許可を委任するロールの作成

多くの AWS のサービスでは、ロールを使用して、そのサービスがアクセスできものを制御する必要があります。お客様に代わってアクションを実行するとサービスが想定するロールは、サービスロールと呼ばれます。ロールにサービスに対して特殊な目的がある場合、そのロールは EC2 インスタンスのサービスロール (この例)、またはサービスにリンクされたロールとして分類されます。特定のサービスがロールを使用するかどうかと、使用するサービスのロールを割り当てる方法については、各サービスの AWS ドキュメントを参照してください。

ロールを使用してアクセス権限を委任する方法の詳細については、「ロールに関する用語と概念」を参照してください。

AWS サービス用のロールの作成 (コンソール)

サービス用のロールを作成するには、AWS マネジメントコンソール を使用します。一部のサービスでは、複数のサービスロールがサポートされているため、該当サービスの「AWS ドキュメント」を参照の上、選択するユースケースを確認してください。必要な信頼ポリシーとアクセス権限ポリシーを割り当て、サービスがお客様に代わってロールを引き受ける方法について説明します。

AWS サービスのロールを作成するには (コンソール)

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

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

  3. [AWS Service] ロールタイプを選択後、このロールを引き受けることを許可するサービスを選択します。

  4. サービスのユースケースを選択します。指定のサービスにユースケースが 1 つしかない場合はすでに選択されています。ユースケースは、サービスに必要な信頼ポリシーを含めるように定義されています。続いて、[Next: Permissions] を選択します。

  5. ロールにアタッチするアクセス権限ポリシーを 1 つ以上選択します。選択したユースケースに基づき、サービスで以下のいずれかを行う場合があります。

    • ロールで使用するアクセス権限を定義する

    • 制限されたアクセス権限からの選択を許可する

    • すべてのアクセス権限からの選択を許可する

    • この時点でポリシーを選択できないようにし、ポリシーを作成してからロールにアタッチする

    ユーザーに許可するアクセス権限を割り当てるポリシーの横にあるボックスを選択し、[Next: Review] をクリックします。

    注記

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

  6. [Role name] で、ロール名のカスタマイズの度合いはサービスによって定義されます。サービスのロール名が定義されている場合、このオプションを変更することはできません。それ以外の場合、サービスでロールのプレフィックスが定義され、オプションのサフィックスを入力できる場合があります。一部のサービスでは、ロールの名前全体を指定することができます。

    可能であれば、このロールの目的を見分けやすくするロール名またはロール名のサフィックスを入力します。ロール名は AWS アカウント内で一意でなければなりません。大文字と小文字は区別されません。たとえば、PRODROLEprodrole というロール名を両方作成することはできません。多くのエンティティによりロールが参照されるため、作成後にロール名を変更することはできません。

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

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

サービス用のロールを作成する(AWS CLI)

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

AWS CLI を使用して AWS サービスのロールを作成するには、次のコマンドを使用します。

  1. ロールを作成します。aws iam create-role

  2. ロールに管理アクセスポリシーをアタッチします。aws iam attach-role-policy

    または

    ロールのインラインアクセスポリシーを作成します。aws iam put-role-policy

ロールを Amazon EC2 または Amazon EC2 を使用する別の AWS サービスと共に使用する場合、ロールをインスタンスプロファイルに保存する必要があります。インスタンスプロファイルは、Amazon EC2 インスタンスの起動時にインスタンスにアタッチできるロールのコンテナです。インスタンスプロファイルに含めることができるロールは 1 つのみであり、緩和できません。AWS マネジメントコンソールを使用してロールを作成すると、ロールと同じ名前のインスタンスプロファイルが自動的に作成されます。インスタンスプロファイルの詳細については、「インスタンスプロファイルの使用」を参照してください。ロールを使用して EC2 インスタンスを起動する方法については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「Amazon EC2 リソースに対するアクセスコントロール」を参照してください。

インスタンスプロファイルを作成し、AWS CLI のロールを追加するには、次のコマンドを使用します。

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

最初のコマンドで参照されているサンプル信頼ポリシーには、Amazon EC2 サービスがロールを引き受けることができるようにする次の JSON コードが含まれています。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } }

2 番目のコマンドで参照されているサンプルアクセスポリシーでは、ロールは example_bucket という名前の S3 バケットでの ListBucket アクションのみを実行できます。

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

この例で実行する AWS CLI コマンドは、次のとおりです。

Copy
# Create the role and attach the trust policy that enables EC2 to assume this role. $ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://trustpolicyforec2.json # Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do. $ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://permissionspolicyforec2.json # Create the instance profile required by EC2 to contain the role $ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3 # Finally, add the role to the instance profile $ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2

EC2 インスタンスを起動するとき、AWS コンソールを使用する場合は、[Configure Instance Details] ページでインスタンスプロファイル名を指定します。aws ec2 run-instances CLI コマンドを使用する場合は、--iam-instance-profile パラメータを指定します。

サービス用のロールを作成する(AWS API)

サービスロールを作成するには、AWS API を使用します。

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

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

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

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

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

    または

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

ロールを Amazon EC2 または Amazon EC2 を使用する別の AWS サービスと共に使用する場合、ロールをインスタンスプロファイルに保存する必要があります。インスタンスプロファイルは、ロールのコンテナとして機能します。各インスタンスプロファイルに含めることができるロールは 1 つのみであり、緩和できません。AWS マネジメントコンソールでロールを作成すると、ロールと同じ名前のインスタンスプロファイルが自動的に作成されます。インスタンスプロファイルの詳細については、「インスタンスプロファイルの使用」を参照してください。ロールを使用して Amazon EC2 インスタンスを起動する方法については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「Amazon EC2 リソースに対するアクセスコントロール」を参照してください。