問題の説明
バケットに Key Management Service (SSE-KMS) を使用したサーバ側暗号化が設定されているにもかかわらず、x-oss-server-side-encryption-context リクエストヘッダーを設定してオブジェクトをアップロードすると、エラーが返されます。
原因
x-oss-server-side-encryption-context は、BYOK(Bring Your Own Key)シナリオ — すなわち、同一リクエスト内で x-oss-server-side-encryption-key-id を設定してお客様自身の KMS キーを指定する場合 — のみ有効です。OSS では、x-oss-server-side-encryption-context を設定したリクエストであっても、x-oss-server-side-encryption-key-id が設定されていない場合は、そのリクエストを拒否します。
事例
バケットに KMS 管理キー(非 BYOK)を使用した SSE-KMS が設定されています。この状態でオブジェクトをアップロードする際:
x-oss-server-side-encryption-key-idは設定されていません(非 BYOK シナリオ)x-oss-server-side-encryption-contextは設定されています
OSS は、x-oss-server-side-encryption-context が非 BYOK シナリオには該当しないため、リクエストを拒否し、エラーを返します。
ソリューション
ご意図に応じて、以下のいずれかの対応を選択してください。
ヘッダーを削除する:KMS 管理キーを使用した SSE-KMS を利用している場合、リクエストから
x-oss-server-side-encryption-contextヘッダーを削除してください。BYOK へ切り替える:カスタムの暗号化コンテキストを渡す必要がある場合、
x-oss-server-side-encryption-key-idをお客様の KMS キー ID に設定してください。この場合、両方のヘッダーが同時に有効になります。