1. 背景
検証でKMSのキーを作り、暗号化したいです。
マネコンで画面を切り替えて作るのが面倒ですし、アプリをその都度つくるのも手間です。
なので、AWS-CLIでやってみました。
2. 方法
2.1. キーを作成する
以下のコマンドで作成します。
aws kms create-key --description "<key_description>" --tags <tags> --alias <alias_name>
具体的には以下のように記述します。
--alias
でエイリアスを入力しておかないと、一覧で何のキーかわからなくなります。なので、エイリアスの入力はmustだと思います。また、--tags
は便宜上入れておいたほうがいい程度です。
aws kms create-key --description "My Custom Key" --tags Key=env,Value=stag --alias my-custom-key-alias
2.2. 作ったKMSのキーで暗号化
以下で暗号化します。
aws kms encrypt --key-id <KMS_KEY_ARN> --plaintext <SECRET_VALUE> --output text --query CiphertextBlob
具体的には以下です。password
という文字列を暗号化しようとしています。
なお、ARNはボヤかしてます。
aws kms encrypt --key-id arn:aws:kms:ap-northeast-1:123456789012:key/653e48ee-38e1-478f-8c6b-ac92b5c52700 --plaintext password --output text --query CiphertextBlob
上記の出力結果は以下です。パッと見ても何の文字列かわかりません。
AQICAHiYg12Xb/sRfQG/hRwvTC5hopbu6K32E5WzOz6mMwMW1QFlob9APF/ojVWFC32QmfpfAAAAZDBiBgkqhkiG9w0BBwagVTBTAgEAME4GCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM7DHbSkGv5TiMeMfvAgEQgCG3fzOE1mMxaxW7eU2GXyy+/PK3rqEKAh+nt+mIMmRBu1s=
2.3. KMSのキーで復号
2.3.1. 文字列をファイルに書く
/
のようなエスケープ文字もあるので、暗号化された文字列をファイルに書きます。
echo "<encrypted_string>" > encrypted_data.txt
2.3.2. KMSキーのARNを取得する
<key_id> には、使用したKMSキーのIDまたはエイリアスを指定します。
aws kms describe-key --key-id <key_id> --query "KeyMetadata.Arn" --output text
2.3.3. aws kms decrypt コマンドを使って復号する
<key_arn> はKMSキーのARNを指定します。これで復号します。
aws kms decrypt --ciphertext-blob fileb://encrypted_data.txt --key-id <key_arn> --query Plaintext --output text | base64 --decode