使用 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/write 和 Microsoft.Authorization/roleAssignments/delete 權限,例如使用者存取管理員或擁有者。
在 Key Vault 上啟用 Azure RBAC 權限
注意
變更權限模型需要 'Microsoft.Authorization/roleAssignments/write' 權限,這是屬於擁有者和使用者存取系統管理員角色的權限。 不支援傳統訂用帳戶管理員角色,例如「服務管理員」和「共同管理員」。
在新的金鑰保存庫上啟用 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 角色指派] 畫面。
資源群組範圍的角色指派
移至包含金鑰保存庫的資源群組。

選取 [存取控制 (IAM)]。
選取 [新增][新增角色指派],開啟 [新增角色指派] 頁面。
指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色。
設定 值 角色 「Key Vault 讀者」 存取權指派對象 目前使用者 成員 依電子郵件地址搜尋 
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 範圍的角色指派
移至 Key Vault > [存取控制 (IAM)] 索引標籤
選取 [新增][新增角色指派],開啟 [新增角色指派] 頁面。
指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色。
設定 值 角色 「Key Vault 祕密長」 存取權指派對象 目前使用者 成員 依電子郵件地址搜尋 
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 角色。
秘密範圍的角色指派
開啟先前建立的秘密。
按一下 [存取控制 (IAM)] 索引標籤

選取 [新增][新增角色指派],開啟 [新增角色指派] 頁面。
指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色。
設定 值 角色 「Key Vault 祕密長」 存取權指派對象 目前使用者 成員 依電子郵件地址搜尋 
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 角色。
測試和驗證
注意
瀏覽器會使用快取,因此在移除角色指派後必須重新整理頁面。
留幾分鐘的時間來重新整理角色指派
驗證是否能在金鑰保存庫層級上不使用「Key Vault 祕密長」而新增祕密。
移至金鑰保存庫的 [存取控制 (IAM)] 索引標籤,並移除此資源的「Key Vault 秘密長」角色指派。

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

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

驗證是否能在秘密層級上不使用「Key Vault 秘密長」角色而編輯祕密。
移至先前所建立祕密的 [存取控制 (IAM)] 索引標籤,並移除此資源的「Key Vault 秘密長」角色指派。
瀏覽至先前建立的秘密。 您會看到秘密的屬性。

驗證是否能在金鑰保存庫層級上不使用讀者角色而讀取秘密。
移至金鑰保存庫資源群組的 [存取控制 (IAM)] 索引標籤,並移除「Key Vault 讀者」角色指派。
瀏覽至金鑰保存庫的 [密碼] 索引標籤時,應該會顯示下列錯誤:

建立自訂角色
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 秒) 的時間才會套用角色