IAM ポリシーを作成または更新したところ、「Has prohibited field Principal」(禁止フィールド Principal があります) というエラーが表示されました。このエラーはどのように解決すればよいですか?

最終更新日: 2022 年 2 月 15 日

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 ロールに信頼ポリシーを追加するには、アクセス権限ポリシーではなく信頼ポリシーを編集していることを確認してください。手順については、「ロールの信頼ポリシーの変更」と「ロールのアクセス許可ポリシーの変更」をご参照ください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?