Managed HSM のロール管理

Note

Key Vault では、コンテナーとマネージド HSM という 2 種類のリソースがサポートされています。 この記事では、Managed HSM について説明します。 コンテナーの管理方法については、「Azure CLI を使用して Key Vault を管理する」を参照してください。

Managed HSM の概要については、Managed HSM の概要に関するページをご覧ください。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

この記事では、Managed HSM データ プレーン ロールを管理する方法について説明します。 Managed HSM アクセス制御モデルの詳細については、「Managed HSM のアクセス制御」をご覧ください。

セキュリティ プリンシパル (ユーザー、サービス プリンシパル、グループ、またはマネージド ID など) が Managed HSM データ プレーンを操作できるようにするには、それらの操作の実行を許可するロールが割り当てられている必要があります。 たとえば、アプリケーションでキーを使用して署名操作を実行できるようにするには、データ アクションの 1 つとして "Microsoft.KeyVault/managedHSM/keys/sign/action" を含むロールが割り当てられている必要があります。 ロールは特定のスコープで割り当てることができます。 Managed HSM のローカル RBAC では、HSM 全体 (/ または /keys) およびキーごと (/keys/<keyname>) の 2 つのスコープがサポートされています。

すべての Managed HSM 組み込みロールと、それらで許可される操作のリストは、Managed HSM の組み込みロールに関する記事で確認できます。

前提条件

この記事にある Azure CLI コマンドを使用するには、以下を用意する必要があります。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

Azure へのサインイン

CLI を使用して Azure にサインインするには、次のように入力します。

az login

CLI を使用したログイン オプションの詳細については、「Azure CLI を使用してサインインする」を参照してください。

新しいロールの割り当てを作成する

すべてのキーを対象としたロールを割り当てる

ContosoHSM 内のすべてのキー (スコープ /keys) を対象として、ユーザー プリンシパル名 user2@contoso.com で識別されるユーザーに Managed HSM 暗号化ユーザー ロールを割り当てるには、az keyvault role assignment create コマンドを使用します。

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto User" --assignee user2@contoso.com  --scope /keys

特定のキーを対象としたロールを割り当てる

myrsakey という名前の特定のキーを対象として、ユーザー プリンシパル名 user2@contoso.com で識別されるユーザーに Managed HSM 暗号化ユーザー ロールを割り当てるには、az keyvault role assignment create コマンドを使用します。

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto User" --assignee user2@contoso.com  --scope /keys/myrsakey

既存のロールの割り当てを一覧表示する

ロールの割り当てを一覧表示するには az keyvault role assignment list を使用します。

すべてのユーザー (--assignee が指定されていない場合に既定) を対象として、スコープが "/" (--scope が指定されていない場合に既定) である場合のすべてのロールの割り当て。

az keyvault role assignment list --hsm-name ContosoMHSM

特定のユーザー user1@contoso.com への、HSM レベルでのすべてのロールの割り当て。

az keyvault role assignment list --hsm-name ContosoMHSM --assignee user@contoso.com

Note

スコープが / (または /keys) の場合、list コマンドでは、最上位レベルのすべてのロールの割り当てが一覧表示されるのみで、個々のキー レベルのロールの割り当ては表示されません。

特定のキー myrsakey を対象とした、特定のユーザー user2@contoso.com へのすべてのロールの割り当て。

az keyvault role assignment list --hsm-name ContosoMHSM --assignee user2@contoso.com --scope /keys/myrsakey

特定のキー myrsakey を対象とした、特定のユーザー user2@contoso.com への Managed HSM 暗号化担当者ロールの割り当て。

az keyvault role assignment list --hsm-name ContosoMHSM --assignee user2@contoso.com --scope /keys/myrsakey --role "Managed HSM Crypto Officer"

ロールの割り当てを削除する

キー myrsakey2 を対象としてユーザー user2@contoso.com に割り当てられた Managed HSM 暗号化担当者ロールを削除するには、az keyvault role assignment delete コマンドを使用します。

az keyvault role assignment delete --hsm-name ContosoMHSM --role "Managed HSM Crypto Officer" --assignee user2@contoso.com  --scope /keys/myrsakey2

使用可能なすべてのロールの定義を一覧表示する

すべてのロールの定義を一覧表示するには、az keyvault role definition list コマンドを使用します。

az keyvault role definition list --hsm-name ContosoMHSM

新しいロール定義を作成する

マネージド HSM には、最も一般的な使用シナリオに役立ついくつかの組み込み (定義済み) のロールがあります。 ロールでの実行が許可される特定のアクションの一覧を使用して、独自のロールを定義できます。 次に、このロールをプリンシパルに割り当てることによって、指定されたアクションに対するアクセス許可をプリンシパルに付与することができます。

JSON 文字列を使用して My Custom Role という名前のロールを作成するには、az keyvault role definition create コマンドを使用します。

az keyvault role definition create --hsm-name ContosoMHSM --role-definition '{
    "roleName": "My Custom Role",
    "description": "The description of the custom rule.",
    "actions": [],
    "notActions": [],
    "dataActions": [
        "Microsoft.KeyVault/managedHsm/keys/read/action"
    ],
    "notDataActions": []
}'

ロール定義用の JSON 文字列を含む my-custom-role-definition.json という名前のファイルからロールを作成するには、az keyvault role definition create コマンドを使用します。 (上記の例を参照)。

az keyvault role definition create --hsm-name ContosoMHSM --role-definition @my-custom-role-definition.json

ロール定義の詳細を表示する

名前 (GUID) を使用して特定のロールの定義の詳細を表示するには、az keyvault role definition show コマンドを使用します。

az keyvault role definition show --hsm-name ContosoMHSM --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

カスタムのロールの定義を更新する

JSON 文字列を使用して My Custom Role という名前のロールを更新するには、az keyvault role definition update コマンドを使用します。

az keyvault role definition create --hsm-name ContosoMHSM --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": []
        }'

カスタムのロール定義の削除

名前 (GUID) を使用して特定のロールの定義の詳細を表示するには、az keyvault role definition delete コマンドを使用します。

az keyvault role definition delete --hsm-name ContosoMHSM --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Note

組み込みロールは削除できません。 カスタム ロールを削除すると、そのカスタム ロールが使用されているすべてのロール割り当てが機能しなくなります。

次のステップ