AWS Key Management Service にキーをインポートするにはどうすればよいですか?

所要時間2分
0

AWS Key Management Service (AWS KMS) にキーマテリアルをインポートして、AWS サービスで 256 ビットの対称キーを使用したいと思います。

解決策

AWS KMS を使用すると、キーマテリアルを AWS KMS キーにインポートできます。次に、AWS KMS によってサポートされる AWS サービスとこのキーを使用できます。
次の手順に従って、キーマテリアルをAWS KMSにインポートします。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

  1. キーマテリアルなしで AWS KMS キーを作成し、AWS KMS キーの 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. パブリックキーとインポートトークンを別々の Base64 エンコードファイルに配置するには、次のコマンドを実行します:

    echo $KEY | awk '{print $1}' > PublicKey.b64echo $KEY | awk '{print $2}' > ImportToken.b64
  6. Base64 エンコードされたファイルをバイナリファイルに変換してインポートするには、次のコマンドを実行します:

    openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.binopenssl 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. インポートされたキーのステータスが [Enabled] に設定されているかどうかを確認します。これを行うには、AWS KMS コンソールでキーを確認するか、DescribeKey API アクションを実行します。

キーをインポートできない場合は、ユースケースに合わせて次の手順を実行してください:

  • 24 時間以上待ち、インポートトークンが期限切れになっている。これを解決するには、ラッピングキーとインポートトークンを再度ダウンロードしてキーマテリアルを再暗号化してください。
  • キーマテリアルが 256 ビットの対称キーではありません。これを解決するには、暗号化されキーマテリアルのファイルサイズが 32 バイトであることを確認してください。ファイルサイズを確認するには、以下のいずれかのコマンドを実行してください:

Linux

wc -c <filename>.bin

Windows

詳細については、「AWS KMS キーのキーマテリアルをインポートする」を参照してください。

dir <filename>.bin

関連情報

OpenSSL を使用して AWS KMS にキーをインポートしていますが、「InvalidCiphertext」エラーが発生します。これを修正するにはどうすればよいですか?