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