Bring Your Own Key (BYOK) を構成する

完了

シナリオ

Key Vault のお客様が、Azure の外部にあるオンプレミスのハードウェア セキュリティ モジュール (HSM) から Azure Key Vault をサポートする HSM に、キーを安全に転送したいと考えています。 Key Vault の外部で生成されたキーをインポートするプロセスは Bring Your Own Key (BYOK) と呼ばれます。

次の要件があります。

  • 転送されるキーが HSM の外部でプレーン テキスト形式で存在することは絶対にない。
  • HSM の外部では、転送されるキーは、Azure Key Vault HSM に保持されているキーによって常に保護されている。

用語

キーの名称 [キーの種類] 元のドメイン 説明
キー交換キー (KEK) RSA Azure Key Vault HSM Azure Key Vault で生成される、HSM で保護された RSA キー ペア
ラッピング キー AES ベンダー HSM オンプレミスの HSM によって生成される (一時的な) AES キー
ターゲット キー RSA、EC、AES (Managed HSM のみ) ベンダー HSM Azure Key Vault HSM に転送されるキー

キー交換キー (KEK):これは、BYOK (Bring Your Own Key) キーのインポートを目的とした、顧客が生成する、HSM でサポートされるキーです。 KEK には、次のような特性があります。

  • サイズが 4096 ビット、3072 ビット、または 2048 ビットの RSA-HSM キーである必要があります。
  • そのキー オペレーション (key_ops) は "'import" に制限されており、BYOK プロセス中にのみ使用できます。
  • これは、ターゲット キーがインポートされる場所と同じコンテナー内に存在する必要があります。

ユーザーの手順

キー転送を実行するには:

  1. KEK を生成します。
  2. KEK の公開キーを取得します。
  3. HSM ベンダーから提供される BYOK ツールを使用して、KEK をターゲット HSM にインポートし、KEK によって保護されたターゲット キーをエクスポートします。
  4. 保護されたターゲット キーを Azure Key Vault にインポートします。

顧客は、HSM ベンダーから提供された BYOK ツールとドキュメントを使用して手順 3 を完了します。 キー転送 BLOB (".byok" ファイル) が生成されます。

HSM の制約

既存の HSM では、管理するキーに次のような制約が適用される場合があります。

  • キーのラップベースのエクスポートを許可するように HSM を構成しなければならない場合がある。
  • HSM で制御されたエクスポートを可能にするには、ターゲット キーを Cryptoki 属性 (CKA)_EXTRACTABLE でマークすることが必要になる場合があります
  • 場合によっては、KEK とラッピング キーを CKA_TRUSTED とマークする必要があります。こうすると、HSM でキーをラップするために使用できます。

ソース HSM の構成は、通常、この仕様の範囲外です。 Microsoft では、このような構成手順を含む BYOK ツールに付随するドキュメントを HSM ベンダーが作成することを想定しています。

注意

これらのステップのいくつかは、Azure PowerShell や Azure portal などの他のインターフェイスを使って実行できます。 Key Vault SDK の同等の関数を使用してプログラムで実行することもできます。

KEK を生成する

インポートのためのキー操作セットで KEK を作成するには、az keyvault key create コマンドを使用します。 次のコマンドから返されるキー識別子 "kid" を記録しておきます。

az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --vault-name ContosoKeyVaultHSM




サービスでは、さまざまな KEK の長さがサポートされます。たとえば、Azure SQL は、2048 バイトまたは 3072 バイトのキー長のみをサポートします。

KEK の公開キーを取得する

KEK の公開キー部分をダウンロードして PEM ファイルに格納します。

az keyvault key download --name KEKforBYOK --vault-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem




HSM ベンダーから提供される BYOK ツールを使用してキー転送 BLOB を生成する

HSM ベンダーから提供された BYOK ツールを使って、キー転送 BLOB を作成します (".byok" ファイルとして保存されます)。 .Privacy-Enhanced Mail (.pem ファイル) としての KEK 公開キーは、このツールへの入力の 1 つです。

キー転送 BLOB

長期的には、Microsoft は、PKCS#11 CKM_RSA_AES_KEY_WRAP メカニズムを使用してターゲット キーを Azure Key Vault に転送します。これは、このメカニズムでは単一の BLOB が生成されるためですが、さらに重要なのは、中間 AES キーが 2 台の HSM によって処理され、一時的であることが保証されるためです。 このメカニズムは、一部の HSM では現在使用できませんが、AES キーを使用する CKM_AES_KEY_WRAP_PAD によるターゲット キーの保護と、CKM_RSA_PKCS_OAEP による AES キーの保護を組み合わせると、同等の BLOB が生成されます。

ターゲット キーのプレーンテキストは、キーの種類によって異なります。

  • RSA キーでは、PKCS#8 [RFC5208] でラップされた秘密キー ASN.1 DER エンコード [RFC3447]
  • EC キーでは、PKCS#8 [RFC5208] でラップされた秘密キー ASN.1 DER エンコード [RFC5915]
  • オクテット キーでは、キーの未処理バイト

次に、プレーンテキスト キーのバイトが CKM_RSA_AES_KEY_WRAP メカニズムを使用して変換されます。

  • 一時 AES キーが生成され、RSA-OAEP と SHA1 を使用して、ラッピング RSA キーで暗号化されます。
  • エンコードされたプレーンテキスト キーが、AES キーのラップとパディングを使用する AES キーを使用して暗号化されます。
  • 暗号化された AES キーと暗号化されたプレーンテキスト キーが連結されて、最終的な暗号化テキスト BLOB が生成されます。

転送 BLOB の形式では、適切な暗号化解除のために必要なメタデータをサービスに配信する手段として、主に JSON Web Encryption コンパクト シリアル化 (RFC7516) が使用されます。