HSM で保護されたキーを Managed HSM にインポートする (BYOK)
Azure Key Vault Managed HSM は、オンプレミスのハードウェア セキュリティ モジュール (HSM) で生成されたキーのインポートをサポートしています。このキーが HSM による保護の境界の外に出ることは決してありません。 多くの場合、このシナリオは Bring Your Own Key (BYOK) と呼ばれます。 Managed HSM によるキーの保護は、Marvell LiquidSecurity HSM アダプター (FIPS 140-2 レベル 3 で検証済み) を使用して行われます。
この記事の情報は、Managed HSM と共に使用する独自の HSM で保護されたキーを計画、生成、転送する場合に役立ちます。
Note
この機能は、21Vianet によって運営される Microsoft Azure では使用できません。 このインポート方法は、サポートされている HSM でのみ使用できます。
詳細および Managed HSM の使用を開始するためのチュートリアルについては、「Managed HSM とは」を参照してください。
概要
次にプロセスの概要を示します。 具体的な手順については、この記事の後半で説明します。
- Managed HSM で、キー (キー交換キー (KEK) と呼ばれる) を生成します。 KEK は、キー操作が
import
のみの RSA-HSM キーである必要があります。 - KEK 公開キーを .pem ファイルとしてダウンロードします。
- オンプレミスの HSM に接続されているオフライン コンピューターに KEK 公開キーを転送します。
- オフライン コンピューターで、HSM ベンダーから提供されている BYOK ツールを使用して BYOK ファイルを作成します。
- ターゲット キーは KEK で暗号化され、Managed HSM に転送されるまで暗号化が維持されます。 暗号化されたキーだけが、オンプレミスの HSM から外に出て行きます。
- Managed HSM 内で生成された KEK のエクスポートはできません。 HSM によって、Managed HSM の外部に平文の KEK は存在しないというルールが適用されます。
- KEK は、ターゲット キーがインポートされるのと同じマネージド HSM 内に存在する必要があります。
- BYOK ファイルが Managed HSM にアップロードされると、Managed HSM により、KEK 秘密キーを使用してターゲット キー マテリアルが解読され、HSM キーとしてインポートされます。 この操作は、完全に HSM 内で行われます。 ターゲット キーは常に、HSM 保護境界内に留まります。
前提条件
この記事にある Azure CLI コマンドを使用するには、以下を用意する必要があります。
- Microsoft Azure サブスクリプション。 サブスクリプションがない場合でも、無料試用版にサインアップできます。
- Azure CLI バージョン 2.12.0 以降。 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。 - サブスクリプションでサポートされている HSM の一覧のマネージド HSM。 「クイック スタート:Azure CLI を使用してマネージド HSM をプロビジョニングしてアクティブにする」を参照して、マネージド HSM をプロビジョニングしてアクティブにします。
Azure Cloud Shell
Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。
Azure Cloud Shell を開始するには、以下のようにします。
オプション | 例とリンク |
---|---|
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 | |
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 | |
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 |
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
Enter キーを選択して、コードまたはコマンドを実行します。
CLI を使用して Azure にサインインするには、次を入力します。
az login
CLI を使用したログイン オプションの詳細については、「Azure CLI を使用してサインインする」を参照してください
サポートされている HSM
ベンダー名 | ベンダーの種類 | サポートされている HSM モデル | 詳細情報 |
---|---|---|---|
Cryptomathic | ISV (エンタープライズ キー管理システム) | 以下を含む複数の HSM ブランドおよびモデル
|
|
Entrust | 製造元、 サービスとしての HSM |
|
nCipher の新しい BYOK ツールとドキュメント |
Fortanix | 製造元、 サービスとしての HSM |
|
SDKMS キーを BYOK 用クラウド プロバイダーにエクスポートする - Azure Key Vault |
IBM | 製造元 | IBM 476x、CryptoExpress | IBM Enterprise Key Management Foundation |
Marvell | Manufacturer | 以下を含む LiquidSecurity のすべての HSM
|
Marvell の BYOK ツールとドキュメント |
Securosys SA | 製造元、サービスとしての HSM | Primus HSM ファミリ、Securosys Clouds HSM | Primus の BYOK ツールとドキュメント |
StorMagic | ISV (エンタープライズ キー管理システム) | 以下を含む複数の HSM ブランドおよびモデル
|
SvKMS と Azure Key Vault の BYOK |
Thales | Manufacturer |
|
Luna の BYOK ツールとドキュメント |
Utimaco | 製造元、 サービスとしての HSM |
u.trust Anchor、CryptoServer | Utimaco BYOK ツールと統合ガイド |
サポートされているキーの種類
キー名 | キーの種類 | キー サイズまたは曲線 | 出発地 | 説明 |
---|---|---|---|---|
キー交換キー (KEK) | RSA-HSM | 2,048 ビット 3,072 ビット 4,096 ビット |
Managed HSM | Managed HSM で生成される、HSM で保護された RSA キー ペア |
ターゲット キー | ||||
RSA-HSM | 2,048 ビット 3,072 ビット 4,096 ビット |
ベンダー HSM | Managed HSM に転送されるキー | |
EC-HSM | P-256 P-384 P-521 |
ベンダー HSM | Managed HSM に転送されるキー | |
対称キー (oct-hsm) | 128 ビット 192 ビット 256 ビット |
ベンダー HSM | Managed HSM に転送されるキー | |
キーを生成して Managed HSM に転送する
手順 1:KEK を生成する
KEK は、Managed HSM で生成される RSA キーです。 KEK は、インポートするキー (ターゲット キー) を暗号化するために使用されます。
KEK には次の条件があります。
- RSA-HSM キー (2,048 ビット、3,072 ビット、4,096 ビット) であること
- ターゲット キーをインポートするのと同じマネージド HSM で生成されていること
import
に設定されている、許可されたキー操作で作成されていること
Note
KEK には、許可されている唯一のキー操作として「インポート」が必要です。 「インポート」は、他のすべてのキー操作と同時には使用できません。
キー操作が import
に設定されている KEK を作成するには、az keyvault key create コマンドを使用します。 次のコマンドから返されるキー識別子 (kid
) を記録しておきます。 (この kid
値は手順 3 で使用します。)
az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --hsm-name ContosoKeyVaultHSM
手順 2:KEK 公開キーをダウンロードする
KEK 公開キーを .pem ファイルにダウンロードするには、az keyvault key download を使用します。 インポートするターゲット キーを暗号化するには、KEK 公開キーを使用します。
az keyvault key download --name KEKforBYOK --hsm-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem
KEKforBYOK.publickey.pem ファイルをオフライン コンピューターに転送します。 次の手順でこのファイルが必要になります。
手順 3:キーを生成して転送用に準備をする
BYOK ツールをダウンロードしてインストールする方法については、HSM ベンダーのドキュメントをご覧ください。 HSM ベンダーの指示に従って、ターゲット キーを生成した後、キー転送パッケージ (BYOK ファイル) を作成します。 BYOK ツールでは、手順 1 の kid
と、手順 2 でダウンロードした KEKforBYOK.publickey.pem ファイルを使用して、暗号化されたターゲット キーを BYOK ファイルに生成します。
接続されているコンピューターに BYOK ファイルを転送します。
Note
1,024 ビットの RSA キーのインポートはサポートされていません。 EC-HSM P256K キーのインポートがサポートされています。
既知の問題:Luna HSM からの RSA 4K ターゲット キーのインポートは、ファームウェア 7.4.0 以降でのみサポートされています。
手順 4:キーを Managed HSM に転送する
キーのインポートを完了するには、切断されたコンピューターからインターネットに接続されているコンピューターにキー転送パッケージ (BYOK ファイル) を転送します。 az keyvault key import コマンドを使用して、BYOK ファイルを Managed HSM にアップロードします。
az keyvault key import --hsm-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok
アップロードが正常に行われると、インポートされたキーのプロパティが Azure CLI に表示されます。
次のステップ
これでこの HSM 保護キーを Managed HSM で使用できます。 詳細については、この価格と機能の比較に関するページをご覧ください。