AWS Key Management Service に自分のキーをインポートする方法

最終更新日: 2020 年 8 月 21 日

AWS のサービスで 256 ビット対称鍵を使用する必要があります。AWS Key Management Service (AWS KMS) で自分のキーマテリアルをインポートする方法

解決方法

AWS KMS は AWS KMS でサポートされる AWS のサービスで使用するカスタマーマスターキーにキーマテリアルをインポートすることを許可します。

AWS KMS でキーマテリアルをインポートするには、以下の手順を実行します。

1.    キーマテリアルなしで CMK を作成します。CMK のキー ID を書き留めます。

注 : キー管理権限の定義キー使用権限の定義の場合、いずれかの資格情報が公開された場合の影響を制限するために、キー管理者とキーロールを分けることが最善策です。

2.    ローカルマシンのターミナルまたはインストールされている OpenSSL で Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを開きます。

3.    次のコマンドを実行して、256 ビット対称キーを生成します。  

openssl rand -out PlaintextKeyMaterial.bin 32

4.    これらの AWS コマンドラインインターフェイス (AWS CLI) コマンドを実行して、キーを記述し、インポートのためのパラメータを取得します。

注 : コマンドはパブリックキーをストアし、トークンパラメータを変数にインポートします。 

export KEY=`aws kms --region eu-west-2 get-parameters-for-import --key-id example1-2345-67ab-9123-456789abcdef --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey,Token:ImportToken}' --output text`

5.    これらのコマンドを実行してパブリックキーを配置し、トークンを個別の base 64 でエンコードされたファイルにインポートします。

echo $KEY | awk '{print $1}' > PublicKey.b64
echo $KEY | awk '{print $2}' > ImportToken.b64

6.    これらのコマンドを実行して、base64 エンコードファイルをインポートのためのバイナリファイルに変換します。  

openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
openssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin

7.    これらのコマンドを実行して、バイナリファイルに変換されたパブリックキーでキーマテリアルを暗号化します。

openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

8.    これらのコマンドを実行して、AWS KMS で暗号化されたキーマテリアルをインポートします。

注 : この例では、キーマテリアルの有効期限は切れていませんが、キーマテリアルの有効期限を設定するように選択できます。詳細については、ExpirationModelを参照してください。

aws kms --region eu-west-2 import-key-material --key-id example1-2345-67ab-9123-456789abcdef --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

9.    IAM コンソールのキーを見直すか、DescribeKey API アクションを実行することによって、インポートされたキーステータスが [有効] に設定されていることを確認します。

次のいずれかの理由でキーをインポートできない場合:

  • 24 時間以上待機したためインポートトークンの有効期限が切れました。この問題を解決するには、もう一度ラップキーとインポートトークンをダウンロードしてキーマテリアルを再暗号化します。
  • お使いのキーマテリアルは 256 ビット対称キーではありません。暗号化されたキーマテリアルのファイルサイズが 32 バイトであることを確認します。以下のコマンドのいずれかを実行し、ファイルのサイズを確認します。

Linux

wc -c <filename>.bin

Windows

dir <filename>.bin