Amazon S3 バケットポリシーを更新しようとする際、「Invalid principal in policy」というエラーが発生する理由を知りたいです。

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) バケットポリシーを追加または編集しようとすると、「Invalid principal in policy」というエラーが発生します。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

Amazon S3 バケットポリシーに Principal 要素の無効な値が含まれている場合、「Invalid principal in policy」というエラーが表示されます。このエラーを解決するには、次のトラブルシューティング手順を実行します。

バケットポリシー内の Principal 要素がサポートされている値を使用していることを確認する

S3 バケットポリシーの Principal 要素には、サポートされている次の値を指定してください。

注: ワイルドカードのアスタリスク文字 (*) を Principal 要素として使用する場合、すべての認証されたユーザーおよび匿名ユーザーにアクセスが付与されます。

Principal 値の形式が正しいことを確認する

バケットポリシーの Principal 要素が正しくフォーマットされていることを確認します。Principal 要素に単一のユーザーが含まれている場合は、次の形式を使用します。

"Principal": {    "AWS": "arn:aws:iam::111111111111:user/user-name1"
}

注: user-name1 は、実際の IAM ユーザーの名前に置き換えます。

Principal 要素に複数の IAM ユーザーまたはロールが含まれている場合は、次の形式を使用します。

"Principal": {  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "arn:aws:iam::111111111111:role/role-name1"
  ]
}

注: 実際のものでそれぞれ、user-name1 を IAM ユーザー名に、role-name1 を IAM ロール名に置き換えます。

Principal 要素にすべてのユーザーが含まれている場合は、次の形式を使用します。

{  "Principal": "*"
}

注: Allow 効果を含むリソースベースのポリシーの Principal 要素では、ワイルドカード (*) を使用しないことをおすすめします。ワイルドカード (*) は、パブリックアクセスまたは匿名アクセスを許可する場合にのみ使用してください。Principal 要素内に、目的のプリンシパル、サービス、または AWS アカウントを指定します。次に、Condition 要素を使用してアクセスを制限します。

IAM ユーザーまたはロールが削除されていないことを確認する

一意の識別子を Principal 要素として使用してバケットポリシーを保存しようとすると、「Invalid principal in policy」というエラーが発生します。これは、Principal 要素が有効な IAM の ARN のみをサポートしているためです。このエラーを解決するには、Principal 要素から一意の識別子をすべて削除する必要があります。

バケットポリシーの Principal 要素に IAM ユーザーまたはロールが含まれている場合は、それらの IAM ID が削除されていないことを確認します。バケットポリシーから削除された IAM ユーザーとロールを識別するには、Principal 要素で完全な ARN ではなく、一意の識別子を指定します。

"Principal": {  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "AIDAJQABLZS4A3QDU576Q",
    "arn:aws:iam::111111111111:user/user-name2"
  ]
}

注: user-name1 and user-name2 は、実際の IAM ユーザー名に置き換えます。

IAM プリンシパルのアカウントでリージョンが有効になっていることを確認する

デフォルトでは AWS により有効化されない AWS リージョンにバケットを配置している場合は、IAM プリンシパルのアカウントでそのリージョンを有効化済みであることを確認します。詳細については、「アカウント内の AWS リージョンを有効化または無効化する」を参照してください。

IAM Access Analyzer を使用してバケットアクセスを検証する

アクセス許可をデプロイする前に S3 バケットへのアクセスを検証するには、AWS Identity and Access Management Access Analyzer を使用します。別の AWS アカウントからのリソースを付与する S3 バケットポリシーを確認できます。

IAM Access Analyzer を使用して AWS CloudTrail イベントを分析し、そのアクティビティに基づいて IAM ポリシーを生成することもできます。詳細については、「IAM Access Analyzer でポリシーを生成する」を参照してください。

IAM Access Analyzer を有効化する方法については、「AWS Identity and Access Management Access Analyzer の始め方」を参照してください。

注: AWS では、1 か月あたりに作成した未使用のアクセス分析に対して料金が発生します。詳細については、「IAM Access Analyzer の料金」を参照してください。

IAM Access Analyzer のアクセス許可をトラブルシューティングする方法については、「IAM Access Analyzer が生成したポリシーに関するアクセス許可の問題を解決する方法を教えてください」を参照してください。

コメントはありません

関連するコンテンツ