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

IAM ロールのトラブルシューティング

この情報を使用して、IAM ロールを操作するときに発生する可能性がある一般的な問題の診断や修復を行います。

ロールを引き受けることができない

  • IAM ポリシーによって、引き受けるロールの sts:AssumeRole を呼び出すアクセス許可が付与されていることを確認します。IAM ポリシーの Action エレメントによって、AssumeRole アクションの呼び出しが許可されていて、IAM ポリシーの Resource エレメントで、取得するロールを指定する必要があります。たとえば、Resource エレメントでは Amazon リソースネーム (ARN) またはワイルドカード (*) を指定することで、ロールを指定できます。たとえば、ユーザーに該当する 1 つ以上のポリシーで、以下のようなアクセス許可を付与する必要があります。

    "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::account_id_number:role/role-name-you-want-to-assume"
  • ロールの信頼ポリシーで指定されているすべての条件が満たされていることを確認します。1 つの Condition で、失効日、外部 ID、またはリクエスト発行元の IP アドレスを定義することができます。次の例では、現在の日付が指定日より後の日付である場合、ポリシーが一致しないため、ロールを引き受けるアクセス権限をユーザーに付与できません。

    "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::account_id_number:role/role-name-you-want-to-assume" "Condition": { "DateLessThan" : { "aws:CurrentTime" : "2016-05-01T12:00:00Z" } }
  • AssumeRole の呼び出し元である AWS アカウントが、引き受けようとしているロールにとって信頼されたエンティティであることを確認します。信頼されたエンティティは、ロールの信頼ポリシーで Principal として定義されます。次の例では、引き受けるロールに信頼ポリシーがアタッチされています。この例の場合、サインインに使用した IAM ユーザーのアカウント ID が 123456789012 である必要があります。ロールの信頼ポリシーの Principal 要素にアカウント番号が表示されていない場合、ロールを引き受けることはできません。これは、アクセスポリシーでどのようなアクセス許可が付与されていても同じです。サンプルポリシーでは、2017 年 7 月 1 日~2017 年 12 月 31 日 (UTC) (この日付を含む) に発生するアクションのアクセス許可のみ付与できます。これらの日付の前後にログインした場合、ポリシーは一致しないため、ロールを引き受けることはできません。

    "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole", "Condition": { "DateGreaterThan": {"aws:CurrentTime": "2017-07-01T00:00:00Z"}, "DateLessThan": {"aws:CurrentTime": "2017-12-31T23:59:59Z"} }

AWS アカウントに新しいロールが表示される

一部の AWS のサービスでは、サービスに直接リンクされた一意のタイプのサービスロールを使用する必要があります。このサービスにリンクされたロールはサービスによって事前に定義され、サービスで必要なすべてのアクセス権限が含まれます。これにより、必要なアクセス権限を手動で追加する必要がなくなるため、サービスの設定が簡単になります。サービスにリンクされたロールの一般情報については、「サービスにリンクされたロールの使用」を参照してください。

サービスにリンクされたロールのサポートを開始するときに、既にサービスを使用している可能性があります。その場合、アカウントに新しいロールについて伝える E メールが届くことがあります。このロールには、サービスがお客様に代わってアクションを実行するために必要なすべてのアクセス権限が含まれています。このロールをサポートするために、お客様が実行する必要があるアクションはありません。ただし、アカウントからロールを削除しないでください。ロールを削除すると、サービスが AWS リソースにアクセスするために必要なアクセス権限が削除される可能性があります。アカウントのサービスにリンクされたロールを表示するには、IAM コンソールの IAM [Roles] ページに移動します。サービスにリンクされたロールが、テーブルの [Trusted entities] 列の [(Service-linked role)] に表示されます。

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

自分の AWS アカウントでロールを編集または削除できない

IAM の「サービスにリンクされたロール」のアクセス権限を削除または編集することはできません。これらのロールには、サービスがお客様に代わってアクションを実行するために必要な事前定義された信頼とアクセス権限が含まれます。サービスにリンクされたロールの説明は、IAM コンソール、AWS CLI、API のいずれかでのみ編集できます。アカウントのサービスにリンクされたロールを表示するには、コンソールの IAM [Roles] ページに移動します。サービスにリンクされたロールが、テーブルの [Trusted entities] 列の [(Service-linked role)] に表示されます。ロールの [Summary] ページのバナーにも、そのロールがサービスにリンクされたロールであることが示されています。サービスでアクションがサポートされている場合、リンクされたサービスを通じてのみこれらのロールを管理および削除できます。サービスにリンクされたロールを変更または削除すると、サービスが AWS リソースにアクセスするために必要なアクセス権限が削除される可能性があるので、注意してください。

サービスにリンクされたロールをサポートするサービスについては、「IAM と連携する AWS サービス」を参照してください。サポートするサービスでは、「サービスにリンクされたロール」列が「はい」になっています。

次のことを実行する権限がない: iam:PassRole

リンクされたサービスロールを作成する場合、サービスにそのロールを渡す権限を持っている必要があります。一部のサービスでは、そのサービスでアクションを実行する際にアカウント内にサービスにリンクされたロールが自動的に作成されます。たとえば Amazon EC2 Auto Scaling では、Auto Scaling グループを初めて作成する際に、AWSServiceRoleForAutoScaling というサービスにリンクされたロールが作成されます。PassRole アクセス許可がない状態で Auto Scaling グループを作成しようとすると、以下のようなエラーが表示されます。

ClientError: An error occurred (AccessDenied) when calling the PutLifecycleHook operation: User: arn:aws:sts::819251488009:assumed-role/aws-defaultuser/U313846 is not authorized to perform: iam:PassRole on resource: arn:aws:iam::819251488009:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling

このエラーを解決するには、自分に iam:PassRole アクセス許可を追加するよう管理者に依頼します。

サービスにリンクされたロールをサポートするサービスを確認するには、「IAM と連携する AWS サービス」を参照してください。アクション実行時にサービスにリンクされたロールを自動作成するサービスがどれか確認するには、[Yes] のリンクを選択し、そのサービス用のサービスにリンクされたロールのドキュメントを参照してください。

12 時間のセッションに使用するロールを引き受けることができない(AWS CLI、AWS API)

AWS STS AssumeRole* API または assume-role* CLI オペレーションを使用してロールを引き受ける場合は、DurationSeconds パラメータの値を指定できます。900 秒 (15 分) からロールの [最大 CLI/API セッション期間] 設定までの値を指定できます。この設定よりも高い値を指定した場合、オペレーションは失敗します。この設定の最大値は 12 時間です。たとえば、12 時間のセッションの期間を指定したが、管理者が最大のセッション期間を 6 時間に設定した場合、オペレーションは失敗します。ロールの最大値を確認する方法については、「ロールの最大セッション期間設定の表示」を参照してください。

ロールの連鎖 (ロールを使用して 2 つ目のロールを引き受ける) を使用している場合、セッションは最大 1 時間に制限されます。この場合 DurationSeconds パラメータを使用して 1 時間より大きい値を指定すると、オペレーションは失敗します。