使用受控識別,從串流分析作業存取 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 串流分析作業的受控識別。

  1. Azure 入口網站中,開啟您的 Azure 串流分析作業。

  2. 從左側導覽功能表中,選取位於 [設定] 之下的 [受控識別]。 然後,核取 [使用系統指派的受控識別] 旁的方塊,然後選取 [儲存]

    Select system-assigned managed identity

    Microsoft Entra ID 中已建立串流分析作業的識別服務主體。 Azure 會管理新建立的身分識別生命週期。 當串流分析作業刪除時,Azure 會自動刪除已與其建立關聯的身分識別 (亦即服務主體)。

  3. 您也可以切換至使用者指派的受控識別

  4. 當您儲存組態時,服務主體的物件識別碼 (OID) 會列為主體識別碼,如下所示:

    Object ID shown as Principal ID

    服務主體與串流分析作業的名稱相同。 例如,如果作業的名稱是 MyASAJob,則服務主體的名稱也會是 MyASAJob

選取 Active Directory 管理員

建立受控識別之後,請選取 Active Directory 管理員。

  1. 瀏覽至 Azure SQL Database 或 Azure Synapse Analytics SQL 集區資源,然後分別選取資源所在的 SQL Server或 Synapse 工作區。 您可以在 [伺服器名稱] 或 [工作區名稱] 旁的資源概觀頁面中找到這些連結。

  2. 針對 SQL Server 和 Synapse 工作區,分別選取 [設定] 下 [Active Directory 管理員] 或 [SQL Active Directory 管理員]。 接著,選取 [設定管理員]

    Active Directory admin page

  3. 在 [Active Directory 管理員] 頁面上,搜尋要成為 SQL Server 管理員的使用者或群組,然後按一下 [選取]。 此就是在下一節中能夠建立自主資料庫使用者的使用者。

    Add Active Directory admin

    [Active Directory 系統管理員] 頁面會顯示您 Active Directory 的所有成員和群組。 無法選取灰色的使用者或群組,因為 Microsoft Entra 管理員不支援這些使用者或群組。 請參閱使用 Microsoft Entra 驗證向 SQL Database 或 Azure Synapse 進行驗證Microsoft Entra 功能和限制一節中支援的系統管理員清單。

  4. 在 [Active Directory 管理員] 頁面上選取 [儲存]。 變更管理員的程序需要幾分鐘的時間。

建立自主資料庫使用者

接下來,您會在 Azure SQL 或 Azure Synapse Analytics 資料庫中建立對應至 Microsoft Entra 身分識別的自主資料庫使用者。 自主資料庫使用者沒有主要資料庫的登入,但是會對應至目錄中與資料庫相關聯的身分識別。 Microsoft Entra 身分識別可以是個別的使用者帳戶或群組。 在此情況下,您想要為串流分析作業建立自主資料庫使用者。

