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

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

AWS のサービスで 256 ビットの対称キーを使用したいと考えています。AWS Key Management Service (AWS KMS) でキーマテリアルをインポートするにはどうすればよいですか?

解決方法

AWS KMS では、AWS KMS がサポートする AWS のサービスでの使用のために、キーマテリアルを AWS KMS キーにインポートすることができます。

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

1.    キーマテリアルがない KMS キーを作成します。KMS キーの ID をメモしておいてください。

注意: キー管理アクセス許可の定義キー使用アクセス許可の定義では、キー管理者とキーロールのいずれかの認証情報が漏洩した場合における影響を制限するために、これらを分離させておくことがベストプラクティスです。

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

3.    このコマンドを実行すると、256 ビットの対称キーが生成されます。

openssl rand -out PlaintextKeyMaterial.bin 32

4.    これらの AWS Command Line Interface (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