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

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

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

AWS サービスにアクセス権限を委任するためにロールを作成するときは、AWS サービスに必要なロールのタイプを選択する必要があります。サービスにリンクされたロールが必要なサービス用に、AWS には、必要なアクセス権限が事前定義されたロールが含まれます。これにより、必要なアクセス権限を手動で追加する必要がなくなるため、サービスの設定が簡単になります。サービスにリンクされたロールをサポートするサービスについては、「IAM と連携する AWS サービス」を参照してください。サポートするサービスでは、「サービスにリンクされたロール」列が「はい」になっています。

他のほとんどのサービスの場合、AWS サービスにアクセス権限を委任するには、AWS サービスロールを選択する必要があります。このサービスロールには、サービスが必要とする AWS のリソースにサービスがアクセスするために必要なすべてのアクセス権限を含める必要があります。サービスロールはサービスによって異なりますが、多くのサービスロールでは、そのサービスの文書化された要件を満たしている限り、アクセス権限を選択することができます。サービスに使用されるロールのタイプ (存在する場合) と、そのロールを割り当てる方法については、そのサービスの AWS ドキュメントを参照してください。

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

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

AWS マネジメントコンソール を使用して、サービスの要件に応じて、サービスにリンクされたロールまたはサービスロールを作成できます。

AWS サービスでサービスにリンクされたロールを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) にサインインします。

  2. IAM コンソールのナビゲーションペインで [Roles] をクリックし、[Create new role] をクリックします。

  3. [AWS service-linked role] セクションを展開し、このロールを受け入れることを許可するサービスを選択します。

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

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

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

AWS サービスのロールを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) にサインインします。

  2. IAM コンソールのナビゲーションペインで [Roles] をクリックし、[Create new role] をクリックします。

  3. [AWS Service Roles] セクションを展開し、このロールを受け入れることを許可するサービスを選択します。

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

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

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

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

AWS Command Line Interface (CLI) を使用して、サービスの要件に応じて、サービスにリンクされたロールまたはサービスロールを作成できます。

サービスにリンクされたロールの CLI

API を使用するコードでサービスにリンクされたロールを作成するには、 create-service-linked-role コマンドを使用します。このコマンドでは、ロール名に対してサービスとサフィックスを指定する必要があります。

この CLI コマンドは、サービスにリンクされたロールを作成すると同時に、サービスに必要な信頼ポリシーとインラインポリシーも作成します。一部のサービスでは、サービスにリンクされたロールのインラインポリシーを組み込むことができますが、それが可能なのは、ロールに依存するサービスでのみです。サービスでこの機能がサポートされているかどうかについては、そのサービスの AWS ドキュメントを参照してください。

サービスロールの CLI

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

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

ロールを 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

API を使用するコードでサービスにリンクされたロールを作成するには、CreateServiceLinkedRole API 呼び出しを使用します。このリクエストでは、ロール名に対してサービスとサフィックスを指定します。

この API 呼び出しは、サービスにリンクされたロールを作成すると同時に、サービスに必要な信頼ポリシーとインラインポリシーも作成します。一部のサービスでは、サービスにリンクされたロールのインラインポリシーを組み込むことができますが、それが可能なのは、ロールに依存するサービスでのみです。サービスでこの機能がサポートされているかどうかについては、そのサービスの AWS ドキュメントを参照してください。

サービスロールの API

API を使用するコードでサービスロールを作成するには、以下のコマンドを使用します。

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

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

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

    または

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

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