久しぶりのブログの更新となります。
今日はAWSの鍵管理サービスの一つであるKMSについての記事を書きたいと思います。
手順
キーを作成する
まずCMKと呼ばれる暗号化するキーを作成します。
aws kms create-key --description test-key --region ap-northeast-1
エイリアスを作成
CLI経由で作成すると作成したキーに対して名前が設定されずに作成されます。
なので鍵の利用用途を明示しておくことで管理しやすくするために、キーに名前を設定します。
aws kms create-alias --alias-name test-key --target-key-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
KMSのキー情報を参照
$ aws kms list-aliases
{
"Aliases": [
{
"AliasArn": "arn:aws:kms:ap-northeast-1:xxxxxxxxxxxx:alias/test-key",
"AliasName": "alias/test-key",
"TargetKeyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
]
}
平文を暗号化する
--key-id
は以下4つのいずれかを入力します。
- Key ID
- Key ARN
- Alias name
- Alias ARN
$ aws kms encrypt \
--key-id arn:aws:kms:ap-northeast-1:xxxxxxxxxxxx:alias/test-key \
--plaintext fileb://<(cat plaintext.txt) \
--query CiphertextBlob \
--output text | tee encrypt.txt
暗号化を復号して平文を生成する
base64をデコードして、復号します。
復号した文字列もbase64で出力されるので、デコードすると平文の文字列が生成されます。
aws kms decrypt \
--ciphertext-blob fileb://<( cat encrypt.txt | base64 --decode ) \
| jq .Plaintext --raw-output \
| base64 --decode\
| tee decrypt.txt
以上