驗證是驗證使用者或應用程式身分識別的程式。 建議您使用單一來源識別提供者來處理身分識別管理和驗證。 此提供者稱為 目錄服務。 它提供儲存目錄數據的方式,並讓網路使用者和系統管理員能夠使用此數據。
任何 Data Lake 解決方案都應該使用並整合現有的目錄服務。 對於大多數組織而言,所有身分識別相關服務的目錄服務通常是 Microsoft Entra ID。 它是所有服務和用戶帳戶的主要和集中式資料庫。
在雲端中,Microsoft Entra ID 是集中式識別提供者,也是身分識別管理的慣用來源。 將驗證和授權委派給 Microsoft Entra ID,以使用條件式存取原則等功能,要求用戶位於特定位置。 Microsoft Entra ID 也支援多重要素驗證,這會增加存取安全性層級。 您應該盡可能整合 Microsoft Entra ID 來設定資料服務。
如果您的資料服務不支援Microsoft Entra ID,您應該使用存取金鑰或令牌來執行驗證。 您應該將存取金鑰儲存在金鑰管理存放區中,例如 Azure Key Vault。
雲端規模分析的驗證案例如下:
- 用戶驗證。 在此案例中,Microsoft Entra ID 會使用其認證來驗證使用者。
- 服務對服務驗證。 在此案例中,Azure 資源會使用 Azure 自動管理的受控識別來驗證服務。
- 應用程式對服務驗證。 在此案例中,應用程式會使用服務主體來驗證服務。
驗證案例
下列各節說明每個驗證案例:使用者驗證、服務對服務驗證,以及應用程式對服務驗證。
使用者驗證
連接到數據服務或資源的用戶必須出示認證。 此認證會證明用戶的身份如其所述。 然後他們可以存取服務或資源。 驗證也可讓服務知道使用者的身分識別。 服務會決定使用者在驗證身分識別之後可以看到和執行的動作。
Azure Data Lake Storage、Azure SQL Database 和 Azure Databricks 支援Microsoft Entra ID 整合。 互動式用戶驗證模式需要使用者在對話框中提供認證。
重要
請勿將使用者認證硬式編碼至應用程式以進行驗證。
服務對服務驗證
當服務在沒有人為互動的情況下存取另一個服務時,它必須呈現有效的身分識別。 此身分識別會證明服務的真實性,並允許其存取的服務判斷允許的動作。
在服務對服務驗證案例中,建議您使用受控識別來驗證 Azure 服務。 Azure 資源的受控識別允許向任何支援Microsoft Entra 驗證的服務進行驗證,而不需要任何明確認證。 如需詳細資訊,請參閱什麼是 Azure 資源受控識別。
受控識別是只能搭配 Azure 資源使用的服務主體。 例如,您可以建立 Azure Data Factory 實例的受控識別。 Microsoft Entra ID 會將此受控識別註冊為代表 Data Factory 實例的物件。 然後,您可以使用此身分識別來驗證任何服務,例如 Data Lake Storage,而不需要程式代碼中的任何認證。 Azure 會管理服務實例所使用的認證。 身分識別可以驗證 Azure 服務資源,例如 Data Lake Storage 中的資料夾。 當您刪除 Data Factory 實例時,Azure 會在 Microsoft Entra 識別碼中刪除身分識別。
使用受控識別的優點
使用受控識別來驗證 Azure 服務與其他 Azure 服務或資源之間的身分。 受控識別提供下列優點:
- 受管理的身份代表它所創建的服務。 它不代表互動式使用者。
- 受控身份識別憑證會維護、管理和儲存在 Microsoft Entra ID 中。 用戶沒有要保留的密碼。
- 當您使用受控識別時,客戶端服務不會使用密碼。
- 刪除服務實例時,系統會刪除系統指派的受控識別。
這些優點表示認證受到更好的保護,且安全性危害的可能性較低。
應用程式對服務驗證
另一個存取案例是當應用程式,例如行動應用程式或 Web 應用程式存取 Azure 服務時。 應用程式必須呈現其身分識別,然後必須加以驗證。
Azure 服務主體是針對不支援受控識別的應用程式和服務來驗證 Azure 資源的一個替代方案。 服務主體是專為應用程式、託管服務和自動化工具來存取 Azure 資源的身分識別。 被指派給服務主體的角色會決定其存取權限。 基於安全性考慮,我們建議您使用服務主體搭配自動化工具或應用程式,而不是允許他們以使用者身分識別登入。 如需詳細資訊,請參閱 Microsoft Entra ID 中的應用程式和服務主體物件。
受控識別和服務主體之間的差異
| 服務主體 | 受控識別 |
|---|---|
| 您手動為需要存取特定 Azure 資源的應用程式、服務和工具,在 Microsoft Entra ID 中建立的安全性標識。 | 特殊類型的服務主體。 這是建立 Azure 服務時所建立的自動身分識別。 |
| 由任何應用程式或服務使用,且未系結至特定 Azure 服務。 | 表示 Azure 服務實例本身。 它無法用來代表其他 Azure 服務。 |
| 具有獨立的生命週期。 您必須明確刪除它。 | 刪除 Azure 服務實例時,會自動刪除。 |
| 密碼型或憑證型驗證。 | 不需要提供明確的密碼來進行驗證。 |
注意
受管理的身份和服務主體僅在 Microsoft Entra ID 中建立和維護。
雲端規模分析中驗證的最佳做法
在雲端規模分析中,實作健全且安全的驗證做法是最重要的。 驗證的最佳做法適用於解決方案的各種層級,包括資料庫、記憶體和分析服務。 藉由使用Microsoft Entra ID,組織可以使用多重要素驗證和條件式存取原則等功能來改善安全性。
| 層 | 服務 | 建議 |
|---|---|---|
| 資料庫 | - SQL 資料庫 - SQL 受控實例 - 適用於 MySQL 的 Azure 資料庫 - 適用於 PostgreSQL 的 Azure 資料庫 |
使用 Microsoft Entra ID 來向 適用於 PostgreSQL 的 Azure 資料庫、 Azure SQL 和 適用於 MySQL 的 Azure 資料庫等資料庫進行驗證。 |
| 儲存體 | Data Lake Storage | 使用 Microsoft Entra 身分識別 (ID) 來驗證安全性主體,例如使用者、群組、服務主體或受控識別與 Data Lake Storage,而不是依賴共用的金鑰或共用的存取簽章。 這種方法有助於改善安全性,因為它支援多重要素驗證和條件式存取原則。 |
| 儲存體 | 來自 Azure Databricks 的 Data Lake Storage | 藉由建立使用受控識別和外部位置的記憶體認證,使用 Unity 目錄來連線到 Data Lake Storage,而不是直接存取記憶體層級。 |
| Analytics | Azure Databricks | 使用跨網域身份管理系統來同步 Microsoft Entra ID 的使用者與群組。 若要使用 REST API 存取 Azure Databricks 資源, 請使用 OAuth 搭配 Azure Databricks 服務主體。 |
重要
提供 Azure Databricks 使用者直接的儲存層級存取 Data Lake Storage,會繞過 Unity Catalog 的權限、稽核和安全性功能,其中包括存取控制和監控。 為了更好地保護及控管數據,Unity 目錄應該管理 Azure Databricks 工作區用戶儲存在 Data Lake Storage 中的數據存取權。