aws cli インターフェース(linux環境)で、ファイルの暗号化(復号)を行う
「aws kms」コマンドでファイルの暗号化は可能だが、ファイルサイズ制限がある。
awsサポートに「容量の大きいファイルをEC2(linux)環境で暗号化したい」と問い合わせた所、「aws-encryption-sdk-cli」を勧められた。
(暗号鍵は、kmsで管理し、暗号化(復号)は、aws-encryption-cli を使うのがベストプラクティスとのこと)
今回は、「aws-encryption-cli」の使用例について記載する。
(前提)
① aws cli のインストールは済。
バージョン:aws-cli/2.4.28 Python/3.8.8 Linux/4.18.0-348.20.1.el8_5.x86_64 exe/x86_64.rhel.8 prompt/off (「aws --version」コマンドで確認)
② aws-encryption-sdk-cliはインストール済。
バージョン:aws-encryption-cli --version (「aws-encryption-cli --version」コマンドで確認)
(インストール手順:https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/crypto-cli-install.html)
手順1:kmsにて、「カスタマー管理型のキー」を作成する
手順2:手順1で作成したキーidとarnを用いて、暗号化(復号)を行う
暗号化時は、キーidを指定し、復号化時は、キーarnを指定するのがポイント。
encryption-contextオプションは、なくても可能だが、設定する場合は、暗号化・復号で合わせる必要がある。
# 暗号化 キーidを指定
/usr/local/bin/aws-encryption-cli --encrypt --input 【ファイル名】 --wrapping-keys key=********-****-****-****-**** --output . --metadata-output ~/metadata --encryption-context purpose=testtest
# 復号 キーarnを指定
/usr/local/bin/aws-encryption-cli --decrypt --input 【ファイル名】 --wrapping-keys key=arn:aws:kms:*******:******:key/********-****-****-****-**** --output . --metadata-output ~/metadata --encryption-context purpose=testtest
encryption-contextオプションを指定しない場合は以下の通り
# 暗号化 キーidを指定
/usr/local/bin/aws-encryption-cli --encrypt --input 【ファイル名】 --wrapping-keys key=********-****-****-****-**** --output . --metadata-output ~/metadata
# 復号 キーarnを指定
/usr/local/bin/aws-encryption-cli --decrypt --input 【ファイル名】 --wrapping-keys key=arn:aws:kms:*******:******:key/********-****-****-****-**** --output . --metadata-output ~/metadata
補足:「aws-encryption-cli」実行時に以下のエラーが出た
Encountered unexpected error: increase verbosity to see details.
UnknownRegionError("No default region found and no region determinable from key id: ********-****-****-****-****")
これは、aws configureの設定で、リージョンを設定していなかったのが原因だった。
「aws configure get region」コマンドで確認し設定し直した所、エラーは解消された。