Share via


Managed HSM のディザスター リカバリー

次のいずれかの理由によって元の HSM が失われるか使用できなくなった場合に正確なレプリカを作成したくなることがあります。

  • 削除されてから消去された。
  • リージョン内で致命的なエラーが発生した結果、すべてのメンバー パーティションが破棄された。

次のものがあれば、同一または別のリージョンに HSM インスタンスを再作成できます。

ディザスター リカバリー手順のステップは次のとおりです。

  1. 新しい HSM インスタンスを作成します。
  2. "セキュリティ ドメインの回復" をアクティブにします。 新しい RSA キーの組 (セキュリティ ドメイン交換キー) がセキュリティ ドメインの転送用に生成され、応答として送信された後、SecurityDomainExchangeKey (公開キー) としてダウンロードされます。
  3. "セキュリティ ドメイン転送ファイル" を作成してアップロードします。 セキュリティ ドメインを暗号化する秘密キーが必要になります。 秘密キーはローカルで使用され、このプロセス内で転送されることは一切ありません。
  4. 新しい HSM のバックアップを作成します。 HSM が空である場合でも、復元する前にバックアップが必要です。 バックアップによって、簡単にロールバックできます。
  5. ソース HSM から最新の HSM バックアップを復元します。

以上の手順によって、HSM の内容を他のリージョンに手動でレプリケートできるようになります。 HSM の名前 (およびサービス エンドポイント URI) は異なるため、これらのキーを別の場所から利用するためには、アプリケーションの構成を変更する必要があります。

新しいマネージド HSM を作成する

Managed HSM を作成するには、az keyvault create コマンドを使用します。 このスクリプトには、3 つの必須パラメーター (リソース グループ名、HSM 名、地理的な場所) があります。

マネージド HSM リソースを作成するには、次の入力を指定する必要があります。

  • HSM の名前。
  • サブスクリプション内での配置先となるリソース グループ。
  • Azure の場所。
  • 初期管理者のリスト。

次の例では、ContosoMHSM2 という名前の HSM を、リソース グループ ContosoResourceGroup に作成します。これは、米国西部 3 に存在し、現在サインインしているユーザーが唯一の管理者となります。

oid=$(az ad signed-in-user show --query objectId -o tsv)
az keyvault create --hsm-name "ContosoMHSM2" --resource-group "ContosoResourceGroup" --location "westus3" --administrators $oid

注意

create コマンドには数分かかることがあります。 正常に制御が戻ったら、HSM をアクティブにする準備が整います。

警告

Managed HSM インスタンスは、常時使用と見なされます。 --enable-purge-protectionフラグを使用して消去保護を有効にした場合、保持期間全体に対して請求されます。

このコマンドの出力は、作成した Managed HSM のプロパティを示します。 最も重要な 2 つのプロパティは、次のとおりです。

  • name:この例では、名前は ContosoMHSM です。 この名前を他の Key Vault コマンドに使用できます。
  • hsmUri: この例では、URI は 'https://contosomhsm2.managedhsm.azure.net.' です。 REST API から HSM を使用するアプリケーションでは、この URI を使用する必要があります。

これで、お使いの Azure アカウントは、このマネージド HSM に対して任意の操作を実行できるようになりました。 現在のところ、誰も承認されていません。

セキュリティ ドメインの回復モードをアクティブにする

通常の作成プロセスのこの時点で、新しい HSM のセキュリティ ドメインを初期化してダウンロードします。 ただし、ここではディザスター リカバリー手順を実行しているため、HSM には、セキュリティ ドメインの回復モードに移行して代わりにセキュリティ ドメイン交換キーをダウンロードするように要求します。 セキュリティ ドメイン交換キーとは、セキュリティ ドメインを HSM にアップロードする前に暗号化する際に使用される RSA 公開キーです。 対応する秘密キーは HSM 内で保護され、転送中のセキュリティ ドメインのコンテンツを安全に保護します。

az keyvault security-domain init-recovery --hsm-name ContosoMHSM2 --sd-exchange-key ContosoMHSM2-SDE.cer

ソース HSM のセキュリティ ドメイン アップロード BLOB を作成する

この手順では、次のものが必要です。

  • 前の手順でダウンロードしたセキュリティ ドメイン交換キー。
  • ソース HSM のセキュリティ ドメイン。
  • セキュリティ ドメインの暗号化に使用された秘密キーの、少なくともクォーラム数。

