共用方式為


如何設定 Azure Synapse 工作區的存取控制

本文教導您如何控制對 Microsoft Azure Synapse 工作區的存取。 我們將使用 Azure 角色、Azure Synapse 角色、SQL 權限和 Git權限的組合來實現此目的。

在本指南中,您將設定工作區,並設定基本存取控制系統。 您可以在許多類型的 Synapse 專案中使用此資訊。 您也會找到其他進階選項,進行更精細的控制,如果您需要這樣做的話。

您可以使組織中的角色和形象與安全性群組一致,來簡化 Synapse 存取控制。 這可讓您藉由新增和移除使用者,來管理對安全性群組的存取。

開始本逐步解說之前,請先閱讀 Azure Synapse 存取控制概觀,以讓您熟悉 Synapse Analytics 所使用的存取控制機制。

存取控制機制

注意

本指南中的方法是建立安全性群組。 將角色指派給這些安全性群組時,只需管理這些群組中的成員資格即可控制對工作區的存取。

若要保護 Synapse 工作區,您需要設定以下項目:

  • 安全性群組,用來將具有類似存取需求的使用者分組。
  • Azure 角色,用來控制誰可以建立和管理 SQL 集區、Apache Spark 集區和整合執行階段,以及存取 ADLS Gen2 儲存體。
  • Synapse 角色,用來控制對已發佈程式碼成品的存取,使用 Apache Spark 計算資源和整合執行階段。
  • SQL 權限,用來控制對 SQL 集區的管理和資料平面存取。
  • Git 權限,用來在您為工作區設定 Git 支援時,控制誰可以存取原始檔控制中的程式碼成品。

保護 Synapse 工作區的步驟

本文件會使用標準名稱來簡化指示。 將其取代為您選擇的名稱。

設定 標準名稱 描述
Synapse 工作區 workspace1 Azure Synapse 工作區將具有的名稱。
ADLSGEN2 帳戶 storage1 要與您工作區搭配使用的 ADLS 帳戶。
容器 container1 storage1 中工作區預設會使用的容器。
Microsoft Entra ID 租用戶 contoso Microsoft Entra ID 租用戶名稱。
服務主體 SERVICEPRINCIPAL Microsoft Entra ID 租用戶中的服務主體

步驟 1:設定安全性群組

提示

建議您使用細微的選項來控制工作區的存取權,並將個別資源的存取權授予開發人員,而不是授與整個工作區的存取權。 深入了解 Synapse RBAC。

為您的工作區建立下列安全性群組:

  • workspace1_SynapseAdministrators,適用於需要完整控制工作區的使用者。 將您自己新增到這個安全性群組 (至少一開始)。
  • workspace1_SynapseContributors,適用於需要開發、偵錯程式碼並將其發佈至服務的開發人員。
  • workspace1_SynapseComputeOperators,適用於需要管理並監視 Apache Spark 集區和整合執行階段的使用者。
  • workspace1_SynapseCredentialUsers,適用於需要使用工作區 MSI 來偵測和執行協調流程管線 (受控服務識別) 認證,以及取消管線執行的使用者。

您很快就會在工作區範圍中將 Synapse 角色指派給這些群組。

亦請建立這個安全性群組:

  • workspace1_SQLAdmins,這是在工作區中 SQL 集區內需要 SQL Active Directory 管理員授權的使用者群組。

要在您建立 SQL 集區時設定 SQL 權限的 workspace1_SQLAdmins 群組。

對於基本設定,這五個群組就足夠了。 稍後,您可以新增安全性群組來處理需要更特殊化存取的使用者,或限制只存取個別資源。

注意

提示

個別 Synapse 使用者可在 Azure 入口網站中使用 Microsoft Entra ID 來檢視其群組成員資格。 這可讓他們判斷已授與哪些角色。

步驟2:準備您的 ADLS Gen2 儲存體帳戶

Synapse 工作區會針對下列情況使用預設儲存體容器:

  • 儲存 Spark 資料表的支援資料檔案
  • Spark 作業的執行記錄
  • 管理您選擇要安裝的程式庫

識別有關儲存體的下列資訊:

  • 要用於工作區的 ADLS Gen2 帳戶。 本文件將其稱為 storage1storage1 被視為您工作區的「主要」儲存體帳戶。

  • storage1 內您 Synapse 工作區預設將使用的容器。 本文件將其稱為 container1

  • 選取 [存取控制 (IAM)]。

  • 選取 [新增 > 角色指派 ] 以開啟 [新增角色指派] 頁面。

  • 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 儲存體 Blob 資料參與者
    存取權指派對象 SERVICEPRINCIPAL
    成員 workspace1_SynapseAdministrators、workspace1_SynapseContributors 和 workspace1_SynapseComputeOperators

    Azure 入口網站中的 [新增角色指派] 頁面。

