Key Vaultでoct-HSMがポータルに表示されない原因とAzure CLI・ARMの対処法

Azure Key Vault Premiumで対称鍵プレビューを利用できる状態なのに、Azureポータルの「キーの作成」画面にoct-HSMが表示されないことがあります。

結論からいえば、ポータルに項目が出るまで待つ必要はありません。Azure Update 566746では、対称鍵管理機能のポータル対応が段階的に展開されており、展開中はAzure CLIまたはARMテンプレートを使ってoct-HSM対称鍵を作成・管理できると案内されています。ポータルに表示されないだけで、プレビュー登録やKey Vaultの設定が失敗しているとは限りません。

まずKey VaultがPremium SKUであること、Azure CLIがoct-HSMに対応していること、実行ユーザーに適切な権限があることを確認します。そのうえで、Azure CLIから鍵を作成するか、ARMテンプレートで構成をコード化するのが確実です。

なお、Azure Key Vault Premiumのoct-HSM対称鍵はパブリックプレビューです。SLAが適用されず、本番ワークロードには推奨されていないため、まず開発環境や検証環境で利用してください。(Microsoft Learn)

目次

Key Vaultでoct-HSMがポータルに表示されない原因

Azureポータルにoct-HSMが表示されない主な原因は、サービス側の機能不足ではなく、ポータル画面の段階的なロールアウトです。

AzureポータルはKey Vaultの機能そのものではなく、管理APIやデータプレーンAPIを操作するための画面です。そのため、次のような状態が一時的に発生します。

状態考えられる原因対処
Premium Key Vaultだがoct-HSMの選択肢がないポータルUIが未展開Azure CLIで作成する
CLIでは作成できるがポータルの操作項目が少ないポータルUIの展開途中CLIまたはARMで管理する
CLIがoct-HSMを受け付けないAzure CLIが古いCLIを更新する
CLIで403エラーになるデータプレーン権限またはネットワークの問題RBAC、アクセスポリシー、ファイアウォールを確認する
ARMデプロイで権限エラーになるコントロールプレーン権限が不足Microsoft.KeyVault/vaults/keys/write権限を確認する

ポータルを再読み込みしたり、別のブラウザで開いたりすることで表示が変わる可能性はあります。しかし、Microsoftの案内ではAzure CLIとARMテンプレートが正式な回避策として示されています。ブラウザのキャッシュ削除だけに時間をかけず、API経由で利用できるかを確認するほうが効率的です。(Microsoft Azure)

oct-HSM対称鍵とは

oct-HSMは、Azure Key Vault Premiumで利用できる、HSMによって保護された対称鍵の種類です。

octはオクテット列、つまりバイト列形式の対称鍵を表します。HSMは、その鍵がソフトウェアではなくハードウェアセキュリティモジュールによって保護されることを示します。

Azure Key Vault Premiumでは、次の鍵サイズがサポートされています。

鍵サイズ主な用途
128ビット互換性や処理性能を重視する用途
192ビット特定の既存仕様に合わせる用途
256ビット高い強度を求める新規システム

サポートされる代表的なアルゴリズムには、AES-GCM、AES-CBC、AES-KWがあります。暗号化・復号のほか、データ暗号化鍵を保護するためのwrapKeyunwrapKeyを利用できます。(Microsoft Learn)

Azure Managed HSMとは別のリソース

oct-HSMという名前からAzure Managed HSMを連想しやすいですが、今回の対象はAzure Key Vault Premiumです。

Azure CLIでは、指定するパラメーターを間違えないようにしてください。

対象使用するパラメーター
Azure Key Vault Premium--vault-name
Azure Managed HSM--hsm-name

今回使用するのは--vault-nameです。--hsm-nameを指定すると、別サービスであるManaged HSMを操作するコマンドになります。Azure CLIでは、この2つのパラメーターを同時に使用できません。(Microsoft Learn)

oct-HSMを作成する前に確認すること

Azure CLIが正しいサブスクリプションを参照しているか確認する

ポータルで開いているサブスクリプションと、Azure CLIの接続先が異なるケースは珍しくありません。

現在の接続先を確認します。

az account show --query "{subscription:name,subscriptionId:id,tenant:tenantId,user:user.name}" -o table

別のサブスクリプションを使用する場合は、次のコマンドで切り替えます。

az account set --subscription <subscription-id>

特に複数のテナントや検証用サブスクリプションを使っている場合は、最初に確認しておきましょう。

Key VaultがPremium SKUか確認する

oct-HSM対称鍵を利用できるのはAzure Key Vault Premiumです。Standard SKUでは作成できません。

次のコマンドで、SKUとアクセス許可モデルを確認します。

az keyvault show --name <vault-name> --query "{sku:properties.sku.name,rbac:properties.enableRbacAuthorization,publicNetworkAccess:properties.publicNetworkAccess,id:id}" -o jsonc

