使用 Azure 角色型存取控制來提供 Key Vault 金鑰、憑證和秘密的存取權

注意

Key Vault 資源提供者支援兩種資源類型:保存庫受控 HSM。 本文所述的存取控制僅適用於保存庫。 若要深入了解受控 HSM 的存取控制,請參閱受控 HSM 存取控制

注意

透過 Azure 入口網站的 Azure App Service 憑證設定不支援 Key Vault RBAC 權限模型。 支援使用例如 Azure PowerShell、Azure CLI、使用 Key Vault 祕密使用者Key Vault 讀者角色指派部署的 ARM 範本之類的用戶端程式庫。

Azure 角色型存取控制 (Azure RBAC) 是以 Azure Resource Manager 為基礎的授權系統,支援 Azure 資源的精細存取管理。

Azure RBAC 可讓使用者管理金鑰、秘密和憑證的權限。 其可供您集中管理所有金鑰保存庫的所有權限。

Azure RBAC 模型可讓您在不同的範圍層級上設定權限:管理群組、訂用帳戶、資源群組或個別資源。 適用於金鑰保存庫的 Azure RBAC 也可讓您在個別金鑰、秘密和憑證上擁有不同的權限

如需詳細資訊,請參閱 Azure 角色型存取控制 (Azure RBAC)

個別金鑰、秘密和憑證角色指派的最佳做法

我們的建議是針對每一環境 (開發、生產前和生產) 的每一應用程式來使用保存庫。

個別的金鑰、秘密和憑證權限應僅用於特定案例:

  • 在多個應用程式之間共用個別秘密,例如,某個應用程式需要從另一個應用程式存取資料
  • 使用客戶金鑰進行跨租用戶加密,例如 ISV 使用客戶金鑰保存庫中的金鑰來加密其資料

如需 Azure Key Vault 管理指導方針的詳細資訊,請參閱:

適用於 Key Vault 資料平面作業的 Azure 內建角色

注意

Key Vault Contributor 角色可供管理平面作業管理金鑰保存庫。 其不允許存取金鑰、秘密和憑證。

內建角色 描述 識別碼
Key Vault 管理員 在金鑰保存庫和其中的所有物件上執行所有資料平面作業,包括憑證、金鑰和秘密。 無法管理金鑰保存庫資源或管理角色指派。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 00482a5a-887f-4fb3-b363-3b7fe8e74483
Key Vault 憑證長 在金鑰保存庫的憑證上執行任何動作 (管理權限除外)。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 a4417e6f-fecd-4de8-b567-7b0420556985
Key Vault 密碼編譯長 在金鑰保存庫的金鑰上執行任何動作 (管理權限除外)。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 14b46e9e-c2b7-41b4-b07b-48a6ebf60603
Key Vault 密碼編譯服務加密使用者 讀取金鑰的中繼資料,並執行包裝/解除包裝作業。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 e147488a-f6f5-4113-8e2d-b22465e65bf6
Key Vault 密碼編譯使用者 使用金鑰執行密碼編譯作業。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 12338af0-0e69-4776-bea7-57ae8d297424
Key Vault 讀者 讀取金鑰保存庫的中繼資料及其憑證、金鑰和秘密。 無法讀取敏感值,例如秘密內容或金鑰內容。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 21090545-7ca7-4776-b22c-e363652d74d2
Key Vault 祕密長 在金鑰保存庫的祕密上執行任何動作 (管理權限除外)。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 b86a8fe4-44ce-4948-aee5-eccb2c155cd7
Key Vault 祕密使用者 讀取秘密的內容。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 4633458b-17de-408a-b874-0445c86b69e6

如需 Azure 內建角色定義的詳細資訊,請參閱 Azure 內建角色

搭配 Key Vault 使用 Azure RBAC 秘密、金鑰和憑證權限

金鑰保存庫的新 Azure RBAC 權限模型可替代保存庫存取原則權限模型。

必要條件

您必須擁有 Azure 訂用帳戶。 如果沒有,則可以在開始前先建立免費帳戶

若要新增角色指派,您必須具有 Microsoft.Authorization/roleAssignments/writeMicrosoft.Authorization/roleAssignments/delete 權限,例如使用者存取管理員擁有者

在 Key Vault 上啟用 Azure RBAC 權限

注意

變更權限模型需要 'Microsoft.Authorization/roleAssignments/write' 權限,這是屬於擁有者使用者存取系統管理員角色的權限。 不支援傳統訂用帳戶管理員角色,例如「服務管理員」和「共同管理員」。

  1. 在新的金鑰保存庫上啟用 Azure RBAC 權限:

    Enable Azure RBAC permissions - new vault

  2. 在現有金鑰保存庫上啟用 Azure RBAC 權限:

    Enable Azure RBAC permissions - existing vault

重要

設定 Azure RBAC 權限模型會使所有存取原則權限失效。 如果未指派對等的 Azure 角色,則可能會導致服務中斷。

指派角色

注意

