KMS を触ってみる
KMS を触ってみる
参考
手順
- マスターキーを発行する
- マスターキーを使用してデータキーと暗号化されたデータキーを発行する
- データキーでテキストを暗号化する
- マスターキーを使って暗号化されたデータキーを複合する
- 複合されたデータキーを使ってテキストを複合する
マスターキーを発行する
AWS で KMS を検索して下記の通りに入力しマスターキーを発行してみる。
-
キーを設定
- 次の値を設定する。
- キーのタイプ: 対象
- キーの使用: 暗号化および復号化
- 「次へ」をクリックする。
- 次の値を設定する。
-
ラベルを追加
- 次の値を設定する。
- エイリアス: alias-hoge
- 説明: 説明ほげ
- 「次へ」をクリックする。
- 次の値を設定する。
-
キーの管理アクセス許可を定義
- 次の値を設定する。
- キー管理者: 任意のユーザーまたはロールにチェックを入れる
- キーの削除: デフォルトで「キーの管理者がこのキーを削除できるようにします。」にチェックがついたままにする。
- 「次へ」をクリックする。
- 次の値を設定する。
-
キーの使用アクセス許可を定義
- 次の値を設定する。
- キーユーザー: 任意のユーザーまたはロールにチェックを入れる
- 「次へ」をクリックする。
- 次の値を設定する。
-
確認
- 「完了」をクリックする。
マスターキーを使用してデータキーと暗号化されたデータキーを発行する
aws-cli のバージョンを確認する。
aws --version
aws-cli/1.27.108 Python/3.8.16 Linux/5.4.72-microsoft-standard-WSL2 botocore/1.29.108
KMS の API を用いて、CMK に紐づくデータキーを作成する。
(オプション --key-id には、先ほど作成したマスターキー CMK の ARN を指定する。)
aws kms generate-data-key --key-id arn:aws:kms:ap-northeast-1:123456789012:key/12345678-1234-1234-1234-123456789012 --key-spec AES_256
実行するとターミナルに下記のような値が表示される。
{
"CiphertextBlob": "xxx",
"Plaintext": "xxx",
"KeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/12345678-1234-1234-1234-123456789012"
}
- Plaintext: データキー
- CiphertextBlob: 暗号化されて Base64 エンコードされたデータキー
- KeyId: 暗号化に使用したマスターキー
値をコピーしてデータキーと暗号化されたデータキーを書き出す。
echo [Plaintext の値] > plain-datakey
echo [CiphertextBlob の値] | base64 --decode > encrypted-datakey
データキーでテキストを暗号化する
テキストを配置する。
cat plain-document
KMS完全に理解した。
データキー plain-datakey を用いて aes-256-cbc モードで暗号化して、ファイル encrypted-hogehoge.txt として保存する。
openssl aes-256-cbc -e -in plain-document -out encrypted-document -pass file:plain-datakey
cat encrypted-document
t4�y���r��c�-'��~��
マスターキーを使って暗号化されたデータキーを複合する
暗号化されたデータキーを複合する。
aws kms decrypt --ciphertext-blob fileb://encrypted-datakey --output text --query Plaintext > decrypted-datakey
データキーを作成した時に入手した、暗号化前のデータキーと比較し、データが一致することを確認する。
diff plain-datakey decrypted-datakey
複合されたデータキーを使ってテキストを複合する。
復号後のデータキーを用いて、暗号化したファイルを復号する。元通りになっていることを確認する。
openssl aes-256-cbc -d -in encrypted-document -pass file:decrypted-datakey > decrepted-document
複合後のテキストを確認する。
cat decrepted-document
KMS完全に理解した。
ディスカッション
コメント一覧
まだ、コメントがありません