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

注意

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

注意

透過 Azure 入口網站的 Azure App Service 憑證設定不支援 Key Vault RBAC 權限模型。 您可以使用 Azure PowerShell、Azure CLI、ARM 範本部署,以及 金鑰保存庫憑證使用者,進行 App Service 全域身分識別,例如公用雲端的 Microsoft Azure App Service。

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

Azure RBAC 可讓使用者管理金鑰、祕密和憑證的權限。 它提供一個位置來管理所有金鑰保存庫的權限。

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

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

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

我們的建議是針對每個環境使用保存庫(開發、生產前和生產環境),並在 金鑰保存庫 範圍指派角色。

應避免在個別密鑰、秘密和憑證上指派角色。 一般指引的例外狀況:

  • 在多個應用程式之間必須共用個別秘密的案例,例如,一個應用程式需要從另一個應用程式存取數據

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

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

注意

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

內建角色 描述 識別碼
Key Vault 系統管理員 可在金鑰保存庫和其中的所有物件上執行所有資料平面作業,包括憑證、金鑰和祕密。 無法管理金鑰保存庫資源或管理角色指派。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 00482a5a-887f-4fb3-b363-3b7fe8e74483
Key Vault 讀者 可讀取金鑰保存庫的中繼資料及其憑證、金鑰和祕密。 無法讀取敏感值,例如秘密內容或金鑰內容。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 21090545-7ca7-4776-b22c-e363652d74d2
Key Vault 憑證員 可對金鑰保存庫的憑證執行任何動作,但不能管理權限。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 a4417e6f-fecd-4de8-b567-7b0420556985
Key Vault 憑證使用者 讀取整個憑證內容,包括祕密和金鑰部分。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 db79e9a7-68ee-4b58-9aeb-b90e7c24fcba
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 機密運算和對等環境的發行金鑰。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。
Key Vault 祕密員 可對金鑰保存庫的祕密執行任何動作,但不能管理權限。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 b86a8fe4-44ce-4948-aee5-eccb2c155cd7
Key Vault 祕密使用者 讀取祕密內容,包括具有私密金鑰之憑證的祕密部分。 僅適用於使用「Azure 角色型存取控制」權限模型的金鑰保存庫。 4633458b-17de-408a-b874-0445c86b69e6

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

管理內建 Key Vault 資料平面角色指派

內建角色 描述 識別碼
Key Vault 資料存取系統管理員 新增或移除 Key Vault 系統管理員、Key Vault 憑證人員、Key Vault 密碼編譯人員、Key Vault 密碼編譯服務加密使用者、Key Vault 密碼編譯使用者、Key Vault 讀者、Key Vault 祕密人員或 Key Vault 祕密使用者角色的角色指派,來管理 Azure Key Vault 的存取權。 包含用來限制角色指派的 ABAC 條件。 8b54135c-b56d-4d72-a534-26097cfdc8d8

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

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

必要條件

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

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

在 Key Vault 上啟用 Azure RBAC 權限

注意

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

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

    啟用 Azure RBAC 許可權 - 新的保存庫

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

    啟用 Azure RBAC 許可權 - 現有的保存庫

重要

設定 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. 移至包含金鑰保存庫的資源群組。

    角色指派 - 資源群組

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

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

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

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

    在 Azure 入口網站 中新增角色指派頁面。

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 祕密長」
    存取權指派對象 目前使用者
    成員 依電子郵件地址搜尋

    在 Azure 入口網站 中新增角色指派頁面。

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)] 索引標籤

    角色指派 - 秘密

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

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

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

    在 Azure 入口網站 中新增角色指派頁面。

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 秘密長」角色指派。

      拿掉指派 - 金鑰儲存庫

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

      具有存取權的秘密檢視

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

      建立新的秘密

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

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

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

      沒有存取權的秘密檢視

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

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

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

      秘密索引標籤 - 錯誤

建立自訂角色

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 Key Vault 角色型存取控制 (RBAC) 權限模型物件範圍指派,為 Azure Key Vault 內的應用程式小組提供隔離嗎?

否。 RBAC 權限模型可讓您將 Azure Key Vault 中的個別物件存取權指派給使用者或應用程式,但網路存取控制、監視和物件管理等任何系統管理作業都需要保存庫層級權限,此權限會將安全資訊公開給應用程式小組中的操作員。

深入了解