步驟 3:建立和設定您的 Synapse 工作區

在 Azure 入口網站中,建立 Synapse 工作區:

  • 選取您的訂用帳戶

  • 選取或建立您對其具有 Azure [擁有者] 角色的資源群組。

  • 將工作區命名為 workspace1

  • 為儲存體帳戶選擇 storage1

  • 為將用作「檔案系統」的容器選擇 container1

  • 在 Synapse Studio 中開啟 workspace1

  • 在 Synapse Studio 中,瀏覽至 [管理]>[存取控制]。 在 [工作區範圍] 中,將 Synapse 角色指派給安全性群組,如下所示:

    • 將 [Synapse 管理員] 角色指派給 workspace1_SynapseAdministrators
    • 將 [Synapse 參與者] 角色指派給 workspace1_SynapseContributors
    • 將 [Synapse 計算操作員] 角色指派給 workspace1_SynapseComputeOperators

步驟 4:將工作區 MSI 存取權授與預設儲存體容器

若要執行管線並執行系統工作,Azure Synapse 需要受控服務識別 (MSI) 有權存取預設 ADLS Gen2 帳戶中工作區的 container1。 如需詳細資訊,請參閱 Azure Synapse 工作區受控識別

  • 開啟 Azure 入口網站

  • 尋找儲存體帳戶 storage1,然後尋找 container1

  • 選取 [存取控制 (IAM)]。

  • 若要開啟 [新增角色指派] 頁面,選取 [新增]>[新增角色指派]

  • 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 儲存體 Blob 資料參與者
    存取權指派對象 MANAGEDIDENTITY
    成員 受控識別名稱

    注意

    受控識別名稱也就是工作區名稱。

    Azure 入口網站中的 [新增角色指派] 頁面。

步驟 5:將工作區的 Azure 參與者角色授與 Synapse 管理員

若要建立 SQL 集區、Apache Spark 集區和整合執行階段,使用者必須對工作區至少具有 Azure 參與者角色。 參與者角色也可讓使用者管理資源,包括暫停和調整。 若要使用 Azure 入口網站或 Synapse Studio 建立 SQL 集區、Apache Spark 集區和整合執行階段,您需要資源群組層級的參與者角色。

  • 開啟 Azure 入口網站

  • 尋找工作區 workspace1

  • 選取 [存取控制 (IAM)]。

  • 若要開啟 [新增角色指派] 頁面,選取 [新增]>[新增角色指派]

  • 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 參與者 (列在「特殊權限系統管理員角色」底下)
    指派存取權至 SERVICEPRINCIPAL
    成員 workspace1_SynapseAdministrators

    Azure 入口網站中的 [新增角色指派] 頁面。

步驟 6:指派 SQL Active Directory 管理員角色

「工作區建立者」會自動指派為工作區的「SQL Active Directory 管理員」。 只有單一使用者或群組才能被授與此角色。 在此步驟中,您會將工作區的 SQL Active Directory 管理員指派給 workspace1_SQLAdmins 安全性群組。 這可將高度特殊權限的管理員存取權授與此群組,以存取工作區中的所有 SQL 集區和資料庫。

  • 開啟 Azure 入口網站
  • 導覽到 workspace1
  • [設定] 下,選取 [Microsoft Entra ID]
  • 選取 [設定管理員] 並選擇 workspace1_SQLAdmins

注意

步驟 6 是選用的。 您可以選擇將較不具特殊權限的角色授與 workspace1_SQLAdmins 群組。 若要指派 db_owner 或其他 SQL 角色,您必須在每個 SQL 資料庫上執行指令碼。

步驟 7:授與 SQL 集區的存取權

Synapse 管理員預設也會在工作區中獲授與無伺服器 SQL 集區的 SQL db_owner 角色。

其他使用者對 SQL 集區的存取受到 SQL 權限控制。 指派 SQL 權限需要 SQL 指令碼在建立之後,於每個 SQL 資料庫上執行。 以下是需要您執行這些指令碼的範例:

  1. 將無伺服器 SQL 集區 (「內建」) 和其資料庫的存取權授與使用者。

  2. 將專用 SQL 集區資料庫的存取權授與使用者。 本文稍後會包含範例 SQL 指令碼。

  3. 若要授與專用 SQL 集區資料庫的存取權,這些指令碼可由工作區建立者或 workspace1_SynapseAdministrators 群組的任何成員執行。

  4. 若要授與無伺服器 SQL 集區 (「內建」) 的存取權,這些指令碼可由 workspace1_SQLAdmins 群組或 workspace1_SynapseAdministrators 群組的任何成員執行。

