AWS Identity and Access Management
ユーザーガイド

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

サービスにリンクされたロールは、AWS サービスに直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、サービスによって事前定義されており、お客様の代わりにサービスから他の AWS サービスを呼び出す必要のあるアクセス権限がすべて含まれています。このリンクされたサービスでも、サービスにリンクされたロールを作成、変更、削除する方法を定義しています。サービスによって、ロールが自動的に作成または削除される場合があります。そのため、ウィザードの一部、またはサービスのプロセスとして、ロールを作成、変更、削除できる場合があります。または、ロールを作成または削除するには、IAM を使用する必要がある場合があります。その方法に関係なく、サービスにリンクされたロールを使用すると、サービスの設定がより容易になります。これは、サービスがお客様に代わって行うアクションに必要なアクセス許可を手動で追加する必要がないためです。

リンクされたサービスで、そのサービスにリンクされたロールのアクセス許可を定義します。特に定義されている場合を除き、ロールは、そのサービスでのみ引き受けることができます。定義されるアクセス権限には、信頼ポリシーやアクセス権限ポリシーなどがあり、そのアクセス権限ポリシーをその他の IAM エンティティにアタッチすることはできません。

ロールを削除するには、まず関連リソースを削除します。これにより、不注意でリソースにアクセスするアクセス許可の削除が防止され、リソースは保護されます。

ヒント

サービスにリンクされたロールの使用をサポートするサービスについては、「IAM と連携する AWS のサービス」を参照してください。これらのサービスでは、「サービスにリンクされたロール」列が「はい」になっています。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[はい] リンクを選択します。

サービスにリンクされたロールのアクセス許可

サービスにリンクされたロールの作成または編集をユーザーまたはロールに許可するように、IAM エンティティ (ユーザー、グループ、またはロール) のアクセス許可を設定する必要があります。

注記

サービスにリンクされたロールの ARN にはサービスプリンシパルが含まれています。以下のポリシーでは SERVICE-NAME.amazonaws.com として示されています。サービスプリンシパルは推量しないでください。サービスプリンシパルは、大文字と小文字が区別され、AWS のサービス間で異なる場合があります。サービスのサービスプリンシパルを表示するには、そのサービスにリンクされたロールのドキュメントを参照してください。

IAM エンティティがサービスにリンクされた特定のロールを作成することを許可するには

サービスにリンクされたロールを作成する必要のある IAM エンティティに、次のポリシーを追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*", "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}} }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*" } ] }

IAM エンティティがサービスにリンクされた任意のロールを作成することを許可するには

サービスにリンクされたロール、または必要なポリシーを含む任意のサービスロールを作成する必要のある IAM エンティティのアクセス許可ポリシーに、次のステートメントを追加します。このポリシーステートメントでは、IAM エンティティがポリシーをロールにアタッチすることは許可されません。