如需詳細資訊,請檢閱下列文章以了解 Microsoft Entra 整合的背景:使用 SQL Database 的通用驗證和 Azure Synapse Analytics (MFA 的 SSMS 支援)

  1. 使用 SQL Server Management Studio 連線至 Azure SQL 或 Azure Synapse 資料庫。 [使用者名稱] 是具有 [改變任何使用者] 權限的 Microsoft Entra 使用者。 您在 SQL Server 上設定的管理員即為範例。 使用 Microsoft Entra ID – Universal 搭配 MFA 驗證。

    Connect to SQL Server

    伺服器名稱 <SQL Server name>.database.windows.net 在不同的區域中可能不同。 例如,中國地區應該使用 <SQL Server name>.database.chinacloudapi.cn

    您可以移至 [選項] > [連線屬性] > [連線到資料庫],指定特定 Azure SQL 或 Azure Synapse 資料庫。

    SQL Server connection properties

  2. 當您第一次連線時,可能會遇到下列視窗:

    New firewall rule window

    1. 若是如此,移至 Azure 入口網站上 SQL Server/Synapse 工作區資源。 在 [安全性] 區段下,開啟 [防火牆和虛擬網路/防火牆] 頁面。
    2. 使用任何規則名稱新增規則。
    3. 使用 [新增防火牆規則] 視窗中 [開始 IP] 的 [起始] IP 位址。
    4. 使用 [新增防火牆規則] 視窗中 [結束 IP] 的 [終止] IP 位址。
    5. 選取 [儲存],然後再次嘗試從 SQL Server Management Studio 連線。
  3. 連線之後,請建立自主資料庫使用者。 下列 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'
    
  4. 為了讓 Microsoft 的 Microsoft Entra ID 確認串流分析作業是否可存取 SQL Database,我們必須給予 Microsoft Entra 與資料庫通訊的權限。 若要這麼做,請再次移至 Azure 入口網站中的 [防火牆和虛擬網路"/”防火牆] 頁面,並啟用 [允許 Azure 服務和資源存取這部伺服器/工作區]。

    Firewall and virtual network

授與串流分析作業權限

當您在入口網站中建立自主資料庫使用者並取得 Azure 服務的存取權 (如上一節所述) 之後,您的串流分析作業會從受控識別獲得權限,可透過受控識別連線到 Azure SQL Database 資源。 建議您將 SELECTINSERT 權限授與串流分析作業,因為稍後在串流分析工作流程中需要用到。 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 輸出新增至串流分析作業時,必須填寫的其中一個必要屬性。 此外,請確定作業有 SELECTINSERT 權限,才能測試連線及執行串流分析查詢。 如果您尚未這麼做,請參閱授與串流分析作業權限一節。

  1. 回到您的串流分析作業,然後瀏覽至 [作業拓撲] 下的 [輸出] 頁面。

  2. 選取 [新增] > [SQL Database]。 在 SQL Database 輸出接收的輸出屬性視窗中,選取驗證模式下拉式清單中的 [受控識別]

  3. 填寫其餘屬性。 若要深入了解如何建立 SQL Database 輸出,請參閱使用串流分析建立 SQL Database 輸出。 完成之後,選取儲存

  4. 按一下 [儲存] 之後,資源的連接測試應該會自動觸發。 成功完成之後,您已成功設定串流分析作業,以使用受控識別驗證模式連線到 Azure SQL Database 或 Synapse SQL Database。

SQL 參考資料的其他步驟

使用 SQL 參考資料時,串流分析會要求您設定作業的儲存體帳戶。 此儲存體帳戶將用於儲存您串流分析作業的相關內容,例如 SQL 參考資料快照集。

請遵循下列步驟來設定相關聯的儲存體帳戶:

  1. 在 [串流分析作業] 頁面上,選取左側功能表中 [設定] 底下的 [儲存體帳戶設定]

  2. 在 [儲存體帳戶設定] 頁面上,選取 [新增儲存體帳戶]

  3. 請遵循指示來設定儲存體帳戶設定。

    Screenshot of the Storage account settings page of a Stream Analytics job.

重要

  • 若要使用連接字串進行驗證,您必須停用儲存體帳戶防火牆設定。
  • 若要使用受控識別進行驗證,您必須針對儲存體 Blob 資料參與者角色和儲存體資料表資料參與者角色,將串流分析作業新增至儲存體帳戶的存取控制清單。 如果您未授與作業存取權,作業將無法執行任何作業。 如需如何授與存取權的詳細資訊,請參閱〈使用 Azure RBAC 對其他資源指派受控識別存取權〉。

使用者指派的受控識別的其他步驟

如果您選取使用者指派的受控識別以將 ASA 連線至 Synapse,請重複這些步驟:

  1. 建立自主資料庫使用者。 以使用者指派的受控識別取代 ASA_Job_Name。 請參閱以下範例。
    CREATE USER [User-Assigned Managed Identit] FROM EXTERNAL PROVIDER;
    
  2. 將權限授與使用者指派的受控識別。 以使用者指派的受控識別取代 ASA_Job_Name。

如需詳細資料,請參閱上述各節。

移除受控識別

只有在刪除作業時,才會刪除針對串流分析作業而建立的受控識別。 刪除受控識別時,無法不刪除作業。 如果您不想再使用受控識別,您可以變更輸出的驗證方法。 受控識別將繼續存在,直到作業遭到刪除為止,而且將在您決定再次使用受控識別驗證時使用。

下一步