提示

您可以針對每個 SQL 集區採取下列步驟,以授與 所有 SQL 資料庫的存取權。 設定工作區範圍的權限一節是規則的例外狀況,而且其可讓您在工作區層級將 sysadmin 角色指派給使用者。

步驟 7.1:內建無伺服器 SQL 集區

您可以使用本節中的指令碼範例,讓使用者有權存取無伺服器 SQL 集區 (Built-in) 中的個別資料庫或所有資料庫。

注意

在指令碼範例中,將 alias 取代為要授與存取權的使用者或群組別名。 將 domain 取代為您正在使用的公司網域。

設定資料庫範圍權限

您可以使用此範例中所述的步驟,將單一無伺服器 SQL 資料庫的存取權授與使用者:

  1. 建立登入。 變更為 master 資料庫內容。

    --In the master database
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. 在您的資料庫中建立使用者。 將內容變更為您的資料庫。

    -- In your database
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. 將使用者新增為資料庫中指定角色的成員 (在此情況下,指的是 db_owner 角色)。

    ALTER ROLE db_owner ADD member alias; -- Type USER name from step 2
    

設定工作區範圍權限

您可以授與工作區中所有無伺服器 SQL 集區的完整存取權。 在 master 資料庫中執行此範例中的指令碼:

CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
ALTER SERVER ROLE sysadmin ADD MEMBER [alias@domain.com];

步驟 7.2:設定專用 SQL 集區

您可以授與單一專用 SQL 集區資料庫的存取權。 在 Azure Synapse SQL 指令碼編輯器中使用下列步驟:

  1. 執行下列命令,在資料庫中建立使用者。 在 [連線至] 下拉式清單中選取目標資料庫:

    --Create user in the database
    CREATE USER [<alias@domain.com>] FROM EXTERNAL PROVIDER;
    -- For Service Principals you would need just the display name and @domain.com is not required
    
  2. 對使用者授與可存取資料庫的角色:

    --Grant role to the user in the database
    EXEC sp_addrolemember 'db_owner', '<alias@domain.com>';
    

重要

當您不想授與 db_owner 權限時,db_datareaderdb_datawriter 資料庫角色可以提供讀取/寫入權限。 不過,需要 db_owner 權限,Spark 使用者才能直接從 Spark 或 SQL 集區讀取和寫入。

您可以在建立使用者之後執行查詢,以確認無伺服器 SQL 集區可以查詢儲存體帳戶。

步驟 8:將使用者新增至安全性群組

存取控制系統的初始設定現在已完成。

您現在可以在已設定的安全性群組中新增和移除使用者,來管理對這些安全性群組的存取。 您可以手動將使用者指派給 Azure Synapse 角色,但這會不一致地設定權限。 請改為只將使用者新增至安全性群組,或從中移除使用者。

步驟 9:網路安全性

最後一個步驟是保護您的工作區,您應該使用工作區防火牆來保護網路存取。

步驟 10:完成

您的工作區現在已完整設定並受到保護。

支援更進階的案例

本指南著重於設定基本存取控制系統。 您可以建立其他安全性群組,並在更特定的範圍將細微的角色指派給這些群組,來支援更進階的案例。 請考慮下列情況:

針對工作區啟用 Git 支援,以取得更進階的開發案例,包括 CI/CD。 處於 Git 模式時,Git 權限和 Synapse RBAC 將決定使用者是否可以認可其工作分支的變更。 發佈至服務只會從共同作業分支進行。 請考慮為需要在工作分支中開發和偵錯工具的開發人員建立安全性群組,但不需要將變更發佈到即時服務。

限制開發人員只能存取特定資源。 針對只需要存取特定資源的開發人員,建立其他更精細的安全性群組。 將範圍限定在特定 Spark 集區、整合執行階段或認證的適當 Azure Synapse 角色指派給這些群組。

限制操作員存取程式碼成品。 操作員若需要監視 Synapse 計算資源的作業狀態和檢視記錄,但不需要存取程式碼或將更新發佈至服務,就會針對這些操作員建立安全性群組。 將範圍限定在 Spark 集區和整合執行階段的計算操作員角色指派給這些群組。

停用本機驗證。 只要允許 Microsoft Entra 驗證,您就可以集中管理對 Azure Synapse Analytics 資源的存取,例如 SQL 集區。 工作區內所有資源的本機驗證可以在工作區建立期間或之後停用。 如需僅限 Microsoft Entra 的驗證詳細資訊,請參閱 在 Azure Synapse Analytics 中停用本機驗證