az keyvault security-domain restore-blob コマンドは、次の操作を実行します。

  • 指定した秘密キーを使用して、ソース HSM のセキュリティ ドメインを復号化する。
  • 前の手順でダウンロードしたセキュリティ ドメイン交換キーで暗号化されたセキュリティ ドメイン アップロード BLOB を作成する

この手順はオフラインで行うことできます。

次の例では、ContosoMHSM のセキュリティ ドメイン、対応する 3 つの秘密キー、およびセキュリティ ドメイン交換キーを使って、セキュリティ ドメインの受信を待機している ContosoMHSM2 にアップロードするために使用する暗号化された BLOB を作成してダウンロードします。

az keyvault security-domain restore-blob --sd-exchange-key ContosoMHSM2-SDE.cer --sd-file ContosoMHSM-SD.json --sd-wrapping-keys cert_0.key cert_1.key cert_2.key --sd-file-restore-blob restore_blob.json 

セキュリティ ドメイン アップロード BLOB を宛先 HSM にアップロードする

ここで、前の手順で作成したセキュリティ ドメイン アップロード BLOB を使用し、それを宛先 HSM にアップロードしてセキュリティ ドメインの回復を完了します。 --restore-blob フラグは、オンライン環境でキーが公開されないようにするために使用されます。

az keyvault security-domain upload --hsm-name ContosoMHSM2 --sd-file restore_blob.json --restore-blob

これで、ソース HSM (ContosoMHSM) と宛先 HSM (ContosoMHSM2) の両方で同じセキュリティ ドメインが使用されます。 ソース HSM から宛先 HSM に完全バックアップを復元できるようになりました。

バックアップと復元

復元時に問題が発生した場合に備えて復元ポイントを用意するため、完全な HSM 復元を実行する前に完全バックアップを実行しておくことを常にお勧めします。 これを行うには、ユーザー割り当てマネージド ID または SAS トークンの 2 つの方法のいずれかを使用します。

新しい HSM のバックアップを (復元ポイントとして) 作成する

HSM バックアップを作成するには、次のものが必要です。

  • バックアップが格納されるストレージ アカウント
  • このストレージ アカウントの BLOB ストレージ コンテナー。ここには、暗号化されたバックアップを格納するために新しいフォルダーがバックアップ プロセスによって作成されます。
  • ストレージ アカウントまたはストレージ コンテナー SAS トークンに対するストレージ BLOB データ共同作成者ロールを持ち、アクセス許可 'crdw' を持つユーザー割り当てマネージド ID

ストレージ コンテナー mhsmbackupcontainer 内の HSM バックアップに対して az keyvault backup コマンドを使用します。これは、次の例ではストレージ アカウント mhsmdemobackup にあります。

ユーザー割り当てマネージド ID の方法を使用する場合は、次の例でバックアップを記述する前に、ユーザー割り当てマネージド ID を --mi-user-assigned パラメーターに指定し、Managed HSM に関連付けます。

az keyvault update-hsm --hsm-name ContosoMHSM2 --mi-user-assigned "/subscriptions/subid/resourcegroups/mhsmrgname/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedidentityname"
az keyvault backup start --use-managed-identity true --hsm-name ContosoMHSM2 --storage-account-name mhsmdemobackup --blob-container-name mhsmbackupcontainer

ソース HSM からバックアップを復元する

この手順では、次のものが必要です。

  • ソース HSM のバックアップが格納されているストレージ アカウントと BLOB コンテナー。
  • バックアップの復元元となるフォルダーの名前。 定期的なバックアップを作成する場合は、このコンテナー内に多数のフォルダーが存在することになります。

復元しようとしているソース MHSM のバックアップを使って、新しい HSM ContosoMHSM2 に対して az keyvault restore コマンドを使用します。これは、次の例ではストレージ アカウント ContosoBackup のストレージ コンテナー mhsmdemobackupcontainer にある mhsm-ContosoMHSM-2020083120161860 という名前のフォルダー内にあります。

ユーザー割り当てマネージド ID メソッドを使用する場合は、--use-managed-identity パラメーターを "true" に設定します。

az keyvault restore start --hsm-name ContosoMHSM2 --storage-account-name ContosoBackup --blob-container-name mhsmdemobackupcontainer --backup-folder mhsm-ContosoMHSM-2020083120161860 --use-managed-identity true

これで、ディザスター リカバリー プロセスがすべて完了しました。 バックアップが作成されたときのソース HSM のコンテンツは、すべてのキー、バージョン、属性、タグ、ロールの割り当てを含め、宛先 HSM にコピーされます。

次のステップ