注
Key Vaultでは、コンテナーとマネージド HSM の 2 種類のリソースがサポートされています。 この記事では、 Managed HSM について説明します。 コンテナーを管理する方法については、「Quickstart: Azure CLIを参照してください。
この記事では、Managed HSM のロールとロールの割り当てを管理するための実用的な手順について説明します。 Managed HSM のアクセス制御で説明されているロールベースのアクセス制御モデルを、ローカル RBAC の組み込みロールに記載されている組み込みロールを使用して実装します。
Managed HSM の概要については、「 Managed HSM とは」を参照してください> Azure サブスクリプションをお持ちでない場合は、開始する前に free アカウント を作成してください。
セキュリティ プリンシパル (ユーザー、サービス プリンシパル、グループ、マネージド ID など) がマネージド HSM データ プレーン操作を実行できるようにするには、それらの操作を許可するロールを割り当てます。 たとえば、アプリケーションがキーを使用して署名操作を実行できるようにする場合は、データ アクションの 1 つとして Microsoft.KeyVault/managedHSM/keys/sign/action を含むロールを割り当てます。 特定のスコープでロールを割り当てます。 Managed HSM のローカル RBAC は、HSM 全体 (/、または /keys) およびキーごとの (/keys/<key-name>) 2 つのスコープをサポートします。
すべての Managed HSM 組み込みロールと、それらが許可する操作の一覧については、「 Managed HSM 組み込みロール」を参照してください。
[前提条件]
Azure サブスクリプションが必要です。 アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
以下も必要です。
新しいロールの割り当てを作成する
Azure ポータルで、Managed HSM リソースに移動します。
左側のメニューの [設定] で、[ローカル RBAC] を選びます。
[ ロールの割り当ての追加] を選択し、ロール、スコープ、プリンシパルを選択して保存します。
すべてのキーにロールを割り当てる
az keyvault role assignment createコマンドを使用して、ユーザープリンシパル名で識別されるユーザーに、<user-principal-name>のすべてのキー (スコープ /keys) に対して<hsm-name>ロールを割り当てます。
az keyvault role assignment create --hsm-name <hsm-name> --role "Managed HSM Crypto User" --assignee <user-principal-name> --scope /keys
特定のキーにロールを割り当てる
コマンドを使用して、ユーザープリンシパル名で識別されるユーザーに対して、特定のキーのロールを割り当てます。
az keyvault role assignment create --hsm-name <hsm-name> --role "Managed HSM Crypto User" --assignee <user-principal-name> --scope /keys/<key-name>
すべてのキーにロールを割り当てる
New-AzKeyVaultRoleAssignment コマンドレットを使用して、すべてのキー (スコープ ) に対して /keys ロールをユーザーに割り当てます。
New-AzKeyVaultRoleAssignment -HsmName <hsm-name> -RoleDefinitionName "Managed HSM Crypto User" -SignInName <user-principal-name> -Scope /keys
特定のキーにロールを割り当てる
New-AzKeyVaultRoleAssignment -HsmName <hsm-name> -RoleDefinitionName "Managed HSM Crypto User" -SignInName <user-principal-name> -Scope /keys/<key-name>
既存のロールの割り当てを一覧表示する
Azure ポータルで、Managed HSM リソースに移動します。
左側のメニューの [設定] で、[ローカル RBAC] を選びます。
ポータルには、Managed HSM のすべてのロールの割り当てが表示されます。 プリンシパルまたはスコープでフィルター処理できます。
すべてのユーザー (--assignee が指定されていない場合に既定) を対象として、スコープが "/" (--scope が指定されていない場合に既定) である場合のすべてのロールの割り当て。
az keyvault role assignment list --hsm-name <hsm-name>
特定のユーザー <user-principal-name> への、HSM レベルでのすべてのロールの割り当て。
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name>
注
スコープが / (または /keys) の場合、list コマンドは最上位レベルのすべてのロールの割り当てを一覧表示するだけで、個々のキー レベルでのロールの割り当ては表示されません。
特定のユーザー<user-principal-name>と特定のキー<key-name>に対するすべてのロールの割り当て。
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name> --scope /keys/<key-name>
特定のキー を対象とした、特定のユーザー <user-principal-name> への <key-name>ロールの割り当て。
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name> --scope /keys/<key-name> --role "Managed HSM Crypto Officer"
Managed HSM のすべてのロールの割り当てを一覧表示します。
Get-AzKeyVaultRoleAssignment -HsmName <hsm-name>
特定のユーザーのすべてのロールの割り当てを一覧表示します。
Get-AzKeyVaultRoleAssignment -HsmName <hsm-name> -SignInName <user-principal-name>
特定のキー スコープで特定のユーザーのロールの割り当てを一覧表示します。
Get-AzKeyVaultRoleAssignment -HsmName <hsm-name> -SignInName <user-principal-name> -Scope /keys/<key-name>
ロールの割り当てを削除する
Azure ポータルで、Managed HSM リソースに移動します。
左側のメニューの [設定] で、[ローカル RBAC] を選びます。
削除するロールの割り当てを見つけます。
割り当ての横にある [削除 ] (ごみ箱) アイコンを選択します。
メッセージが表示されたら、削除を確認します。
az keyvault role assignment deleteコマンドを使用して、キー のユーザー <user-principal-name>に割り当てられている <key-name> ロールを削除します。
az keyvault role assignment delete --hsm-name <hsm-name> --role "Managed HSM Crypto Officer" --assignee <user-principal-name> --scope /keys/<key-name>
Remove-AzKeyVaultRoleAssignment コマンドレットを使用してロールの割り当てを削除します。
Remove-AzKeyVaultRoleAssignment -HsmName <hsm-name> -RoleDefinitionName "Managed HSM Crypto Officer" -SignInName <user-principal-name> -Scope /keys/<key-name>
使用可能なすべてのロール定義を一覧表示する
Azure ポータルで、Managed HSM リソースに移動します。
左側のメニューの [設定] で、[ローカル RBAC] を選びます。
[ ロール ] タブを選択すると、使用可能なすべての組み込みロール定義とカスタム ロール定義が表示されます。
az keyvault role definition listコマンドを使用して、すべてのロール定義を一覧表示します。
az keyvault role definition list --hsm-name <hsm-name>
Get-AzKeyVaultRoleDefinition コマンドレットを使用して、すべてのロール定義を一覧表示します。
Get-AzKeyVaultRoleDefinition -HsmName <hsm-name>
新しいロール定義を作成する
注
カスタム ロール定義は、Azure CLIまたはAzure PowerShellを使用してのみ管理できます。
Managed HSM には、最も一般的な使用シナリオに役立つ組み込みの (定義済みの) ロールがいくつかあります。 ロールの実行が許可されている特定のアクションの一覧を使用して、独自のロールを定義できます。 その後、このロールをプリンシパルに割り当てて、指定されたアクションへのアクセス許可を付与できます。
カスタム ロールの作成は現在、Azure ポータルでは使用できません。 Azure CLIまたはAzure PowerShellを使用します。
JSON 文字列 az keyvault role definition create 使用して 、My Custom Role という名前のロールに対してコマンドを使用します。
az keyvault role definition create --hsm-name <hsm-name> --role-definition '{
"roleName": "My Custom Role",
"description": "The description of the custom rule.",
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.KeyVault/managedHsm/keys/read/action"
],
"notDataActions": []
}'
az keyvault role definition createコマンドを使用して、ロール定義の JSON 文字列を含む my-custom-role-definition.json という名前のファイルからロールに渡します。 上記の例を参照してください。
az keyvault role definition create --hsm-name <hsm-name> --role-definition @my-custom-role-definition.json
New-AzKeyVaultRoleDefinition コマンドレットを使用して、JSON ファイルからカスタム ロールを作成します。
New-AzKeyVaultRoleDefinition -HsmName <hsm-name> -InputFile ./my-custom-role-definition.json
ロール定義の詳細を表示する
カスタム ロール定義の詳細の表示は、現在、Azure ポータルでは使用できません。 Azure CLIまたはAzure PowerShellを使用します。
az keyvault role definition showコマンドを使用して、名前 (GUID) を使用して特定のロール定義の詳細を表示します。
az keyvault role definition show --hsm-name <hsm-name> --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ロール定義を表示するには、 Get-AzKeyVaultRoleDefinition コマンドレットを使用します。 特定のカスタム ロールを名前で表示するには:
Get-AzKeyVaultRoleDefinition -HsmName <hsm-name> -RoleDefinitionName "My Custom Role"
カスタム ロール定義を更新する
カスタム ロール定義の更新は、現在、Azure ポータルでは使用できません。 Azure CLIまたはAzure PowerShellを使用します。
az keyvault role definition updateコマンドを使用して、JSON 文字列を使用して My Custom Role という名前のロールを更新します。
az keyvault role definition create --hsm-name <hsm-name> --role-definition '{
"roleName": "My Custom Role",
"name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"id": "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/xxxxxxxx-
xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"description": "The description of the custom rule.",
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.KeyVault/managedHsm/keys/read/action",
"Microsoft.KeyVault/managedHsm/keys/write/action",
"Microsoft.KeyVault/managedHsm/keys/backup/action",
"Microsoft.KeyVault/managedHsm/keys/create"
],
"notDataActions": []
}'
カスタム ロールを更新するには、ロール オブジェクトを変更して再作成します。
$role = Get-AzKeyVaultRoleDefinition -HsmName <hsm-name> -RoleDefinitionName "My Custom Role"
$role.Permissions[0].DataActions = @("Microsoft.KeyVault/managedHsm/keys/read/action", "Microsoft.KeyVault/managedHsm/keys/write/action", "Microsoft.KeyVault/managedHsm/keys/backup/action", "Microsoft.KeyVault/managedHsm/keys/create")
New-AzKeyVaultRoleDefinition -HsmName <hsm-name> -Role $role
カスタム ロール定義を削除する
カスタム ロール定義の削除は、Azure ポータルでは現在使用できません。 Azure CLIまたはAzure PowerShellを使用します。
Azure CLI az keyvault role definition delete コマンドを使用して、名前 (GUID) を使用してカスタム ロール定義を削除します。
az keyvault role definition delete --hsm-name <hsm-name> --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
カスタム ロール定義を削除するには、 Remove-AzKeyVaultRoleDefinition コマンドレットを使用します。
Remove-AzKeyVaultRoleDefinition -HsmName <hsm-name> -RoleName "My Custom Role"
注
組み込みロールは削除できません。 カスタム ロールが削除されると、そのカスタム ロールを使用するすべてのロールの割り当てが機能しなくなる。
次のステップ