skupremiumになっていることを確認してください。Azure Key Vault Premiumの対称鍵はHSMによって保護され、Standard SKUでは利用できません。(Microsoft Learn)

既存のKey VaultがStandardの場合は、検証用にPremiumのKey Vaultを別途作成する方法が安全です。稼働中のKey Vaultを変更する前に、料金、アクセス制御、ネットワーク設定への影響も確認してください。

Azure CLIがoct-HSMに対応しているか確認する

インストールされているAzure CLIのバージョンを確認します。

az version

続いて、鍵作成コマンドのヘルプを表示します。

az keyvault key create --help

--ktyの選択肢に、次の値が含まれていればCLI側は対応しています。

oct-HSM

現在のAzure CLIリファレンスでは、--ktyoctoct-HSMが含まれ、--sizeには128、192、256ビットを指定できます。(Microsoft Learn)

oct-HSMが表示されない場合は、Azure CLIを更新します。

az upgrade

az upgradeを利用できない古い環境では、Azure CLIを最新のインストーラーやパッケージ管理ツールで更新してください。(Microsoft Learn)

ローカル環境の切り分けにはAzure Cloud Shellも利用できます。ただし、Key Vaultのパブリックネットワークアクセスを無効化し、プライベートエンドポイントだけを許可している場合、Cloud Shellからデータプレーンへ接続できるとは限りません。

CLIとARMでは必要な権限が異なる

Azure CLIによる鍵作成と、ARMテンプレートによる鍵作成では、使用するAPIと必要な権限が異なります。

方法操作するプレーン主な必要権限組み込みロールの例
Azure CLIで鍵を作成データプレーンMicrosoft.KeyVault/vaults/keys/create/actionKey Vault Crypto Officer
ARMテンプレートで鍵を作成コントロールプレーンMicrosoft.KeyVault/vaults/keys/writeKey Vault Contributor
鍵で暗号化・復号するデータプレーンencrypt、decryptなどKey Vault Crypto User
鍵のラップ・アンラップだけを行うデータプレーンwrap、unwrapなどKey Vault Crypto Service Encryption User

Key Vault ContributorはKey Vaultリソースを管理するためのロールであり、通常のデータプレーン経由で鍵を作成したり、暗号化処理を実行したりする権限は含みません。反対に、Key Vault Crypto Officerは鍵を管理できますが、Key Vaultリソースそのものの管理権限とは別です。(Microsoft Learn)

Key VaultがAzure RBACを使用している場合、検証担当者にはKey Vault単位でKey Vault Crypto Officerを割り当てます。サブスクリプション全体に広いロールを割り当てる必要はありません。

Cloud ShellのBashでは、次のように現在のユーザーへロールを割り当てられます。

VAULT_ID=$(az keyvault show --name <vault-name> --query id -o tsv)
USER_ID=$(az ad signed-in-user show --query id -o tsv)

az role assignment create \
  --assignee-object-id "$USER_ID" \
  --assignee-principal-type User \
  --role "Key Vault Crypto Officer" \
  --scope "$VAULT_ID"

ロールの割り当てには、別途ロール割り当てを作成できる権限が必要です。組織管理下のサブスクリプションでは、管理者に依頼してください。

Key Vaultが従来のアクセスポリシーモデルを使用している場合は、少なくともCreateGetListと、実際に利用する暗号操作の権限を付与します。

Azure CLIでoct-HSM対称鍵を作成する

最初の動作確認にはAzure CLIが適しています。ポータルを経由せず、Key Vaultのデータプレーンへ直接鍵作成を要求できます。

次の例では、256ビットのoct-HSM鍵を作成します。

az keyvault key create \
  --vault-name <vault-name> \
  --name <key-name> \
  --kty oct-HSM \
  --size 256 \
  --ops encrypt decrypt wrapKey unwrapKey \
  -o jsonc

PowerShellやコマンドプロンプトで改行記号の違いが問題になる場合は、1行で実行します。

az keyvault key create --vault-name <vault-name> --name <key-name> --kty oct-HSM --size 256 --ops encrypt decrypt wrapKey unwrapKey -o jsonc

Azure CLIの--opsには、スペース区切りで許可する操作を指定します。oct-HSMと128、192、256ビットの鍵サイズは、現在のコマンドリファレンスに含まれています。(Microsoft Learn)

用途に合わせてkeyOpsを絞る

すべての鍵に、暗号化・復号・ラップ・アンラップの全権限を持たせる必要はありません。

利用方法推奨するkeyOps
Key Vaultで小さなデータを直接暗号化するencrypt decrypt
データ暗号化鍵を保護するKEKとして使うwrapKey unwrapKey
プレビュー機能を一通り検証するencrypt decrypt wrapKey unwrapKey

