Amazon Simple Storage Service (Amazon S3) バケットで、AWS Key Management Service (AWS KMS) のデフォルトの暗号化を使用しています。バケットにファイルをアップロードしようとすると、Amazon S3 から Access Denied というエラーメッセージが返されます。どうすれば解決できますか?
解決方法
まず、以下を確認します。
次に、表示されたエラーメッセージに基づいて、IAM ユーザーまたはロールの AWS KMS 許可を更新します。
重要:
- AWS KMS キーと IAM ロールが別々の AWS アカウントに属している場合は、IAM ポリシーと KMS キーポリシーを更新する必要があります。KMS 許可は、IAM ポリシーと KMS キーポリシーの両方に追加するようにしてください。
- IAM ポリシーを使用して KMS キーへのアクセスを制御するには、KMS キーのキーポリシーで、IAM ポリシーを使用する許可をアカウントに付与する必要があります。
「An error occurred (AccessDenied) when calling the PutObject operation: Access Denied」
このエラーメッセージは、IAM ユーザーまたはロールに kms:GenerateDataKey アクションに対する許可が必要であることを示しています。
kms:GenerateDataKey に許可を追加するには、次の手順に従います。
1. IAM コンソールを開きます。
2. Amazon S3 バケットへのファイルのアップロードに使用する IAM ユーザーまたはロールを選択します。
3. [Permissions] (許可) で、各ポリシーを展開して JSON ポリシードキュメントを表示します。
4. JSON ポリシードキュメントで、AWS KMS アクセスに関連するポリシーを探します。"Effect": "Allow" のステートメントを確認し、ユーザーまたはロールが、バケットの AWS KMS キーに対する kms:GenerateDataKey アクションに対する許可を持っているかどうかを確認します。
5. この許可がない場合は、適切なポリシーに許可を追加します。手順については、「ユーザーへの許可の追加 (コンソール)」または「ロールの許可ポリシーの変更 (コンソール)」を参照してください。
6. JSON ポリシードキュメントで、"Effect": "Deny" のステートメントを探します。これらのステートメントがバケットでの s3: PutObject アクションを拒否しないことを確認します。これらのステートメントによって バケットの暗号化に使用されるキーに対する kms:GenerateDataKey アクションへの IAM ユーザーまたはロールのアクセスが拒否されないことを確認しますまた、VPC エンドポイントポリシー、サービスコントロールポリシー、許可境界、またはセッションポリシーを使用する場合は、必要な KMS および S3 の許可も制限しないでください。
“CreateMultipartUpload オペレーションを呼び出すときにエラー (AccessDenied) が発生しました: アクセスが拒否されました”
このエラーメッセージは、IAM ユーザーまたはロールに kms:GenerateDataKey および kms:Decrypt アクションに対する許可が必要であることを示します。
次の手順に従って、kms:GenerateDataKey および kms:Decrypt の許可を追加します。
1. IAM コンソールを開きます。
2. Amazon S3 バケットへのファイルのアップロードに使用する IAM ユーザーまたはロールを選択します。
3. [Permissions] (許可) で、各ポリシーを展開して JSON ポリシードキュメントを表示します。
4. JSON ポリシードキュメントで、AWS KMS アクセスに関連するポリシーを探します。"Effect": "Allow" のステートメントを確認し、バケットの AWS KMS キーに対する kms:GenerateDataKey および kms:Decrypt の許可がロールにあるかどうかを確認します。
5. これらの許可がない場合は、適切なポリシーに許可を追加します。手順については、「ユーザーへの許可の追加 (コンソール)」または「ロールの許可ポリシーの変更 (コンソール)」を参照してください。
6. JSON ポリシードキュメントで、"Effect": "Deny" のステートメントを探します。次に、これらのステートメントがバケットで s3: PutObject アクションを拒否しないことを確認します。これらのステートメントによって、バケットの暗号化に使用されるキーに対する kms:GenerateDataKey および kms:Decrypt アクションに対する IAM ユーザーまたはロールのアクセスが拒否されていないことも確認します。また、VPC エンドポイントポリシー、サービスコントロールポリシー、許可境界、またはセッションポリシーを使用する場合は、必要な KMS および S3 の許可も制限しないでください。
関連情報
Amazon S3 バケットのデフォルトのサーバー側暗号化動作の設定