使用 Azure 原則指派受控識別 (預覽)
Azure 原則有助於強制執行組織標準及大規模評估合規性。 透過其合規性儀表板,Azure 原則會提供存取彙總檢視,可協助管理員評估環境的整體狀態。 您可以向下切入至每個資源、每個原則的細微性。 也可透過對現有資源進行大規模補救,以及自動對新資源進行補救來協助您的資源達到合規性。 Azure 原則的常見使用案例包括執行控管下列項目:
- 資源一致性
- 法規合規性
- 安全性
- 成本
- 管理
這些常見使用案例的原則定義可直接在您的 Azure 環境中取得,協助您開始進行作業。
Azure 監視代理程式需要受監視 Azure 虛擬機器 (VM) 上的受控識別。 本文件說明 Microsoft 所提供的內建 Azure 原則行為,可協助確保將這些案例所需的受控識別大規模指派給 VM。
雖然可以使用系統指派的受控識別,但在大規模使用時 (例如,用於訂用帳戶中的所有 VM) 會導致在 Microsoft Entra ID 中建立 (和刪除) 大量的身分識別。 若要避免這種身分識別混亂,建議您採用使用者指派的受控身分識別,這種身分識別可一次建立並在多個 VM 上共用。
原則定義和詳細資料
執行時,原則會採取下列動作:
- 在原則範圍內的 VM 上,於訂用帳戶和每個 Azure 區域中建立新的內建使用者指派受控識別 (若不存在)。
- 建立之後,將使用者指派的受控識別鎖定,避免將其意外刪除。
- 從原則範圍內的訂用帳戶和區域,將內建使用者指派的受控識別指派給虛擬機器。
注意
如果虛擬機器已指派僅 1 個使用者指派的受控識別,則原則指派內建身分識別會略過此 VM。 這是為了確保原則指派不會中斷相依於 IMDS 上權杖端點預設行為的應用程式。
有兩種使用原則的案例:
- 讓原則建立並使用「內建」使用者指派的受控識別。
- 自備使用者指派的受控識別。
此原則會採用下列輸入參數:
- 自備 UAMI? - 原則應該建立新的使用者指派受控識別嗎 (若不存在)?
- 如果設定為 true,則必須指定:
- 受控識別的名稱。
- 包含受控識別的資源群組。
- 如果設定為 false,則不需要額外的輸入。
- 此原則會在名為「built-in-identity-rg」的資源群組中,建立名為「built-in-identity-rg」的必要使用者指派受控識別。
- 如果設定為 true,則必須指定:
- Restrict-Bring-your-own-UAMI-to-Subscription? - 當 Bring-Your-Own-UAMI 參數設定為 true 時,原則應該使用集中式使用者指派的受控識別,還是針對每個訂用帳戶使用身分識別?
- 如果設定為 true,則不需要額外的輸入。
- 原則會使用每個訂用帳戶的使用者指派受控識別。
- 如果設定為 false,原則將會使用單一集中式使用者指派的受控識別,此識別會套用至原則指派涵蓋的所有訂用帳戶。 您必須指定:
- 使用者指派的受控識別資源標識碼
- 如果設定為 true,則不需要額外的輸入。
使用原則
建立原則指派
原則定義可以指派給 Azure 中的不同範圍,包括管理群組訂用帳戶或特定資源群組。 由於原則必須持續強制執行,因此會使用與原則指派物件相關聯的受控識別來執行指派作業。 原則指派物件可同時支援系統指派和使用者指派的受控識別。 例如,Joe 可以建立名為 PolicyAssignmentMI 的使用者指派受控識別。 內建原則會原則指派範圍內的每個訂用帳戶和每個具有資源的區域中,建立使用者指派的受控識別。 原則所建立的使用者指派受控識別具有下列 resourceId 格式:
/subscriptions/your-subscription-id/resourceGroups/built-in-identity-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/built-in-identity-{location}
例如:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/built-in-identity-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/built-in-identity-eastus
必要的授權
若要讓 PolicyAssignmentMI 受控識別能夠在指定範圍內指派內建原則,則需要下列權限,表示為 Azure RBAC (Azure 角色型存取控制) 角色指派:
主體 | 角色/動作 | 範圍 | 目的 |
---|---|---|---|
PolicyAssigmentMI | 受控身分識別操作員 | /subscription/subscription-id/resourceGroups/built-in-identity OR 自備使用者指派的受控識別 |
將內建身分識別指派給 VM 時需要。 |
PolicyAssigmentMI | 參與者 | /subscription/subscription-id> | 建立資源群組以保存訂用帳戶中的內建受控識別時需要。 |
PolicyAssigmentMI | 受控身分識別參與者 | /subscription/subscription-id/resourceGroups/built-in-identity | 建立新的使用者指派受控識別時需要。 |
PolicyAssigmentMI | 使用者存取系統管理員 | /subscription/subscription-id/resourceGroups/built-in-identity OR 自備使用者指派的受控識別 |
在原則所建立的使用者指派受控識別上設定鎖定時需要。 |
由於原則指派物件必須事先擁有此權限,因此 PolicyAssignmentMI 在此情況下不能是系統指派的受控識別。 執行原則指派工作的使用者必須事先使用上述角色指派預先授權 PolicyAssignmentMI。
如您所見,所需的最低權限角色為訂用帳戶範圍的「參與者」。
已知問題
另一個部署若變更指派給 VM 的身分識別可能會導致競爭狀況,從而導致非預期的結果。
如果有兩個以上的平行部署更新相同的虛擬機器,而且全都會變更虛擬機器的身分識別設定,則在特定競爭情況下,所有預期的身分識別都不會指派給機器。 例如,如果本文件中的原則正在更新 VM 的受控識別,同時另一個程式也在變更受控識別區段,則無法保證所有預期的身分識別都已正確指派給 VM。