KMSを使用してキーを暗号化&復号する手順

久しぶりのブログの更新となります。
今日は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

以上