このクイック スタートでは、Azure CLI を使用して、Azure Key Vault Managed HSM (ハードウェア セキュリティ モジュール) を作成してアクティブ化します。 Managed HSM は、 FIPS 140-3 レベル 3 の検証済み HSM を使用して、クラウド アプリケーションの暗号化キーを保護できるようにする、フル マネージドの高可用性シングルテナントの標準準拠クラウド サービスです。 Managed HSM の詳細については、「 概要」を参照してください。
前提条件
Azure サブスクリプションが必要です。 お持ちでない場合は、 無料アカウントを作成してください。
以下も必要です。
- Azure CLI バージョン 2.25.0 以降。 バージョンを確認するには、
az --versionを実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。
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 キーを選択して、コードまたはコマンドを実行します。
Azure へのサインイン
CLI を使用して Azure にサインインするには、次のように入力します。
az login
リソース グループを作成する
リソース グループは、Azure リソースをデプロイして管理する論理コンテナーです。 次の例では、<resource-group> の場所に <location> という名前のリソース グループを作成します。
az group create --name "<resource-group>" --location <location>
Managed HSM を作成する
Managed HSM は、次の 2 段階のプロセスで作成します。
- Managed HSM リソースをプロビジョニングします。
- "セキュリティ ドメイン"と呼ばれる成果物をダウンロードして Managed HSM をアクティブにします。
Managed HSM をプロビジョニングする
Managed HSM を作成するには、az keyvault create コマンドを使用します。 このスクリプトには、3 つの必須パラメーター (リソース グループ名、HSM 名、地理的な場所) が含まれています。
Managed HSM リソースを作成するには、次の入力を指定します。
- サブスクリプションに Managed HSM を配置するリソース グループ。
- Azure の場所。
- 初期管理者のリスト。
次の例では、リソース グループ <hsm-name>に <resource-group> という名前の HSM を作成し、指定した場所に存在し、現在サインインしているユーザーを唯一の管理者として使用し、論理的な削除を行う 7 日間のリテンション期間を作成します。
論理的削除期間内に削除されるまで、Managed HSM の料金は引き続き課金されます。 詳細については、「Managed HSM の論理的削除と消去保護」および Managed HSM の論理的な削除の詳細を参照してください。
oid=$(az ad signed-in-user show --query id -o tsv)
az keyvault create --hsm-name "<hsm-name>" --resource-group "<resource-group>" --location "<location>" --administrators $oid --retention-days 7
注
マネージド HSM の初期管理者としてマネージド ID を使用する場合は、ClientID ではなく、 --administrators 後にマネージド ID の OID/PrincipalID を入力します。
注
create コマンドには数分かかることがあります。 正常に戻ったら、HSM をアクティブ化する準備が整います。
警告
Managed HSM インスタンスは常に使用されています。
--enable-purge-protection フラグを使用して消去保護を有効にした場合、保持期間全体に対して支払います。
このコマンドの出力には、作成した Managed HSM のプロパティが表示されます。 最も重要な 2 つのプロパティは、次のとおりです。
- name: 指定した名前。 この名前は、他のコマンドに使用します。
-
hsmUri: HSM の URI (たとえば、
https://<hsm-name>.managedhsm.azure.net)。 REST API から HSM を使用するアプリケーションでは、この URI を使用する必要があります。
これで、お使いの Azure アカウントは、このマネージド HSM に対して任意の操作を実行できるようになりました。 現在のところ、誰も承認されていません。
Managed HSM をアクティブにする
HSM をアクティブ化するまで、すべてのデータ プレーン コマンドは無効になります。 たとえば、キーを作成したり、ロールを割り当てたりすることはできません。 作成コマンド中に割り当てた指定された管理者のみが HSM をアクティブ化できます。 HSM をアクティブにするには、セキュリティ ドメインをダウンロードする必要があります。
HSM をアクティブ化するには、次のものが必要です。
- 少なくとも 3 つの RSA キー ペア (最大 10)
- セキュリティ ドメインの暗号化を解除するために必要なキーの最小数 ( クォーラムと呼ばれます)
HSM には、少なくとも 3 つの RSA 公開キー (最大 10 個) を送信します。 HSM は、それらのキーでセキュリティ ドメインを暗号化して返します。 セキュリティ ドメインのダウンロードが正常に完了すると、HSM を使用する準備が整います。 また、セキュリティ ドメインの暗号化を解除するために必要な秘密キーの最小数であるクォーラムも指定する必要があります。
次の例は、 openssl を使用して 3 つの自己署名証明書を生成する方法を示しています。
openssl req -newkey rsa:2048 -nodes -keyout cert_0.key -x509 -days 365 -out cert_0.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_1.key -x509 -days 365 -out cert_1.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_2.key -x509 -days 365 -out cert_2.cer
証明書の有効期限は、セキュリティ ドメインの操作には影響しません。"期限切れ" の証明書でも、セキュリティ ドメインの復元に使用できます。
重要
これらの RSA 秘密キーは、Managed HSM の信頼のルートです。 運用環境では、エアギャップ システムまたはオンプレミス HSM を使用してこれらのキーを生成し、安全に格納します。 詳細なガイダンスについては、 セキュリティ ドメインのベスト プラクティス を参照してください。
セキュリティ ドメインをダウンロードして、Managed HSM をアクティブにするには、az keyvault security-domain download コマンドを使用します。 次の例では、3 つの RSA キー ペア (このコマンドで必要なのは公開キーのみ) を使用し、クォーラムは 2 に設定しています。
az keyvault security-domain download --hsm-name <hsm-name> --sd-wrapping-keys ./certs/cert_0.cer ./certs/cert_1.cer ./certs/cert_2.cer --sd-quorum 2 --security-domain-file <hsm-name>-SD.json
セキュリティ ドメイン ファイルと RSA キー ペアを安全に格納します。 2 人がキーを共有できるように、ディザスター リカバリーまたは同じセキュリティ ドメインを共有する別の Managed HSM を作成するために必要です。
セキュリティ ドメインを正常にダウンロードすると、HSM がアクティブな状態となり、いつでも使用することができます。
リソースをクリーンアップする
このコレクションの他のクイックスタートとチュートリアルは、このクイックスタートに基づいています。 後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことをお勧めします。
必要がなくなったら、az group delete コマンドを使用して、リソース グループおよびすべての関連リソースを削除できます。 次のように、リソースを削除できます。
az group delete --name <resource-group>
警告
リソース グループを削除すると、Managed HSM は論理的に削除された状態になります。 Managed HSM は、消去されるまで引き続き課金されます。 「Managed HSM の論理的削除と消去保護」を参照してください
次のステップ
このクイック スタートでは、マネージド HSM をプロビジョニングしてアクティブ化しました。 Managed HSM の詳細と、アプリケーションとの統合方法については、引き続きこれらの記事を参照してください。
- Managed HSM の概要に関するページを読む
- マネージド HSM におけるキーの管理について学習する
- マネージド HSM のロール管理について学習する
- Azure Managed HSM デプロイのセキュリティ保護を確認する