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"
  • IAM アイデンティティが、IAM ポリシーで義務付けられている任意のタグでタグ付けされていることを確認します。たとえば、次のポリシーのアクセス許可では、Condition 要素で、ロールを引き受けることをリクエストするプリンシパルとして、特定のタグを持っていることを義務付けています。department = HR または department = CS でタグ付けされている必要があります。それ以外の場合は、ロールを引き受けることはできません。IAM ユーザーおよびロールのタグ付けについては、「IAM エンティティのタグ付け」を参照してください。

    "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "*", "Condition": {"StringEquals": {"aws:PrincipalTag/department": [ "HR", "CS" ]}}
  • ロールの信頼ポリシーで指定されているすべての条件が満たされていることを確認します。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 [ロール] ページに移動します。サービスにリンクされたロールが、テーブルの [信頼されたエンティティ] 列の [(サービスにリンクされたロール)] に表示されます。

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

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

IAM のサービスにリンクされたロールのアクセス許可を削除または編集することはできません。これらのロールには、サービスがお客様に代わってアクションを実行するために必要な事前定義された信頼とアクセス許可が含まれます。サービスにリンクされたロールの説明は、IAM コンソール、AWS CLI、API のいずれかでのみ編集できます。アカウントのサービスにリンクされたロールを表示するには、コンソールの IAM [ロール] ページに移動します。サービスにリンクされたロールが、テーブルの [信頼されたエンティティ] 列の [(サービスにリンクされたロール)] に表示されます。ロールの [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::111122223333:assumed-role/Testrole/Diego is not authorized to perform: iam:PassRole on resource: arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling

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

サービスにリンクされたロールをサポートするサービスを確認するには、「IAM と連携する AWS のサービス」を参照してください。サービスにリンクされたロールをサービスで作成できるかどうかを確認するには、[はい] リンクを選択して、該当サービスのサービスにリンクされたロールに関するドキュメントを確認します。

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

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

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

ロールには、アクションの実行を許可するポリシーがあるが、「アクセスが拒否されました」というメッセージが表示される。

ロールセッションはセッションポリシーによって制限される場合があります。AWS STS を使用してプログラムで一時的なセキュリティ認証情報をリクエストする場合は、オプションでインラインまたは管理セッションポリシーを渡すことができます。セッションポリシーは、ロールの一時認証情報セッションをプログラムで作成する際にパラメータとして渡す高度なポリシーです。Policy パラメータを使用して単一の JSON インラインセッションポリシードキュメントを渡すことができます。PolicyArns パラメータを使用して、最大 10 個の管理セッションポリシーを指定できます。結果として得られるセッションのアクセス許可は、ロールの ID ベースのポリシーとセッションポリシーの共通部分です。または、管理者またはカスタムプログラムから一時的な認証情報が提供されている場合は、アクセスを制限するためのセッションポリシーが含まれている可能性があります。