AWS Identity and Access Management (IAM) ポリシーにおける「Has prohibited field Principal」(禁止フィールド Principal があります) というエラーを解決するにはどうすればよいですか?
Principal 要素をリソースベースのポリシーで使用することで、リソースへのアクセスを許可される IAM ユーザーまたはロールを制御できます。例えば、Amazon Simple Storage Service (Amazon S3) バケットは、bucket policy という名前のリソースベースのポリシーを使用して、バケットへのアクセスを制御します。バケットポリシーでは Principal 要素を使用します。IAM アイデンティティ (ユーザー、グループ、ロール) に直接アタッチされた IAM ポリシーは、Principal 要素を持たない API コールを行うための許可を付与します。詳細については、「アイデンティティベースおよびリソースベースのポリシー」を参照してください。
IAM ロールには、ロールを引き受けて、一時的な認証情報を受信することを許可されるユーザーを制御するリソースベースのポリシーがあります。IAM ロールには、一時的なセキュリティ認証情報を作成できる API 呼び出しを制御する ID ベースのポリシーもあります。
リソースベースのポリシーは、リソースレベルのアクセス権限とは異なります。リソースレベルのアクセス権限は、リソースベースのポリシーと ID ベースのポリシーの両方で使用できます。リソースレベルのアクセス権限は、Resource 要素を使用して AWS リソースへのアクセス権限を制限します。
Principal 要素を使用するポリシーが、IAM 内ではなく AWS リソースに関連付けられた AWS のサービスで作成されていることを確認します。IAM と連携する AWS のサービスを確認し、AWS のサービスがリソースベースのポリシーを使用しているかどうかを確認します。例えば、Amazon S3 バケットポリシーは、IAM 内ではなく S3 サービス内で設定されます。手順については、「Amazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。
IAM サービス自体内に存在する唯一のリソースベースのポリシーは、IAM ロールの信頼ポリシーです。IAM ロールに信頼ポリシーを追加するには、アクセス権限ポリシーではなく信頼ポリシーを編集していることを確認してください。手順については、「ロールの信頼ポリシーの変更」と「ロールのアクセス許可ポリシーの変更」をご参照ください。
既存のロールの信頼関係の編集
ロールを切り替えるユーザーアクセス権限の付与