エラー原因を調べたときに、ほとんど情報が無かったのでここにまとめておく。
エラーの発生
QNAPのNASにて、Hybrid Backup sync(以下 HBS)を用いて Amazon S3 に作成したバケットにバックアップをしようとしたところ、下記エラーが出てバックアップできなかった。
警告 ハイブリッドバックアップ同期 [日時] [Hybrid Backup Sync]
Backup job "[ジョブ名]": Failed to upload file/folder from "[バックアップしたいファイル]".
You do not have permission to access this file. Check access permissions.
日本語では、
警告 [日時など] Hybrid Backup Sync Job Status [Hybrid Backup Sync]
バックアップジョブ「[ジョブ名]」:「[バックアップしたいファイル]」からのファイル/フォルダーの
アップロードに失敗しました。このファイルにアクセスする権限がありません。
アクセス権限を確認してください。
現状
NAS側
- 当該ファイルにはNASの File Station でアクセスできる。
- 別のクラウドストレージには正常にバックアップできる。
Amazon S3側
- バケット内のオブジェクトの暗号化には SSE-KMSを使用
- S3 にアクセスするための IAMユーザーを作成しており、そのIAMユーザーの マネジメントコンソール経由では、作成したバケットにファイルをアップロードできる。
- バケットには、PCから WinSCP で、アクセスキーを用いてアクセスできる。
解決方法
HBS の「サーバー側の暗号化を使用する」を無効にする。
原因と詳細
原因は、S3 のバケットに設定した「バケットポリシー」
エラー発生時には、「SSE-KMSでの暗号化の強制」を実現するようなバケットポリシーを設定していた。
HBS の 「サーバー側の暗号化を使用する」を有効にすると、SSE-S3 での暗号化が明示的に指定される ようで、バケットのデフォルト暗号化の設定を SSE-S3 以外に設定していても、SSE-S3 で暗号化されてしまった。
そのため、バケットポリシーで「SSE-KMSでの暗号化の強制」を設定していると、SSE-S3を用いて暗号化しようとする HBS を拒否してしまい、データをアップロードすることができなくなってしまっていた。
HBSの詳細ログにも、403エラーが発生したようなことが書かれていた。
よって、「サーバー側の暗号化を使用する」を無効にすると、明示的に暗号化の方式が指定されなくなり、バケットのデフォルト暗号化の設定に従って暗号化されるようになる。
※ソースコードを見たわけではないので、あくまで参考までに。
さいごに
思い込みを排除して原因を切り分けたり、詳細ログをしっかり分析するようにしたい。