受控 HSM 角色管理

注意

Key Vault 支援兩種類型的資源:保存庫和受控 HSM。 本文討論受控 HSM。 如果您想要了解如何管理保存庫,請參閱使用 Azure CLI 來管理 Key Vault

如需受控 HSM 的概觀,請參閱什麼是受控 HSM?。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

本文說明如何管理受控 HSM 資料平面的角色。 若要了解受控 HSM 存取控制模型,請參閱受控 HSM 存取控制

若要允許安全性主體 (例如使用者、服務主體、群組或受控識別) 執行受控 HSM 資料平面作業,他們必須被指派允許執行這些作業的角色。 例如,如果您想要允許應用程式使用金鑰執行簽署作業,則必須為其指派以 "Microsoft.KeyVault/managedHSM/keys/sign/action" 作為其中一個資料動作的角色。 角色可指派於特定範圍。 受控 HSM 本機 RBAC 支援兩個範圍:HSM 範圍 (//keys) 和每個金鑰 (/keys/<keyname>)。

如需所有受控 HSM 內建角色及其允許之作業的清單,請參閱受控 HSM 內建角色

必要條件

若要使用本文中的 Azure CLI 命名,您必須具有下列項目:

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 啟動 Azure Cloud Shell 的按鈕。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 Cloud Shell 按鈕的螢幕擷取畫面

若要使用 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 進行登入

建立新的角色指派

指派所有金鑰的角色

使用 az keyvault role assignment create 命令,針對 ContosoHSM 中的所有金鑰 (範圍 /keys),將受控 HSM 密碼編譯人員角色指派給使用者主體名稱 user2@contoso.com 所識別的使用者。

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

指派特定金鑰的角色

使用 az keyvault role assignment create 命令,針對名為 myrsakey 的特定金鑰,將受控 HSM 密碼編譯金鑰角色指派給使用者主體名稱 user2@contoso.com 所識別的使用者。

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 列出角色指派。

在範圍 / (未指定 --scope 時的預設值) 為所有使用者 (未指定 --assignee 時的預設值) 進行的所有角色指派

az keyvault role assignment list --hsm-name ContosoMHSM

在 HSM 層級為特定使用者 user1@contoso.com 進行的所有角色指派。

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

注意

當範圍是 / (或 /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 進行的受控 HSM 密碼編譯人員角色的特定角色指派

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

刪除角色指派

使用 az keyvault role assignment delete 命令,刪除指派給金鑰 myrsakey2 的使用者 user2@contoso.com受控 HSM 密碼編譯人員角色。

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 有數個內建 (預先定義的) 角色適合用於最常見的使用案例。 您可以使用允許角色執行的特定動作清單來定義您自己的角色。 然後,您可以將此角色指派給主體,以向其授與指定動作的權限。

針對名為 My Custom Role 的角色使用 az keyvault role definition create 命令 (使用 JSON 字串)。

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": []
}'

從名為 my-custom-role-definition.json 的檔案 (包含角色定義的 JSON 字串) 針對角色使用 az keyvault role definition create 命令。 請參閱上面的範例。

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

顯示角色定義的詳細資料

使用 az keyvault role definition show 命令以名稱 (GUID) 查看特定角色定義的詳細資料。

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

更新自訂角色定義

使用 az keyvault role definition update 命令來更新名為 My Custom Role 的角色 (使用 JSON 字串)。

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": []
        }'

刪除自訂角色定義

使用 az keyvault role definition delete 命令以名稱 (GUID) 查看特定角色定義的詳細資料。

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

注意

無法刪除內建角色。 刪除自訂角色時,所有使用該自訂角色的角色指派都會失效。

下一步