AWS マネジメントコンソールを使用して IAM ロールを切り替える際の問題を解決するにはどうすればよいですか?

最終更新日: 2022 年 4 月 5 日

AWS マネジメントコンソールを使用して AWS Identity and Access Management (IAM) ロールを切り替えようとしましたが、次のようなエラーが表示されました。

「Invalid information in one or more fields.Check your information or contact your administrator.」(1 つ以上のフィールドに無効な情報があります。情報を確認するか、管理者にお問い合わせください。)

簡単な説明

このエラーは、次の原因で発生する場合があります。

  • AssumeRole アクションの許可が正しくない
  • IAM 信頼ポリシーが正しくない
  • ポリシーからの明示的拒否
  • アカウント ID またはロール名が正しくない
  • ロールの切り替えに外部 ID が必要
  • 信頼ポリシー条件が正しくない

解決方法

IAM ポリシー設定を確認して、シナリオに合わせて IAM ロールを切り替えるには、次の手順に従います。

AssumeRole アクションの許可が不足している、または正しくない

IAM ロールに切り替えるには、IAM エンティティに AssumeRole アクションの許可が必要です。IAM エンティティには、次のような AssumeRole アクションの許可を持つポリシーが必要です。

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::account_id_number:role/role-name-you-want-to-assume"  
}

リソースが、切り替え先の IAM ロールの Amazon リソースネーム (ARN) と一致していることを確認します。詳細については、「ロールを切り替えるための許可をユーザーに付与する」を参照してください。

IAM ロールの信頼ポリシーが IAM ユーザーのアカウント ID を信頼しない

IAM ロールの信頼ポリシーは、ロールを引き受けることができるプリンシパルを定義します。信頼されたプリンシパルエンティティとして IAM ユーザーのアカウント ID が信頼ポリシーにリストされていることを確認してください。例えば、アカウント ID が 111222333444 の Bob という名前の IAM ユーザーが、アカウント ID が 444555666777 の Alice という名前の IAM ロールに切り替えたいと考えているとします。アカウント ID 111222333444 は信頼されたアカウントで、アカウント ID 444555666777 は信頼するアカウントです。IAM ロール Alice には、Bob を信頼する次のような信頼ポリシーがあります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
                "AWS": “<111222333444>
            },
            "Condition": {}
        }
    ]
}

注: 最小権限の原則に従って、ユーザーが必要とするロールのみに完全な ARN を指定するのがベストプラクティスです。

詳細については、「ロールの信頼ポリシーの変更 (コンソール)」を参照してください。

サービスコントロールポリシー (SCP) または IAM ポリシーからの明示的拒否

AWS アカウントが AWS Organizations の一部である場合、管理アカウントに SCP がある可能性があります。AssumeRole アクションについて、SCP からの明示的拒否がないことを確認します。AWS リージョンに基づいて API アクションを拒否する SCP がないかを確認します。AWS Security Token Service (AWS STS) は、グローバルサービス除外リストに含める必要があるグローバルサービスです。「deny」ステートメントは「allow」ステートメントよりも優先されるため、IAM ポリシーからの明示的拒否がないことを確認します。

詳細については、「リクエストされた AWS リージョンに基づいて AWS へのアクセスを拒否する」を参照してください。

AWS アカウント ID と IAM ロール名を確認する

ロールの切り替えページで、アカウント ID と IAM ロール名が正しいことを確認します。アカウント ID は 12 桁の識別子であり、IAM ロール名は引き受けるロールの名前です。

詳細については、「コンソールでのロールの切り替えについて知っておくべきこと」を参照してください。

IAM ロールへの切り替えに外部 ID が必要

管理者は外部 ID を使用して、サードパーティーに AWS リソースへのアクセス権を付与できます。AWS マネジメントコンソールの IAM ロールを、ExternalId 条件キーバリューを必要とするロールに切り替えることはできません。IAM ロールに切り替えるには、ExternalId キーをサポートする AssumeRole アクションを呼び出します。

詳細については、「AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

IAM ロールの信頼ポリシーに対する有効な条件

IAM ロールの信頼ポリシーで指定されているすべての条件を満たしていることを確認します。条件には、有効期限や外部 ID、または特定の IP アドレスからのリクエストのみを受け付けることを指定することができます。次のポリシー例では、現在の日付が指定した日付より後の任意の時刻である場合、条件は false になります。このポリシーでは、IAM ロールを引き受けるための許可を付与できません。

"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"
        }
    }