使用受控識別,從串流分析作業存取 Azure SQL Database 或 Azure Synapse Analytics
Azure 串流分析支援 Azure SQL Database 和 Azure Synapse Analytics 輸出接收的受控識別驗證。 受控識別消除了以使用者為基礎的驗證方法限制,比如因為密碼變更或使用者權杖每 90 天到期一次而需要重新驗證。 當您移除手動驗證的需求時,您的串流分析部署可以完全自動化。
受控識別是在 Microsoft Entra ID 中註冊的受控應用程式,代表了指定的串流分析作業。 受控應用程式用來向目標資源進行驗證。 本文說明如何透過 Azure 入口網站,為串流分析作業的 Azure SQL Database 或 Azure Synapse Analytics 輸出啟用受控識別。
概觀
本文說明使用受控識別驗證模式,將串流分析作業連線到 Azure SQL Database 或 Azure Synapse Analytics SQL 集區所需的步驟。
先為串流分析作業建立系統指派的受控識別。 這是您在 Microsoft Entra ID 中的作業身分識別。
將 Active Directory 管理員新增至 SQL 伺服器或 Synapse 工作區,這樣就可以為該資源啟用 Microsoft Entra ID (受控識別) 驗證。
接下來,建立代表資料庫中串流分析作業身分識別的自主使用者。 每當串流分析作業與 SQL DB 或 Synapse SQL DB 資源互動時,這是其所參考的身分識別,用來檢查串流分析作業擁有的權限。
授與串流分析作業的權限,以存取 SQL Database或 Synapse SQL 集區。
最後,將 Azure SQL Database/Azure Synapse Analytics 新增為串流分析作業中的輸出。
必要條件
使用這項功能需要下列各項:
Azure 串流分析作業。
Azure SQL Database 資源。
建立受控識別
首先,您會建立 Azure 串流分析作業的受控識別。
在 Azure 入口網站中,開啟您的 Azure 串流分析作業。
從左側導覽功能表中,選取位於 [設定] 之下的 [受控識別]。 然後,核取 [使用系統指派的受控識別] 旁的方塊,然後選取 [儲存]。
Microsoft Entra ID 中已建立串流分析作業的識別服務主體。 Azure 會管理新建立的身分識別生命週期。 當串流分析作業刪除時,Azure 會自動刪除已與其建立關聯的身分識別 (亦即服務主體)。
您也可以切換至使用者指派的受控識別。
當您儲存組態時,服務主體的物件識別碼 (OID) 會列為主體識別碼,如下所示:
服務主體與串流分析作業的名稱相同。 例如,如果作業的名稱是 MyASAJob,則服務主體的名稱也會是 MyASAJob。
選取 Active Directory 管理員
建立受控識別之後,請選取 Active Directory 管理員。
瀏覽至 Azure SQL Database 或 Azure Synapse Analytics SQL 集區資源,然後分別選取資源所在的 SQL Server或 Synapse 工作區。 您可以在 [伺服器名稱] 或 [工作區名稱] 旁的資源概觀頁面中找到這些連結。
針對 SQL Server 和 Synapse 工作區,分別選取 [設定] 下 [Active Directory 管理員] 或 [SQL Active Directory 管理員]。 接著,選取 [設定管理員]。
在 [Active Directory 管理員] 頁面上,搜尋要成為 SQL Server 管理員的使用者或群組,然後按一下 [選取]。 此就是在下一節中能夠建立自主資料庫使用者的使用者。
[Active Directory 系統管理員] 頁面會顯示您 Active Directory 的所有成員和群組。 無法選取灰色的使用者或群組,因為 Microsoft Entra 管理員不支援這些使用者或群組。 請參閱使用 Microsoft Entra 驗證向 SQL Database 或 Azure Synapse 進行驗證的 Microsoft Entra 功能和限制一節中支援的系統管理員清單。
在 [Active Directory 管理員] 頁面上選取 [儲存]。 變更管理員的程序需要幾分鐘的時間。
建立自主資料庫使用者
接下來,您會在 Azure SQL 或 Azure Synapse Analytics 資料庫中建立對應至 Microsoft Entra 身分識別的自主資料庫使用者。 自主資料庫使用者沒有主要資料庫的登入,但是會對應至目錄中與資料庫相關聯的身分識別。 Microsoft Entra 身分識別可以是個別的使用者帳戶或群組。 在此情況下,您想要為串流分析作業建立自主資料庫使用者。
如需詳細資訊,請檢閱下列文章以了解 Microsoft Entra 整合的背景:使用 SQL Database 的通用驗證和 Azure Synapse Analytics (MFA 的 SSMS 支援)
使用 SQL Server Management Studio 連線至 Azure SQL 或 Azure Synapse 資料庫。 [使用者名稱] 是具有 [改變任何使用者] 權限的 Microsoft Entra 使用者。 您在 SQL Server 上設定的管理員即為範例。 使用 Microsoft Entra ID – Universal 搭配 MFA 驗證。
伺服器名稱
<SQL Server name>.database.windows.net
在不同的區域中可能不同。 例如,中國地區應該使用<SQL Server name>.database.chinacloudapi.cn
。您可以移至 [選項] > [連線屬性] > [連線到資料庫],指定特定 Azure SQL 或 Azure Synapse 資料庫。
當您第一次連線時,可能會遇到下列視窗:
- 若是如此,移至 Azure 入口網站上 SQL Server/Synapse 工作區資源。 在 [安全性] 區段下,開啟 [防火牆和虛擬網路/防火牆] 頁面。
- 使用任何規則名稱新增規則。
- 使用 [新增防火牆規則] 視窗中 [開始 IP] 的 [起始] IP 位址。
- 使用 [新增防火牆規則] 視窗中 [結束 IP] 的 [終止] IP 位址。
- 選取 [儲存],然後再次嘗試從 SQL Server Management Studio 連線。
連線之後,請建立自主資料庫使用者。 下列 SQL 命令會建立具有與您的串流分析作業同名的自主資料庫使用者。 務必將 ASA_JOB_NAME 放入括弧中。 使用下列 T-SQL 語法並執行查詢。
CREATE USER [ASA_JOB_NAME] FROM EXTERNAL PROVIDER;
若要確認您是否已正確新增自主資料庫使用者,請在相關資料庫底下在 SSMS 中執行下列命令,並檢查 ASA_JOB_NAME 是否位於「名稱」資料行之下。
SELECT * FROM <SQL_DB_NAME>.sys.database_principals WHERE type_desc = 'EXTERNAL_USER'
為了讓 Microsoft 的 Microsoft Entra ID 確認串流分析作業是否可存取 SQL Database,我們必須給予 Microsoft Entra 與資料庫通訊的權限。 若要這麼做,請再次移至 Azure 入口網站中的 [防火牆和虛擬網路"/”防火牆] 頁面,並啟用 [允許 Azure 服務和資源存取這部伺服器/工作區]。
授與串流分析作業權限
當您在入口網站中建立自主資料庫使用者並取得 Azure 服務的存取權 (如上一節所述) 之後,您的串流分析作業會從受控識別獲得權限,可透過受控識別連線到 Azure SQL Database 資源。 建議您將 SELECT 和 INSERT 權限授與串流分析作業,因為稍後在串流分析工作流程中需要用到。 SELECT 權限可讓作業測試其與 Azure SQL Database 中資料表的連線。 INSERT 權限可讓您在設定輸入和 Azure SQL 資料庫輸出時,測試端對端串流分析查詢。
您可以使用 SQL Server Management Studio,將這些權限授予串流分析作業。 如需詳細資訊,請參閱 GRANT (Transact-SQL) 參考。
若只要授與資料庫中特定資料表或物件的權限,請使用下列 T-SQL 語法並執行查詢。
GRANT CONNECT TO ASA_JOB_NAME;
GRANT SELECT, INSERT ON OBJECT::TABLE_NAME TO ASA_JOB_NAME;
或者,您可以在 SQL Server Management Studio 中以滑鼠右鍵按一下 Azure SQL 或 Azure Synapse 資料庫,然後選取 [屬性] > [權限]。 從 [權限] 功能表中,您可以看到先前新增的串流分析作業,而且可以視需要手動授與或拒絕權限。
若要查看您已新增至 ASA_JOB_NAME 使用者的所有權限,請在 SSMS 中,於相關資料庫底下執行下列命令:
SELECT dbprin.name, dbprin.type_desc, dbperm.permission_name, dbperm.state_desc, dbperm.class_desc, object_name(dbperm.major_id)
FROM sys.database_principals dbprin
LEFT JOIN sys.database_permissions dbperm
ON dbperm.grantee_principal_id = dbprin.principal_id
WHERE dbprin.name = '<ASA_JOB_NAME>'
建立 Azure SQL Database 或 Azure Synapse 輸出
注意
使用 SQL 受控執行個體 (MI) 作為參考輸入時,您必須在 SQL 受控執行個體中設定公用端點。 設定資料庫屬性時,您必須使用連接埠指定完整網域名稱。 例如:sampleserver.public.database.windows.net,3342。
既然您的受控識別現已設定,您可將 Azure SQL Database 或 Azure Synapse 輸出新增到串流分析作業。
請確定您已在 SQL Database 中建立具有適當輸出架構的資料表。 這個資料表的名稱,是當您將 SQL Database 輸出新增至串流分析作業時,必須填寫的其中一個必要屬性。 此外,請確定作業有 SELECT 和 INSERT 權限,才能測試連線及執行串流分析查詢。 如果您尚未這麼做,請參閱授與串流分析作業權限一節。
回到您的串流分析作業,然後瀏覽至 [作業拓撲] 下的 [輸出] 頁面。
選取 [新增] > [SQL Database]。 在 SQL Database 輸出接收的輸出屬性視窗中,選取驗證模式下拉式清單中的 [受控識別]。
填寫其餘屬性。 若要深入了解如何建立 SQL Database 輸出,請參閱使用串流分析建立 SQL Database 輸出。 完成之後,選取儲存。
按一下 [儲存] 之後,資源的連接測試應該會自動觸發。 成功完成之後,您已成功設定串流分析作業,以使用受控識別驗證模式連線到 Azure SQL Database 或 Synapse SQL Database。
SQL 參考資料的其他步驟
使用 SQL 參考資料時,串流分析會要求您設定作業的儲存體帳戶。 此儲存體帳戶將用於儲存您串流分析作業的相關內容,例如 SQL 參考資料快照集。
請遵循下列步驟來設定相關聯的儲存體帳戶:
在 [串流分析作業] 頁面上,選取左側功能表中 [設定] 底下的 [儲存體帳戶設定]。
在 [儲存體帳戶設定] 頁面上,選取 [新增儲存體帳戶]。
請遵循指示來設定儲存體帳戶設定。
重要
- 若要使用連接字串進行驗證,您必須停用儲存體帳戶防火牆設定。
- 若要使用受控識別進行驗證,您必須針對儲存體 Blob 資料參與者角色和儲存體資料表資料參與者角色,將串流分析作業新增至儲存體帳戶的存取控制清單。 如果您未授與作業存取權,作業將無法執行任何作業。 如需如何授與存取權的詳細資訊,請參閱〈使用 Azure RBAC 對其他資源指派受控識別存取權〉。
使用者指派的受控識別的其他步驟
如果您選取使用者指派的受控識別以將 ASA 連線至 Synapse,請重複這些步驟:
- 建立自主資料庫使用者。 以使用者指派的受控識別取代 ASA_Job_Name。 請參閱以下範例。
CREATE USER [User-Assigned Managed Identity] FROM EXTERNAL PROVIDER;
- 將權限授與使用者指派的受控識別。 以使用者指派的受控識別取代 ASA_Job_Name。
如需詳細資料,請參閱上述各節。
移除受控識別
只有在刪除作業時,才會刪除針對串流分析作業而建立的受控識別。 刪除受控識別時,無法不刪除作業。 如果您不想再使用受控識別,您可以變更輸出的驗證方法。 受控識別將繼續存在,直到作業遭到刪除為止,而且將在您決定再次使用受控識別驗證時使用。