【小ネタ】S3のデフォルト暗号化にAWS-KMSを利用する際の注意事項
こんにちは、臼田です。
皆さん暗号化していますか?
今回はS3のデフォルト暗号化をAWS-KMSで利用している際、特にCLIで利用している際に困ったことがあったので注意事項としてまとめました。
KMSでデフォルト暗号化設定するとどうなるのか
マネジメントコンソールからS3のデフォルト暗号化設定をAWS-KMSで行う際、プロパティからデフォルト暗号化 -> AWS-KMSを選択したあとCMKを選びます。
設定後、CMKのエイリアスが表示されるのですが、画面をリロードするとエイリアスではなくカスタムKMS ARNとして扱われARNが表示されます。この状態ではどのCMKを利用しているか分かりづらいです。また、この状態はただのテキストとして扱われており、適切なARNであるかは確認されません。
マネジメントコンソールから設定する場合には選択時にエイリアスを選択するのでまだわかりやすいですが、awscli等から設定する場合にはput-bucket-encryption apiを利用しますがこちらでCMKのARNを流し込んだ際に正しいARNであるかチェックされません。間違っていても設定自体は正常に処理されます。
そして、ファイルをアップロードする段階になってエラーが発生し初めて気づきます。
マネジメントコンソールから確認しても正常であるかを判断することができない(ARNの文字列なので突合させればいいですが、目視では現実的ではない)ので気をつける必要があります。
どうすればいいのか
下記のような方法が考えられます。
- 設定前・設定時
- マネジメントコンソールから設定する
- CLIやSDKからCMKのARNが正しいことをAPIで確認した後利用する
- 設定後
- テストファイルをアップロードする処理を入れる
- API等で取得したARNが適切であることを確認する
API的な話をすると、get-bucket-encryptionして取得したARNをdescribe-key等で確認すれば問題ありません。
一度にたくさんのS3を処理する場合には、特にAPIで確認すると楽だと思います。
まとめ
S3でデフォルト暗号化としてAWS-KMSを使う際の注意事項をあげました。
特にCLIから設定する場合には、設定時は値が間違ってても正常に処理されてしまうので、信頼できる値を利用するか、設定後の確認を徹底するようにしましょう。