建議您在指令碼中使用唯一角色識別碼,而不要使用角色名稱。 這樣一來,即使角色重新命名,指令碼還是會繼續運作。 本文件使用角色名稱是為了方便閱讀。

執行下列命令以建立角色指派:

az role assignment create --role <role_name_or_id> --assignee <assignee> --scope <scope>

如需完整的詳細資料,請參閱使用 Azure CLI 指派 Azure 角色

若要使用 Azure 入口網站指派角色,請參閱使用 Azure 入口網站指派 Azure 角色。 在 Azure 入口網站中,[存取控制 (IAM)] 索引標籤上的所有資源都會有 [Azure 角色指派] 畫面。

資源群組範圍的角色指派

  1. 移至包含金鑰保存庫的資源群組。

    Role assignment - resource group

  2. 選取 [存取控制 (IAM)]。

  3. 選取 [新增][新增角色指派],開啟 [新增角色指派] 頁面。

  4. 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 「Key Vault 讀者」
    存取權指派對象 目前使用者
    成員 依電子郵件地址搜尋

    Add role assignment page in Azure portal.

az role assignment create --role "Key Vault Reader" --assignee {i.e user@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}

如需完整的詳細資料,請參閱使用 Azure CLI 指派 Azure 角色

上述角色指派可讓您列出金鑰保存庫中的金鑰保存庫物件。

Key Vault 範圍的角色指派

  1. 移至 Key Vault > [存取控制 (IAM)] 索引標籤

  2. 選取 [新增][新增角色指派],開啟 [新增角色指派] 頁面。

  3. 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 「Key Vault 祕密長」
    存取權指派對象 目前使用者
    成員 依電子郵件地址搜尋

    Add role assignment page in Azure portal.

az role assignment create --role "Key Vault Secrets Officer" --assignee {i.e jalichwa@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}

如需完整的詳細資料,請參閱使用 Azure CLI 指派 Azure 角色

秘密範圍的角色指派

  1. 開啟先前建立的秘密。

  2. 按一下 [存取控制 (IAM)] 索引標籤

    Role assignment - secret

  3. 選取 [新增][新增角色指派],開啟 [新增角色指派] 頁面。

  4. 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 「Key Vault 祕密長」
    存取權指派對象 目前使用者
    成員 依電子郵件地址搜尋

    Add role assignment page in Azure portal.

az role assignment create --role "Key Vault Secrets Officer" --assignee {i.e user@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}/secrets/RBACSecret

如需完整的詳細資料,請參閱使用 Azure CLI 指派 Azure 角色

測試和驗證

注意

瀏覽器會使用快取,因此在移除角色指派後必須重新整理頁面。
留幾分鐘的時間來重新整理角色指派

  1. 驗證是否能在金鑰保存庫層級上不使用「Key Vault 祕密長」而新增祕密。

    1. 移至金鑰保存庫的 [存取控制 (IAM)] 索引標籤,並移除此資源的「Key Vault 秘密長」角色指派。

      Remove assignment - key vault

    2. 瀏覽至先前建立的秘密。 您會看到所有秘密屬性。

      Secret view with access

    3. 建立新的秘密 ([秘密] > [+ 產生/匯入]) 應該會顯示下列錯誤:

      Create new secret

  2. 驗證是否能在秘密層級上不使用「Key Vault 秘密長」角色而編輯祕密。

    1. 移至先前所建立祕密的 [存取控制 (IAM)] 索引標籤,並移除此資源的「Key Vault 秘密長」角色指派。

    2. 瀏覽至先前建立的秘密。 您會看到秘密的屬性。

      Secret view without access

  3. 驗證是否能在金鑰保存庫層級上不使用讀者角色而讀取秘密。

    1. 移至金鑰保存庫資源群組的 [存取控制 (IAM)] 索引標籤,並移除「Key Vault 讀者」角色指派。

    2. 瀏覽至金鑰保存庫的 [密碼] 索引標籤時,應該會顯示下列錯誤:

      Secret tab - error

建立自訂角色

az role definition create command

az role definition create --role-definition '{ \
   "Name": "Backup Keys Operator", \
   "Description": "Perform key backup/restore operations", \
    "Actions": [ 
    ], \
    "DataActions": [ \
        "Microsoft.KeyVault/vaults/keys/read ", \
        "Microsoft.KeyVault/vaults/keys/backup/action", \
         "Microsoft.KeyVault/vaults/keys/restore/action" \
    ], \
    "NotDataActions": [ 
   ], \
    "AssignableScopes": ["/subscriptions/{subscriptionId}"] \
}'

如需如何建立自訂角色的詳細資訊,請參閱:

Azure 自訂角色 (機器翻譯)

已知限制和效能

  • Azure Lighthouse 之類的多租用戶案例不支援 Key Vault 資料平面 RBAC
  • 每一訂用帳戶 2000 個 Azure 角色指派
  • 角色指派延遲:根據目前的預期效能,在變更角色指派後,最多需要 10 分鐘 (600 秒) 的時間才會套用角色

深入了解