應用程式身分識別和存取管理
本文說明應用程式擁有者和開發人員可用來設計雲端原生應用程式的身分識別和存取管理的考慮和建議。
如果您的小組移轉或建立雲端原生應用程式,您必須考慮應用程式的驗證和存取需求。 這些需求會決定使用者如何向應用程式進行驗證,以及應用程式資源如何互相驗證,例如 Web 應用程式存取 SQL 資料庫時。
在平臺自動化和 DevOps 設計區域中,我們建議您的應用程式小組將工作負載轉換為 訂閱自動販賣。 在訂用帳戶自動銷售程式中,您的應用程式小組必須提供平臺小組的身分識別和存取需求,讓他們可以建立適當的訂用帳戶。 應用程式擁有者負責個別應用程式的身分識別和存取管理。 他們應該使用平臺小組提供的集中式服務來管理其應用程式。
設計考量
為了協助降低未經授權存取應用程式的風險,請將下列考慮納入您的設計。
有數個驗證和授權標準,例如 OAuth 2.0、OpenID Connect、JSON Web 令牌(JWT)和 SAML(安全性判斷提示標記語言)。 判斷要用於應用程式的驗證和授權標準。
當您向平臺小組要求應用程式登陸區域時,您可以藉由詢問下列問題,協助確保他們建立適當的訂用帳戶:
終端使用者將如何驗證及存取應用程式?
誰需要應用程式所使用的資源和服務角色型訪問控制 (RBAC) 許可權?
現有的內建角色是否涵蓋控制平面和數據平面存取的 RBAC 存取需求,或是否需要建立新的自定義角色?
平臺小組是否實作任何可能導致應用程式問題的合規性政策?
哪些應用程式元件需要彼此通訊?
在平臺登陸區域中部署的共享資源,例如Microsoft Entra Domain Services,是否有存取共用資源的需求?
Azure 金鑰保存庫 和受控識別
公用雲端資源的安全性缺口通常源自內嵌在程序代碼或其他文字中的外泄認證。 您可以使用受控識別和 金鑰保存庫 來實作程式設計存取,並協助降低認證竊取的風險。
如果您的應用程式或工作負載需要服務安全地儲存認證,您可以使用 金鑰保存庫 來管理秘密、金鑰和憑證。
若要避免在您的程式代碼中具有認證,您可以使用受控識別搭配 Azure VM 來向支援 Microsoft Entra ID 驗證的任何服務 進行驗證。 如需詳細資訊,請參閱 在 VM 上使用 Azure 資源的受控識別來取得存取令牌。
受控識別 提供應用程式和資源連線到支援Microsoft Entra ID 驗證的資源時,所使用的自動受控識別主體。 應用程式可以使用受控識別來 取得Microsoft Entra ID 令牌,而不需要管理任何認證。
您可以使用 系統指派或使用者指派的受控識別。
很容易混淆服務主體和受控識別存取 Azure 資源的方式。 若要瞭解這兩者之間的差異,請參閱 解密服務主體 — 受控識別。
可能的話,請使用受控識別來支持驗證,而不是使用服務主體和Microsoft Entra ID 應用程式註冊。 您必須擁有應用程式管理員或應用程式開發人員 RBAC 角色,才能建立服務主體和應用程式註冊。 這些特殊許可權角色通常會指派給平臺小組或身分識別小組。 使用受控識別來消除平臺小組為應用程式小組建立服務主體和應用程式註冊的需求。
您可以使用受控識別來向任何支援 Microsoft Entra 驗證的服務進行驗證。 不過,並非所有服務都支援受控識別來存取其他服務。 對於某些服務,可能需要儲存認證。 您應該安全地儲存認證、避免與其他服務共用認證,並遵循最低許可權原則。 如需詳細資訊,請參閱 可使用受控識別來存取其他服務的 Azure 服務。
您可以使用受控識別搭配 Azure 虛擬機(VM)向支援Microsoft Entra ID 驗證的任何服務 進行驗證。 如需詳細資訊,請參閱 在 VM 上使用 Azure 資源的受控識別來取得存取令牌。
限制在訂用帳戶與區域之間移動具有受控識別的資源。 例如,您可能會基於數據主權原因,在訂用帳戶或區域之間移動資源,以進行合併、收購或回復。
如果 Azure 資源具有使用者指派或系統指派的身分識別,則您無法將資源轉移至另一個 Azure 訂用帳戶或區域。 移動資源之前,您必須先刪除受控識別。 移動之後,您必須重新建立受控識別,並將其指派給資源。 如需詳細資訊,請參閱將資源移動到新的資源群組或訂用帳戶。
如果您將訂用帳戶從某個目錄移至另一個目錄,則不會保留受控識別。 您必須移動資源,然後 手動重新建立受控識別。
與使用者 RBAC 角色指派類似,當您將受控識別存取權授與資源時, 請遵循最低許可權 原則。
外部使用者
您可以評估涉及設定外部使用者、客戶或合作夥伴的案例,讓他們可以存取資源。 判斷這些案例是否涉及 Microsoft Entra B2B 或 Azure Active Directory B2C (Azure AD B2C) 組態。 如需詳細資訊,請參閱 Microsoft Entra 外部 ID 概觀。
設計建議
設計應用程式的身分識別和存取管理時,請考慮下列建議。
OpenID Connect
如果您的應用程式小組使用持續整合和持續傳遞 (CI/CD) 管線,以程式設計方式部署應用程式,請將 OpenID Connect 驗證設定為您的 Azure 服務。 OpenID Connect 會使用暫時的無認證令牌向 Azure 服務進行驗證。 如需詳細資訊,請參閱 工作負載身分識別同盟。
如果不支援 OpenID Connect,請建立服務主體,並指派必要的許可權以允許部署基礎結構或應用程式程序代碼。 如需詳細資訊,請參閱定型模組: 使用服務主體驗證您的 Azure 部署管線。
屬性型存取控制
若要進一步限制存取並防止未經授權的數據存取,請使用支援的屬性型訪問控制 (ABAC),例如使用 Azure Blob 儲存體。
虛擬機存取
可能的話,請使用 Microsoft Entra ID 身分識別來控制對 Azure 虛擬機的存取。 使用Microsoft Entra標識符,而不是本機驗證來提供虛擬機的存取權,利用Microsoft Entra 條件式存取、稽核記錄,以及Microsoft Entra 多重要素驗證 (MFA)。 此設定可降低攻擊者利用不安全的本機驗證服務的風險。 如需詳細資訊,請參閱 使用 Microsoft Entra ID 和 OpenSSH 登入 Azure 中的 Linux 虛擬機,並使用 Microsoft Entra ID 登入 Azure 中的 Windows 虛擬機,包括無密碼。
Microsoft 身分識別平台
當開發人員建置雲端原生應用程式時,他們應該使用 適用於開發人員的 Microsoft 身分識別平台 作為其應用程式的識別提供者。 Microsoft 身分識別平台 提供 OpenID Connect 標準相容的驗證服務,開發人員可用來驗證數種身分識別類型,包括:
工作或學校帳戶 (透過 Microsoft Entra ID 佈建)
個人 Microsoft 帳戶 (Skype、Xbox、Outlook.com)
社交或本機帳戶,使用 Microsoft Entra 識別碼
Microsoft 身分識別平台 最佳做法和建議檢查清單提供有效整合應用程式與 Microsoft 身分識別平台 的指引。
受控識別
若要啟用不需要使用認證的 Azure 資源之間的存取,請使用受控識別。
您不應該在各種環境或應用程式之間共用認證或受控識別。 例如,請勿將身分識別用於生產資源,也用於開發/測試資源,即使是針對相同的應用程式也一樣。 為每個應用程式實例建立個別的認證,以減少影響生產數據之遭入侵測試實例的可能性。 個別認證也可讓您更輕鬆地在不再需要認證時撤銷認證。
當需要大規模使用受控識別時,請針對每個區域中的每個資源類型使用使用者指派的受控識別。 此方法可防止身分識別流失。 例如,Azure 監視器代理程式在受監視的 Azure VM 上需要受控識別,這可能會導致Microsoft Entra ID 建立(和刪除)大量身分識別。 您可以建立使用者指派的受控識別一次,並跨多個 VM 共享它們。 使用 Azure 原則 來實作此建議。
Key Vault
您可以使用 金鑰保存庫 來管理應用程式所使用的秘密、金鑰、憑證。
若要 管理秘密的存取 權(數據平面),以及系統管理訪問控制(控制平面),請使用 RBAC。
若要控制應用程式對 金鑰保存庫 的存取,請使用受控識別。
您應該針對每個區域中的每個應用程式環境使用個別的金鑰保存庫(開發、生產前、生產階段)。 使用 RBAC 來管理秘密、金鑰和憑證的存取權(數據平面作業),以及存取 金鑰保存庫(控制平面)。 將具有應用程式秘密的金鑰保存庫部署到應用程式登陸區域。
Microsoft Entra 應用程式 Proxy
若要透過 Microsoft Entra 識別碼從遠端存取使用內部部署驗證的應用程式,請使用 Microsoft Entra 應用程式 Proxy。 Microsoft Entra 應用程式 Proxy 提供對內部部署 Web 應用程式的安全遠端訪問,包括使用較舊驗證通訊協議的應用程式。 單一登錄至 Microsoft Entra ID 之後,使用者可以透過外部 URL 或內部應用程式入口網站來存取雲端和內部部署應用程式。
您可以將Microsoft Entra 應用程式 Proxy 部署為單一實例,以Microsoft Entra ID 租使用者。 設定至少需要應用程式管理員特殊許可權Microsoft Entra ID 角色。 如果您的組織使用訂用帳戶大眾化作為角色指派模型,應用程式擁有者可能沒有設定Microsoft Entra 應用程式 Proxy 的必要許可權。 在此情況下,平臺小組應該為應用程式擁有者設定Microsoft Entra 應用程式 Proxy。
如果您使用具有足夠許可權的 CI/CD 部署管線,應用程式擁有者可以使用 Microsoft Graph API 來設定 Microsoft Entra 應用程式 Proxy。
如果應用程式使用舊版通訊協定,例如 Kerberos,請確定應用程式登陸區域具有 Microsoft 身分識別平台 訂用帳戶中域控制器的網路連線能力。