一般的な業務システムでは、本文データをKey Vaultへ毎回送るのではなく、アプリケーション側で生成したデータ暗号化鍵をoct-HSM鍵でラップする「エンベロープ暗号化」が使いやすい構成です。

その場合は、次のようにwrapKeyunwrapKeyだけを許可します。

az keyvault key create --vault-name <vault-name> --name <key-name> --kty oct-HSM --size 256 --ops wrapKey unwrapKey -o jsonc

同じ鍵名で複数の作成コマンドを続けて実行すると、新しい鍵バージョンが作成される点に注意してください。

作成した鍵を確認する

鍵の種類と許可されている操作を確認します。

az keyvault key show \
  --vault-name <vault-name> \
  --name <key-name> \
  --query "{id:key.kid,type:key.kty,operations:key.keyOps,enabled:attributes.enabled}" \
  -o jsonc

正常に作成されていれば、typeに次の値が表示されます。

"oct-HSM"

鍵のバージョン一覧も確認できます。

az keyvault key list-versions --vault-name <vault-name> --name <key-name> -o table

ポータルに鍵が表示されない、またはポータル上の管理項目が不足していても、このコマンドでoct-HSM鍵を取得できれば、サービス側では鍵が作成されています。

鍵の属性を変更する

鍵を一時的に無効化する場合は、次のように実行します。

az keyvault key set-attributes \
  --vault-name <vault-name> \
  --name <key-name> \
  --enabled false

再度有効化する場合はtrueを指定します。

az keyvault key set-attributes \
  --vault-name <vault-name> \
  --name <key-name> \
  --enabled true

許可する操作も変更できます。

az keyvault key set-attributes \
  --vault-name <vault-name> \
  --name <key-name> \
  --ops wrapKey unwrapKey

--opsは追加指定ではなく、変更後に必要な操作をまとめて指定するものとして扱うのが安全です。既存の操作を残したい場合は、残す操作も含めて指定してください。

同じ名前で新しいバージョンを作成する

Azure CLIのaz keyvault key createは、指定した名前の鍵がすでに存在する場合、新しいバージョンを作成します。(Microsoft Learn)

az keyvault key create \
  --vault-name <vault-name> \
  --name <key-name> \
  --kty oct-HSM \
  --size 256 \
  --ops wrapKey unwrapKey

アプリケーションが最新バージョンを自動参照するのか、鍵IDにバージョンを固定するのかは、事前に決めておきましょう。鍵をローテーションしても、古いデータの復号やアンラップに旧バージョンが必要になる場合があります。

ARMテンプレートでoct-HSM対称鍵を作成する

複数環境への展開や再現性を重視する場合は、ARMテンプレートでoct-HSM鍵を定義します。

Microsoft Learnの現行リファレンスでは、Microsoft.KeyVault/vaults/keys2026-03-01-previewoct-HSMが鍵タイプとして列挙されています。プレビューAPIは今後変更される可能性があるため、実際に導入する時点でも最新のリファレンスを確認してください。(Microsoft Learn)

次のテンプレートは、既存のPremium Key Vaultに256ビットのoct-HSM鍵を作成する例です。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "既存のAzure Key Vault Premium名"
      }
    },
    "keyName": {
      "type": "string",
      "defaultValue": "aes256-kek",
      "metadata": {
        "description": "作成するoct-HSM鍵名"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2026-03-01-preview",
      "name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
      "properties": {
        "kty": "oct-HSM",
        "keySize": 256,
        "keyOps": [
          "encrypt",
          "decrypt",
          "wrapKey",
          "unwrapKey"
        ],
        "attributes": {
          "enabled": true
        }
      }
    }
  ],
  "outputs": {
    "keyResourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName'))]"
    }
  }
}

ファイル名をoct-hsm-key.jsonとして保存し、対象Key Vaultと同じリソースグループへデプロイします。

az deployment group create \
  --resource-group <resource-group> \
  --name deploy-oct-hsm-key \
  --template-file oct-hsm-key.json \
  --parameters vaultName=<vault-name> keyName=<key-name>

デプロイ結果を確認します。

az deployment group show \
  --resource-group <resource-group> \
  --name deploy-oct-hsm-key \
  --query "{state:properties.provisioningState,outputs:properties.outputs}" \
  -o jsonc

データプレーンの参照権限も持っている場合は、Azure CLIから鍵の実体を確認します。

az keyvault key show --vault-name <vault-name> --name <key-name> -o jsonc

ARMテンプレートは鍵のローテーション用途には向かない

ARMテンプレート経由の鍵作成には、データプレーン経由の作成とは異なる制約があります。

