附註
Key Vault 資源提供者支援兩種資源類型:金鑰保存庫和受控硬體安全模組。 本文所述的存取控制僅適用於儲存庫。 若要深入了解受控 HSM 的存取控制,請參閱受控 HSM 存取控制。
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 |
金鑰保存庫清除操作員 | 允許永久刪除虛刪除的保存庫。 | a68e7c17-0ab2-4c09-9a58-125dae29748c |
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/write
和 Microsoft.Authorization/roleAssignments/delete
權限,例如 Key Vault 資料存取管理員 (只有指派/移除特定 Key Vault 角色的有限權限)、使用者存取管理員或擁有者。
在 Key Vault 上啟用 Azure RBAC 權限
附註
變更權限模型需要不受限的 'Microsoft.Authorization/roleAssignments/write' 權限,這是屬於擁有者和使用者存取管理員角色的權限。 傳統訂用帳戶管理員角色,例如「服務管理員」和「共同管理員」,或受限的「Key Vault 資料存取管理員」都無法用來變更權限模型。
在新的金鑰保存庫上啟用 Azure RBAC 權限:
在現有金鑰保存庫上啟用 Azure RBAC 權限:
重要
設定 Azure RBAC 權限模型會使所有存取原則權限失效。 如果未指派對等的 Azure 角色,則可能會導致服務中斷。
指派角色
附註
建議您在指令碼中使用唯一角色識別碼,而不要使用角色名稱。 這樣一來,即使角色重新命名,指令碼還是會繼續運作。 本文件使用角色名稱是為了方便閱讀。
若要使用 Azure CLI 建立角色指派,請使用 az role assignment 命令:
az role assignment create --role {role-name-or-id} --assignee {assignee-upn}> --scope {scope}
如需完整的詳細資料,請參閱使用 Azure CLI 指派 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 範圍的角色指派
az role assignment create --role "Key Vault Secrets Officer" --assignee {assignee-upn} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}
如需完整的詳細資料,請參閱使用 Azure CLI 指派 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 角色。
測試和驗證
附註
瀏覽器會使用快取,因此在移除角色指派後必須重新整理頁面。 留幾分鐘的時間來重新整理角色指派
驗證是否能在金鑰保存庫層級上不使用「Key Vault 祕密長」而新增祕密。
移至金鑰保存庫的 [存取控制 (IAM)] 索引標籤,並移除此資源的「金鑰保存庫密碼管理員」角色指派。
瀏覽至先前建立的秘密。 您會看到所有秘密屬性。
建立新的祕密 ([祕密] > [+ 產生/匯入]) 應該會顯示下列錯誤:
驗證是否能在秘密層級上不使用「Key Vault 秘密長」角色而編輯祕密。
移至先前所建立祕密的 [存取控制 (IAM)] 索引標籤,並移除此資源的「Key Vault 秘密長」角色指派。
瀏覽至先前建立的秘密。 您會看到秘密的屬性。
驗證是否能在金鑰保存庫層級上不使用讀者角色而讀取秘密。
移至金鑰保存庫資源群組的 [存取控制 (IAM)] 索引標籤,並移除「Key Vault 讀者」角色指派。
瀏覽至金鑰保存庫的 [祕密] 索引標籤時,應該會顯示下列錯誤:
建立自訂角色
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 Key Vault 角色型存取控制 (RBAC) 權限模型物件範圍指派,為 Azure Key Vault 內的應用程式小組提供隔離嗎?
否。 RBAC 權限模型可讓您將 Azure Key Vault 中的個別物件存取權指派給使用者或應用程式,但網路存取控制、監視和物件管理等任何系統管理作業都需要保存庫層級權限,此權限會將安全資訊公開給應用程式小組中的操作員。