前提(用語)
- カスタマーマスターキー(CMK)
- AWS側で管理される鍵
- データの暗号化には直接利用しない
- マネジメントコンソールであらかじめ作成しておく(持ち込みも可能らしい)
- カスタマーデータキー(CDK)
- ユーザーがデータの暗号化に用いる鍵
- 通常はAWSで暗号化されて保存されており、データの暗号時/複号時に、都度復号化して取得する
概要
データを暗号化/復号化する流れ。暗号化/復号化に用いる鍵(CDK)をKMSで管理する。
CMKはあらかじめマネコン等で作成しておくこと。
手順メモ
1. カスタマーデータキー(CDK)を作成する
% aws kms generate-data-key --key-id "[CMKのキーID]" --key-spec "AES_256"
{
"Plaintext": "[平文のカスタマーデータキー]",
"KeyId": "[CMKのARN]",
"CiphertextBlob": "[暗号化されたカスタマーデータキー]"
}
2. データの暗号化
お好きなツールで [平文のカスタマーデータキー]
を使ってデータを暗号化
3. [平文のカスタマーデータキー]
は破棄する
4. [暗号化されたカスタマーデータキー]
を保存する
Base64デコードして保存しておく(後に、平文のカスタマーデータキーの取得に必要)
echo [暗号化されたカスタマーデータキー] | base64 -d > enc.txt
5. [平文のカスタマーデータキー]
を取得する
暗号化されたカスタマーデータキーを用いて [平文のカスタマーデータキー]
を取得して data-key.txt
ファイルに保存する。 data-key.txt
に保存される内容は前段で取得した [平文のカスタマーデータキー]
と同じ文字列が保存される。
aws kms decrypt --ciphertext-blob fileb://enc --query Plaintext --output text > data-key.txt
6. データの復号化
取得した data-key.txt
を用いてお好きなツールで復号化する。
参考
AWS Black Belt Online Seminar AWS Key Management Service (KMS) https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-aws-key-management-service-kms
AWS KMSを使って秘密鍵を管理する | DACエンジニアブログ:アドテクゑびす界 http://yebisupress.dac.co.jp/2017/03/30/aws-kms%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%A7%98%E5%AF%86%E9%8D%B5%E3%82%92%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B/
[JAWS-UG CLI] Amazon KMS 入門 (2) データの暗号化・復号化 - Qiita https://qiita.com/domokun70cm/items/a863ae60d4467fc7a790