{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

IAM エンティティが任意のサービスロールの説明を編集することを許可するには

サービスにリンクされたロール、または任意のサービスロールの説明を編集する必要のある IAM エンティティのアクセス許可ポリシーに、次のステートメントを追加します。

{ "Effect": "Allow", "Action": "iam:UpdateRoleDescription", "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

IAM エンティティがサービスにリンクされた特定のロールを削除することを許可するには

サービスにリンクされたロールを削除する必要のある IAM エンティティのアクセス許可ポリシーに、次のステートメントを追加します。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*" }

IAM エンティティがサービスにリンクされた任意のロールを削除することを許可するには

サービスロールではなく、サービスにリンクされたロールを削除する必要のある IAM エンティティのアクセス許可ポリシーに、以下のステートメントを追加します。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

既存のロールをサービスに渡すことを IAM エンティティに許可するには

一部の AWS サービスでは、新しいサービスにリンクされたロールを作成せずに、既存のロールをサービスに渡すことができます。そのためには、サービスにロールを渡すアクセス許可がユーザーに必要です。ロールを渡す必要のある IAM エンティティのアクセス許可ポリシーに、以下のステートメントを追加します。このポリシーステートメントでは、エンティティは、渡すことができるロールのリストを表示できます。詳細については、「AWS サービスにロールを渡すアクセス許可をユーザーに許可する」を参照してください。

{ "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/my-role-for-XYZ" }

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

サービスにリンクされたロールを作成するメソッドは、サービスによって異なります。場合によっては、サービスにリンクされたロールを手動で作成する必要はありません。たとえば、サービス特定のアクション (リソースの作成) を完了すると、サービスによって、サービスにリンクされたロールが作成される場合があります。または、サービスにリンクされたロールのサポートを開始する前からサービスを使用していた場合は、アカウントにロールが自動的に作成される場合があります。詳細については、「AWS アカウントに新しいロールが表示される」を参照してください。

また、サービスにリンクされたロールは、サービスコンソール、API、CLI を使用して、手動で作成できる場合があります。サービスにリンクされたロールの使用をサポートするサービスについては、「IAM と連携する AWS のサービス」を参照してください。これらのサービスでは、「サービスにリンクされたロール」列が「はい」になっています。サービスにリンクされたロールをサービスで作成できるかどうかを確認するには、「はい」リンクを選択して、該当サービスのサービスにリンクされたロールに関するドキュメントを参照してください。

ロールの作成がサービスでサポートされていない場合は、IAM を使用して、サービスにリンクされたロールを作成できます。

重要

サービスにリンクされたロールでは、AWS アカウントの IAM ロールの制限に向かってカウントされますが、このロールは制限を超えてもアカウントに作成することができます。この制限を超える可能性があるのは、サービスにリンクされたロールのみです。

サービスにリンクされたロールの作成 (コンソール)

IAM のサービスにリンクされたロールを作成する前に、サービスにリンクされたロールがサービスで自動的に作成されるかどうかを確認します。さらに、サービスのコンソール、API、または CLI からロールを作成できるかどうかも確認します。

サービスにリンクされたロールを作成するには (コンソール)

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

  2. IAM コンソールの [Navigation] ペインで [Roles] を選択します。続いて、[Create role] を選択します。

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

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

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

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

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

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

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

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

    注記

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

  6. [Next: Review] を選択します。作成中にサービスにリンクされたロールにタグ付けすることはできません。IAM におけるタグの使用の詳細については、「IAM アイデンティティのタグ付け」を参照してください。

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

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

  8. (オプション) [Role description] で、サービスにリンクされた新しいロールの説明を編集します。

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

サービスにリンクされたロール (AWS CLI) を作成する

IAM でサービスにリンクされたロールを作成するには、リンクされたサービスで、サービスにリンクされたロールが自動的に作成されるかどうかと、サービスの CLI からロールを作成できるかどうかについて確認します。サービス CLI がサポートされていない場合は、IAM コマンドを使用して、ロールを引き受けるためにサービスで必要な信頼ポリシーやインラインポリシーを含めて、サービスにリンクされたロールを作成することができます。

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

次のコマンドを実行します。

$ aws iam create-service-linked-role --aws-service-name SERVICE-NAME.amazonaws.com

サービスにリンクされたロール (AWS API) を作成する

IAM でサービスにリンクされたロールを作成するには、リンクされたサービスで、サービスにリンクされたロールが自動的に作成されるかどうかと、サービスの API からロールを作成できるかどうかについて確認します。サービス API がサポートされていない場合は、AWS API を使用して、ロールを引き受けるためにサービスで必要な信頼ポリシーやインラインポリシーを含めて、サービスにリンクされたロールを作成することができます。

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

CreateServiceLinkedRole API コールを使用します。リクエストで、サービス名 (SERVICE_NAME_URL.amazonaws.com) を指定します。

たとえば、サービスにリンクされたロール ([Lex Bots]) を作成するには、lex.amazonaws.com を使用します。

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

サービスにリンクされたロールを編集するメソッドは、サービスによって異なります。一部のサービスでは、サービスコンソール、API、CLI からサービスにリンクされたロールのアクセス権限を編集することができます。ただし、サービスにリンクされたロールを作成すると多くのエンティティによりロールが参照されるため、ロール名を変更することはできません。ロールの説明は、IAM コンソール、API、CLI から編集することができます。

サービスにリンクされたロールの使用をサポートするサービスについては、「IAM と連携する AWS のサービス」を参照してください。これらのサービスでは、「サービスにリンクされたロール」列が「はい」になっています。サービスにリンクされたロールをサービスで編集できるかどうかを確認するには、「はい」リンクを選択して、該当サービスのサービスにリンクされたロールに関するドキュメントを参照してください。

サービスにリンクされたロールの説明の編集 (コンソール)

サービスにリンクされたロールの説明は、IAM コンソールを使用して編集できます。

サービスにリンクされたロールの説明を編集するには (コンソール)

  1. IAM コンソールの [Navigation] ペインで [Roles] を選択します。

  2. 変更するロールの名前を選択します。

  3. [Role description] の右端にある [Edit] を選択します。

  4. ボックスに新しい説明を入力し、[Save] を選択します。

サービスにリンクされたロールの説明の編集 (AWS CLI)

AWS CLI から IAM コマンドを使用して、サービスにリンクされたロールの説明を編集できます。

サービスにリンクされたロールの説明を変更するには (AWS CLI)

  1. (オプション) ロールの現在の説明を表示するには、以下のコマンドを実行します。

    $ aws iam get-role --role-name ROLE-NAME

    CLI コマンドでは、ARN ではなくロール名を使用してロールを参照します。たとえば、ロールの ARN が arn:aws:iam::123456789012:role/myrole である場合、そのロールを myrole と参照します。

  2. サービスにリンクされたロールの説明を更新するには、次のコマンドを実行します。

    $ aws iam update-role --role-name ROLE-NAME --description OPTIONAL-DESCRIPTION

サービスにリンクされたロールの説明の編集 (AWS API)

サービスにリンクされたロールの説明は、AWS API を使用して編集できます。

サービスにリンクされたロールの説明を変更するには (AWS API)

  1. (オプション) ロールの現在の説明を表示するには、次のオペレーションを呼び出し、ロールの名前を指定します。

    AWS API: GetRole

  2. ロールの説明を更新するには、次のオペレーションを呼び出し、ロールの名前 (およびオプションの説明) を指定します。

    AWS API: UpdateRole

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

サービスにリンクされたロールを作成するメソッドは、サービスによって異なります。場合によっては、サービスにリンクされたロールを手動で削除する必要はありません。たとえば、サービス特定のアクション (リソースの削除) を完了すると、サービスによって、サービスにリンクされたロールが削除される場合があります。

また、サービスにリンクされたロールは、サービスコンソール、API、CLI から手動で削除できる場合があります。

サービスにリンクされたロールの使用をサポートするサービスについては、「IAM と連携する AWS のサービス」を参照してください。これらのサービスでは、「サービスにリンクされたロール」列が「はい」になっています。サービスにリンクされたロールをサービスで削除できるかどうかを確認するには、「はい」リンクを選択して、該当サービスのサービスにリンクされたロールに関するドキュメントを参照してください。

サービスがロールの削除をサポートしていない場合は、IAM コンソール、API、または CLI からサービスにリンクされたロールを削除できます。サービスにリンクされたロールが必要な機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、削除する前に、サービスにリンクされた役割をクリーンアップする必要があります。

サービスにリンクされたロールのクリーンアップ

IAM を使用してサービスにリンクされたロールを削除するには、まずそのロールにアクティブなセッションがないことを確認し、そのロールで使用されているリソースをすべて削除する必要があります。

サービスにリンクされたロールが IAM コンソールでアクティブなセッションを持っているかどうかを確認するには

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

  2. IAM コンソールの [Navigation] ペインで [Roles] を選択します。サービスにリンクされたロールのチェックボックスではなく、ロールの名前を選択します。

  3. 選択したロールの [Summary] ページで、[Access Advisor] タブを選択します。

  4. [Access Advisor] タブで、サービスにリンクされたロールの最新のアクティビティを確認します。

    注記

    サービスがサービスにリンクされたロールを使用しているかどうかが不明な場合は、ロールの削除を試みることができます。サービスがロールを使用している場合、削除は失敗し、ロールが使用されているリージョンを表示できます。ロールが使用されている場合は、ロールを削除する前にセッションが終了するのを待つ必要があります。サービスにリンクされたロールのセッションを取り消すことはできません。

サービスにリンクされたロールよって使用されているリソースを削除するには

サービスにリンクされたロールの使用をサポートするサービスについては、「IAM と連携する AWS のサービス」を参照してください。これらのサービスでは、「サービスにリンクされたロール」列が「はい」になっています。サービスにリンクされたロールをサービスで削除できるかどうかを確認するには、「はい」リンクを選択して、該当サービスのサービスにリンクされたロールに関するドキュメントを参照してください。サービスにリンクされているロールが使用しているリソースを削除する方法については、そのサービスのドキュメントを参照してください。

サービスにリンクされたロールの削除 (コンソール)

IAM コンソールを使用して、サービスにリンクされたロールを削除できます。

サービスにリンクされたロールを削除するには (コンソール)

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

  2. IAM コンソールの [Navigation] ペインで [Roles] を選択します。ロール名または行そのものではなく、削除するロール名の横にあるチェックボックスをオンにします。

  3. ページ上部の [Role actions] で、[Delete role] を選択します。

  4. 確認ダイアログボックスで、サービスの最終アクセス時間データを確認します。これは、選択したそれぞれのロールの AWS サービスへの最終アクセス時間を示します。これは、そのロールが現在アクティブであるかどうかを確認するのに役立ちます。先に進む場合は、[Yes, Delete] を選択し、削除するサービスにリンクされたロールを送信します。

  5. IAM コンソール通知を見て、サービスにリンクされたロールの削除の進行状況を監視します。IAM サービスにリンクされたロールの削除は非同期であるため、削除するロールを送信すると、削除タスクは成功または失敗する可能性があります。

    • タスクが成功した場合は、ロールがリストから削除され、成功の通知がページの上部に表示されます。

    • タスクが失敗した場合は、通知から [View details] または [View Resources] を選択して、削除が失敗した理由を知ることができます。ロールがサービスのリソースを使用しているために削除が失敗したとき、サービスがその情報を返す場合は、通知にはリソースのリストが含まれます。次にリソースをクリーンアップしてから、削除リクエストをもう一度送信できます。

      注記

      サービスが返す情報に応じて、このプロセスを何度も繰り返す必要があります。たとえば、サービスにリンクされたロールが 6 つのリソースを使用しており、サービスはそのうち 5 つのリソースに関する情報を返すことがあります。5 つのリソースをクリーンアップして削除するロールを再度送信すると、削除は失敗し、残りの 1 つのリソースが報告されます。サービスはすべてのリソースを返しますが、そのうちいくつかはリソースを報告しない場合もあります。

    • タスクが失敗し、通知にリソースのリストが含まれていない場合、サービスはその情報を返さない可能性があります。サービスのリソースをクリーンアップする方法の詳細については、「IAM と連携する AWS のサービス」を参照してください。使用しているサービスをテーブルで見つけ、「はい」リンクを選択すると、そのサービスのサービスにリンクされたロールに関するドキュメントが表示されます。

サービスにリンクされたロールの削除 (AWS CLI)

AWS CLI から IAM コマンドを使用して、サービスにリンクされたロールを削除できます。

サービスにリンクされたロールを削除するには (AWS CLI)

  1. 削除するサービスにリンクされたロールの名前が分からない場合、以下のコマンドを入力してお客様のアカウントにある Amazon リソースネーム (ARN) を表示します。

    $ aws iam get-role --role-name role-name

    CLI コマンドでは、ARN ではなくロール名を使用してロールを参照します。たとえば、ロールの ARN が arn:aws:iam::123456789012:role/myrole である場合、そのロールを myrole と参照します。

  2. サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされない場合、そのリクエストは拒否される可能性があります。レスポンスから deletion-task-id を取得して、削除タスクのステータスを確認する必要があります。サービスにリンクされたロールの削除リクエストを送信するには、次のコマンドを入力します。

    $ aws iam delete-service-linked-role --role-name role-name
  3. 削除タスクのステータスを確認するには、次のコマンドを入力します。

    $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id

    削除タスクのステータスは、 NOT_STARTEDIN_PROGRESS, SUCCEEDED、または FAILED となります。削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。ロールがサービスのリソースを使用しているために削除が失敗したとき、サービスがその情報を返す場合は、通知にはリソースのリストが含まれます。次にリソースをクリーンアップしてから、削除リクエストをもう一度送信できます。

    注記

    サービスが返す情報に応じて、このプロセスを何度も繰り返す必要があります。たとえば、サービスにリンクされたロールが 6 つのリソースを使用しており、サービスはそのうち 5 つのリソースに関する情報を返すことがあります。5 つのリソースをクリーンアップして削除するロールを再度送信すると、削除は失敗し、残りの 1 つのリソースが報告されます。サービスはすべてのリソースを返しますが、そのうちいくつかはリソースを報告しない場合もあります。リソースを報告しないサービスのリソースをクリーンアップする方法の詳細については、「IAM と連携する AWS のサービス」を参照してください。使用しているサービスをテーブルで見つけ、「はい」リンクを選択すると、そのサービスのサービスにリンクされたロールに関するドキュメントが表示されます。

サービスにリンクされたロールの削除 (AWS API)

AWS API を使用して、サービスにリンクされたロールを削除できます。

サービスにリンクされたロールを削除するには (AWS API)

  1. サービスにリンクされたロールの削除リクエストを送信するには、DeleteServiceLinkedRole を呼び出します。リクエストで、ロール名を指定します。

    サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされない場合、そのリクエストは拒否される可能性があります。レスポンスから DeletionTaskId を取得して、削除タスクのステータスを確認する必要があります。

  2. 削除タスクのステータスを確認するには、GetServiceLinkedRoleDeletionStatus を呼び出します。リクエストで DeletionTaskId を指定します。

    削除タスクのステータスは、 NOT_STARTEDIN_PROGRESS, SUCCEEDED、または FAILED となります。削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。ロールがサービスのリソースを使用しているために削除が失敗したとき、サービスがその情報を返す場合は、通知にはリソースのリストが含まれます。次にリソースをクリーンアップしてから、削除リクエストをもう一度送信できます。

    注記

    サービスが返す情報に応じて、このプロセスを何度も繰り返す必要があります。たとえば、サービスにリンクされたロールが 6 つのリソースを使用しており、サービスはそのうち 5 つのリソースに関する情報を返すことがあります。5 つのリソースをクリーンアップして削除するロールを再度送信すると、削除は失敗し、残りの 1 つのリソースが報告されます。サービスはすべてのリソースを返しますが、そのうちいくつかはリソースを報告しない場合もあります。リソースを報告しないサービスのリソースをクリーンアップする方法の詳細については、「IAM と連携する AWS のサービス」を参照してください。使用しているサービスをテーブルで見つけ、「はい」リンクを選択すると、そのサービスのサービスにリンクされたロールに関するドキュメントが表示されます。