Skip to content

AWS マネジメントコンソールを使用して IAM ロールを切り替える際の問題を解決する方法を教えてください。

所要時間2分
0

AWS マネジメントコンソールを使用して AWS Identity and Access Management (IAM) ロールの切り替えを試行したところ、次のエラーが発生しました。 「Invalid information in one or more fields.Check your information or contact your administrator」

簡単な説明

Invalid information in one or more fields というエラーメッセージは、ポリシーの構成ミスが原因で表示されます。リクエストが信頼ポリシーの条件を満たしていない場合にも、このエラーメッセージが表示されることがあります。

解決策

IAM ユーザーまたはロールに AssumeRole アクセス許可を設定します。

ユーザーにロールの切り替え用のアクセス許可を付与するには、IAM ID のポリシーに AWS Security Token Service (AWS STS) の 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"  
   }
}

注: arn:aws:iam::account_id_number:role/role-name-you-want-to assume を IAM ロールの Amazon Resource Name (ARN) に置き換えます。

IAM ロールの信頼ポリシーにプリンシパルが含まれていることを確認する

信頼ポリシーを更新し、プリンシパルを含めます。プリンシパルには IAM ユーザーまたはロール、もしくは AWS アカウントを使用できます。

注: 信頼されたプリンシパルとしてアカウントを追加すると、そのアカウント内のすべての ID がロールを引き受けられるようになります。ただし、それらの ID には AssumeRole アクセス許可が必要です。、

たとえば、Carlos はアカウント ID 111222333444 の IAM ユーザーであり、アカウント ID 444555666777 に属する Maria のロールを引き受けようとしています。

この場合、アカウント ID 111222333444 は信頼されたアカウントで、アカウント ID 444555666777 は信頼するアカウントです。Maria の IAM ロールには、Carlos を信頼する信頼ポリシーがあります。

Maria の IAM ロール用の信頼ポリシーの例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::111222333444:user/Carlos"
      },
      "Condition": {}
    }
  ]
}

Carlos には、もう一方のアカウントで Maria の IAM ロールを引き受けるための IAM ポリシーも必要です。

Carlos が Maria の IAM ロールを引き受けるための IAM ポリシーの例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::444555666777:role/Maria"
    }
  ]
}

アカウント内のすべての IAM ID がロールを引き受けられるようにするには、アカウントの root プリンシパルを使用します。

Maria の IAM ロールの信頼ポリシーで、user/Carlosroot に置き換えます。

"AWS": "arn:aws:iam::111222333444:root"

Maria の IAM ロールの信頼ポリシーでワイルドカード (*) を使用しても、該当するユーザーが任意のアカウント内の任意のロールを引き受けられるようになります。

"Resource": "arn:aws:iam::444555666777:role/\\\*"

上記の変更を行うと、アカウント 111222333444 に属する任意の IAM ユーザーまたはロールがアカウント ID 444555666777 に属する Maria の IAM ロールを引き受けられるようになります。ロールを引き受けられる ID の数を最小限に抑えるために、アクセスを必要とする IAM ユーザーまたはロールのみの ARN を指定することをおすすめします。

詳細については、「ロールの信頼ポリシーを更新する」を参照してください。

SCP または IAM ポリシーによる明示的な拒否

アカウントが AWS Organizations に属している場合、管理アカウントはロールの切り替えを制限するサービスコントロールポリシー (SCP) を適用する場合があります。詳細については、「管理アカウントにおけるベストプラクティス」を参照してください。

SCP または IAM ポリシーに AssumeRole アクションに対する明示的な Deny が含まれていないか確認します。明示的な Deny が設定されている場合、その拒否はすべての Allow アクセス許可よりも優先されるため、ロールを引き受けられなくなります。上記の例では、明示的な Deny が設定されている場合、Carlos は Maria の IAM ロールを引き受けられません。

SCP が AWS リージョンに基づいてアクセスを制限しているかどうかも確認してください。AWS STS はグローバルサービスなので、グローバルサービスの除外リストに記載する必要があります。

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

ロールを IAM ロールに切り替えるために sts:ExternalId が必要な場合

IAM ロールに sts:ExternalId キーが必要な場合は、AWS マネジメントコンソールを使用するとロールを切り替えることができます。ポリシーを編集し、sts:ExternalId パラメータを含む AssumeRole アクションを使用するようにします。

sts:ExternalId キーにより、サードパーティが AWS リソースにアクセスできます。

詳細については、「サードパーティが所有する AWS アカウントにアクセスする」を参照してください。

IAM ロールの信頼ポリシー内の条件を確認する

有効期限や ExternalId の要件など、信頼ポリシーで設定した条件をレビューします。リクエストは IAM ロールポリシーの条件を満たす必要があります。

たとえば、現在の日付が指定された日付より後の場合、条件は false になるため、ポリシーはそのロールを引き受けるためのアクセス許可を付与できません。

次のポリシーでは、2016 年 5 月 1 日より後の日付では、ロールの引き受けを拒否します。

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

リクエストが信頼ポリシーのすべての条件を満たしていることを確認してください。

関連情報

IAM ロールを引き受けるためのリンクを IAM ユーザーに提供する方法を教えてください

IAM を使用して別の AWS アカウントのリソースにアクセスする方法を教えてください

AWS Organizations のサービスコントロールポリシーと IAM ポリシーの相違点を教えてください

コメントはありません

関連するコンテンツ