https://qiita.com/RuyPKG/items/21d397516c2df2f0c45a
https://cloud-aws-gcp.hateblo.jp/entry/2019/11/27/102334
https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/concepts.html#enveloping
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 1.2 jqインストール
sudo yum -y install jq
-- 2. KMSカスタマキーの作成
aws kms create-key \
--description key01
aws kms create-alias \
--alias-name alias/key01 \
--target-key-id 11111111-2222-3333-4444-555555555555
aws kms list-aliases
-- 3. 平文の作成
echo "hello world" > plain_text
cat plain_text
-- 4. DataKeyとEncrypted DataKeyの作成
output=$(aws kms generate-data-key \
--key-id alias/key01 \
--key-spec AES_256)
echo $output
echo $output | jq -r .Plaintext
echo $output | jq -r .Plaintext > plain_datakey
※ CiphertextBlobはbase64でエンコードされている
echo $output | jq -r .CiphertextBlob
echo $output | jq -r .CiphertextBlob | base64 --decode
echo $output | jq -r .CiphertextBlob | base64 --decode > encrypted_datakey
-- 5. 暗号文の作成
openssl enc -e -aes-256-cbc -in plain_text -out encrypted_text -pass file:plain_datakey
cat encrypted_text
-- 6. 平文とDatakeyを削除
ls -l
rm -i plain_{text,datakey}
ls -l
-- 7. Encrypted DataKeyの復号
output=$(aws kms decrypt \
--key-id alias/key01 \
--ciphertext-blob fileb://encrypted_datakey)
echo $output
echo $output | jq -r .Plaintext
echo $output | jq -r .Plaintext > decrypted_datakey
-- 8. 復号したDataKeyで暗号文を復号
openssl enc -d -aes-256-cbc -in encrypted_text -pass file:decrypted_datakey -out decrypted_text
cat decrypted_text
-- 9. クリーンアップ
-- KMSカスタマキーの削除
aws kms list-aliases | grep -A4 key01
aws kms list-keys
aws kms schedule-key-deletion \
--key-id 11111111-2222-3333-4444-555555555555 \
--pending-window-in-days 7