ARMのMicrosoft.KeyVault/vaults/keysリソースでは、新しい鍵を作成できますが、既存鍵の更新や新しい鍵バージョンの作成はできません。同じ名前の鍵がすでに存在する場合は、既存の鍵が使用され、新しいバージョンは作成されません。(Microsoft Learn)

操作Azure CLIARMテンプレート
新しい鍵を作成可能可能
既存鍵の属性を変更可能制限あり
同じ名前で新しいバージョンを作成可能不可
IaCとして構成を管理スクリプト化が必要適している
必要な権限データプレーンコントロールプレーン

最初の鍵をARMテンプレートで作成し、その後のバージョン作成や運用操作をAzure CLI、SDK、ローテーション機能で行う構成が現実的です。

Azure CLIやARMでエラーになる場合の対処法

CLIでoct-HSMが無効な値と表示される

次のコマンドで--ktyの対応値を確認します。

az keyvault key create --help

oct-HSMが含まれていなければ、Azure CLIが古い可能性があります。

az upgrade

更新後にターミナルを再起動し、再度ヘルプを確認してください。

Key VaultがStandardになっている

次のコマンドでSKUを確認します。

az keyvault show --name <vault-name> --query "properties.sku.name" -o tsv

結果がstandardの場合、そのKey Vaultではoct-HSM対称鍵を作成できません。Premium Key Vaultを使用してください。

CLIでForbiddenまたは権限エラーになる

Azure CLIの鍵作成はデータプレーン操作です。

Key VaultがAzure RBACを使用している場合は、Key Vault Crypto Officerまたは必要なDataActionを含むカスタムロールが必要です。OwnerContributorKey Vault Contributorを持っていても、データプレーンの鍵作成権限がない場合があります。(Microsoft Learn)

Key Vaultがアクセスポリシーモデルの場合は、実行ユーザーまたはサービスプリンシパルにCreate権限があるか確認します。

ARMデプロイでAuthorizationFailedになる

ARMテンプレートによる鍵作成には、次のコントロールプレーンActionが必要です。

Microsoft.KeyVault/vaults/keys/write

組み込みロールではKey Vault Contributorがこの操作を許可します。(Microsoft Learn)

ただし、ARMデプロイに成功しても、そのロールだけではAzure CLIによる鍵参照や暗号操作はできません。データプレーン操作には別途Key Vault用のデータアクセスロールが必要です。

Key Vaultの情報は取得できるが鍵を作成できない

az keyvault showはAzure Resource Managerのコントロールプレーンへアクセスします。一方、az keyvault key createはKey Vault固有のデータプレーンエンドポイントへアクセスします。

そのため、次の状態が起こり得ます。

  • Key VaultのSKUや設定は取得できる
  • 鍵の作成や一覧取得だけが失敗する
  • ポータルでKey Vault自体は開けるが、キー画面で接続エラーになる

Key Vaultでファイアウォール、VNet、プライベートエンドポイントを使用している場合は、コマンドを実行している端末から<vault-name>.vault.azure.netへ到達できるか確認してください。Key Vaultの管理と鍵の操作では、接続先となるエンドポイントが異なります。(Microsoft Learn)

ARMを再デプロイしても新しい鍵バージョンができない

これはARMテンプレートの不具合ではなく、仕様による動作です。

既存鍵の新しいバージョンを作成する場合は、データプレーン経由で次のコマンドを実行します。

az keyvault key create \
  --vault-name <vault-name> \
  --name <key-name> \
  --kty oct-HSM \
  --size 256 \
  --ops wrapKey unwrapKey

再実行前に、アプリケーションが参照する鍵バージョンと、旧バージョンを保持する期間を確認してください。

ポータル対応が完了するまでの実務的な運用方法

ポータルの表示有無を、機能利用の判定基準にしないことが重要です。

検証から運用設計までは、次の順序で進めると切り分けやすくなります。

  1. Azure CLIのサブスクリプションとテナントを確認する
  2. Key VaultがPremium SKUであることを確認する
  3. az keyvault key create --helpoct-HSMがあることを確認する
  4. RBACまたはアクセスポリシーの鍵作成権限を確認する
  5. ファイアウォールとプライベートエンドポイントを確認する
  6. Azure CLIで256ビットのテスト鍵を作成する
  7. az keyvault key showoct-HSMになっていることを確認する
  8. 必要なkeyOpsだけに絞る
  9. 再現可能な構成が必要ならARMテンプレートへ移行する
  10. 本番導入前にローテーション、旧バージョン、監査ログ、障害時の復旧手順を検証する

Azure Update 566746で案内されているとおり、ポータルの対称鍵管理機能が展開途中でも、Azure CLIとARMテンプレートを使えばoct-HSM対称鍵を作成・管理できます。ポータルのボタンを待つのではなく、まずCLIでサービス側の利用可否を確認し、問題がなければARMテンプレートで構成を管理するのが確実です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次