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があります。暗号化・復号のほか、データ暗号化鍵を保護するためのwrapKeyとunwrapKeyを利用できます。(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
skuがpremiumになっていることを確認してください。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リファレンスでは、--ktyにoctとoct-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/action | Key Vault Crypto Officer |
| ARMテンプレートで鍵を作成 | コントロールプレーン | Microsoft.KeyVault/vaults/keys/write | Key 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が従来のアクセスポリシーモデルを使用している場合は、少なくともCreate、Get、Listと、実際に利用する暗号操作の権限を付与します。
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鍵でラップする「エンベロープ暗号化」が使いやすい構成です。
その場合は、次のようにwrapKeyとunwrapKeyだけを許可します。
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/keysの2026-03-01-previewにoct-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 CLI | ARMテンプレート |
|---|---|---|
| 新しい鍵を作成 | 可能 | 可能 |
| 既存鍵の属性を変更 | 可能 | 制限あり |
| 同じ名前で新しいバージョンを作成 | 可能 | 不可 |
| 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を含むカスタムロールが必要です。Owner、Contributor、Key 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
再実行前に、アプリケーションが参照する鍵バージョンと、旧バージョンを保持する期間を確認してください。
ポータル対応が完了するまでの実務的な運用方法
ポータルの表示有無を、機能利用の判定基準にしないことが重要です。
検証から運用設計までは、次の順序で進めると切り分けやすくなります。
- Azure CLIのサブスクリプションとテナントを確認する
- Key VaultがPremium SKUであることを確認する
az keyvault key create --helpにoct-HSMがあることを確認する- RBACまたはアクセスポリシーの鍵作成権限を確認する
- ファイアウォールとプライベートエンドポイントを確認する
- Azure CLIで256ビットのテスト鍵を作成する
az keyvault key showでoct-HSMになっていることを確認する- 必要な
keyOpsだけに絞る - 再現可能な構成が必要ならARMテンプレートへ移行する
- 本番導入前にローテーション、旧バージョン、監査ログ、障害時の復旧手順を検証する
Azure Update 566746で案内されているとおり、ポータルの対称鍵管理機能が展開途中でも、Azure CLIとARMテンプレートを使えばoct-HSM対称鍵を作成・管理できます。ポータルのボタンを待つのではなく、まずCLIでサービス側の利用可否を確認し、問題がなければARMテンプレートで構成を管理するのが確実です。

コメント