Azure Data Share 的角色和需求

本文說明使用 Azure Data Share 服務共用和接收資料所需的角色和許可權。

角色和需求

透過 Azure Data Share 服務,您可以共用資料,而不需在資料提供者與取用者之間交換認證。 針對快照式共用,Azure Data Share 服務會使用受控識別(先前稱為 MSIS)向 Azure 資料存放區進行驗證。

若要在 Azure Data Share 中建立共用,使用者將需要下列許可權:

儲存體和 Data Lake 共用

資料存放區類型 動作 來源資料存放區的角色 目標資料存放區的角色 注意
Azure Blob 儲存體 分享資料 儲存體帳戶參與者** **相反地,您可以使用必要的儲存體動作來 建立自訂角色
接收資料 儲存體帳戶參與者** **相反地,您可以使用必要的儲存體動作來 建立自訂角色
自動指派 MI 許可權以共用 具有 Microsoft.Authorization/role assignments/write 的角色* 選擇性。 相反地,您可以 手動指派 MI 許可權。
自動指派 MI 許可權以接收 具有 Microsoft.Authorization/role assignments/write 的角色* 選擇性。 相反地,您可以 手動指派 MI 許可權。
Azure Data Lake Gen 1 分享資料 您想要共用之檔案的存取和寫入權限。
接收資料 不支援
自動指派 MI 許可權以共用 具有 Microsoft.Authorization/role assignments/write 的角色* 選擇性。 相反地,您可以 手動指派 MI 許可權。
自動指派 MI 許可權以接收 不支援。
Azure Data Lake Gen 2 分享資料 儲存體帳戶參與者** **相反地,您可以使用必要的儲存體動作來 建立自訂角色
接收資料 儲存體帳戶參與者** **相反地,您可以使用必要的儲存體動作來 建立自訂角色
自動指派 MI 許可權以共用 具有 Microsoft.Authorization/role assignments/write 的角色* 選擇性。 相反地,您可以 手動指派 MI 許可權。
自動指派 MI 許可權以接收 具有 Microsoft.Authorization/role assignments/write 的角色* 選擇性。 相反地,您可以 手動指派 MI 許可權。

* 此許可權存在於擁有者 角色中

如需從 Azure 儲存體共用和從 Azure 儲存體共用的詳細資訊,請參閱 從 Azure Blob 儲存體 和 Azure Data Lake 儲存體共用和接收資料一文。

SQL 資料庫共用

若要從 SQL 共用資料,您可以使用下列其中一項:

若要將資料接收至 SQL,您必須 指派許可權以接收資料

要共用的 Microsoft Entra 驗證

這些必要條件涵蓋您需要的驗證,讓 Azure Data Share 可以與您的 Azure SQL 資料庫連線:

  • 您需要許可權才能寫入 SQL Server 上的資料庫: Microsoft.Sql/servers/databases/write 。 此權限存在於參與者角色中。
  • SQL Server Microsoft Entra 管理員 許可權。
  • SQL Server 防火牆存取:
    1. Azure 入口網站 中,流覽至您的 SQL Server。 從左側導覽中選取 [防火牆和虛擬網路 ]。
    2. 針對 [允許 Azure 服務和資源存取此伺服器 ] 選取 [ ]。
    3. 選取 [+新增用戶端 IP ]。 用戶端 IP 位址可能會變更,因此您可能需要下次從入口網站共用資料時再次新增用戶端 IP。
    4. 選取 [儲存]。

要共用的 SQL 驗證

您可以遵循 逐步示範影片 來設定驗證,或完成下列每個必要條件:

  • 寫入 SQL Server 上資料庫的許可權: Microsoft.Sql/servers/databases/write 。 此權限存在於參與者角色中。

  • Azure Data Share 資源的受控識別存取資料庫的許可權:

    1. Azure 入口網站 中,流覽至 SQL Server,並將自己設定為 Microsoft Entra 管理員

    2. 使用 查詢編輯器 或 SQL Server Management Studio 搭配 Microsoft Entra 驗證,連線至 Azure SQL 資料庫 /資料倉儲。

    3. 執行下列腳本,將 Data Share 資源受控識別新增為db_datareader。 連線使用 Active Directory 而非 SQL Server 驗證。

      create user "<share_acct_name>" from external provider;     
      exec sp_addrolemember db_datareader, "<share_acct_name>"; 
      

      注意

      < share_acc_name > 是您 Data Share 資源的名稱。

  • 具有 「db_datareader」 存取權的 Azure SQL 資料庫 使用者,可流覽並選取您想要共用的資料表或檢視表。

  • SQL Server 防火牆存取:

    1. 在Azure 入口網站 ,流覽至 [SQL Server]。 從左側導覽中選取 [防火牆和虛擬網路 ]。
    2. 針對 [允許 Azure 服務和資源存取此伺服器 ] 選取 [ ]。
    3. 選取 [+新增用戶端 IP ]。 用戶端 IP 位址可能會變更,因此您可能需要下次從入口網站共用資料時再次新增用戶端 IP。
    4. 選取 [儲存]。

在 SQL 中接收的驗證

對於您是 SQL Server Microsoft Entra 管理員 的 SQL Server,請先完成這些必要條件,再接受資料共用:

  • Azure SQL 資料庫 Azure Synapse Analytics(先前稱為 Azure SQL DW)。
  • 寫入 SQL Server 上資料庫的許可權: Microsoft.Sql/servers/databases/write 。 此權限存在於參與者角色中。
  • SQL Server 防火牆存取:
    1. Azure 入口網站 中,流覽至您的 SQL Server。 從左側導覽中選取 [防火牆和虛擬網路 ]。
    2. 針對 [允許 Azure 服務和資源存取此伺服器 ] 選取 [ ]。
    3. 選取 [+新增用戶端 IP ]。 用戶端 IP 位址可能會變更,因此您可能需要下次從入口網站共用資料時再次新增用戶端 IP。
    4. 選取 [儲存]。

對於您 不是 Microsoft Entra 系統管理員 SQL Server,請先完成這些必要條件,再接受資料共用:

您可以遵循 逐步示範影片 ,或下列步驟來設定必要條件。

  • Azure SQL 資料庫 Azure Synapse Analytics(先前稱為 Azure SQL DW)。

  • 寫入 SQL Server 上資料庫的許可權: Microsoft.Sql/servers/databases/write 。 此權限存在於參與者角色中。

  • Data Share 資源的受控識別許可權,可存取 Azure SQL 資料庫或 Azure Synapse Analytics:

    1. Azure 入口網站 中,流覽至 SQL Server,並將自己設定為 Microsoft Entra 管理員

    2. 使用 查詢編輯器 或 SQL Server Management Studio 搭配 Microsoft Entra 驗證,連線至 Azure SQL 資料庫 /資料倉儲。

    3. 執行下列腳本,將 Data Share 受控識別新增為 「db_datareader、db_datawriter、db_ddladmin」。

      create user "<share_acc_name>" from external provider; 
      exec sp_addrolemember db_datareader, "<share_acc_name>"; 
      exec sp_addrolemember db_datawriter, "<share_acc_name>"; 
      exec sp_addrolemember db_ddladmin, "<share_acc_name>";
      

      注意

      < share_acc_name > 是您 Data Share 資源的名稱。

  • SQL Server 防火牆存取:

    1. Azure 入口網站 中,流覽至 SQL Server,然後選取 [防火牆和虛擬網路 ]。
    2. 針對 [允許 Azure 服務和資源存取此伺服器 ] 選取 [ ]。
    3. 選取 [+新增用戶端 IP ]。 用戶端 IP 位址可能會變更,因此您可能需要下次從入口網站共用資料時再次新增用戶端 IP。
    4. 選取 [儲存]。

如需從 Azure SQL 共用和從中共用的詳細資訊,請參閱 從 Azure SQL 資料庫共用和接收資料一文。

Azure Synapse Analytics 共用

共用

  • 寫入 Synapse 工作區中 SQL 集區的許可權: Microsoft.Synapse/workspaces/sqlPools/write 。 此權限存在於參與者角色中。

  • Data Share 資源的受控識別存取 Synapse 工作區 SQL 集區的許可權:

    1. Azure 入口網站 中,流覽至您的 Synapse 工作區。 從左側導覽中選取 [SQL Active Directory 管理員 ],並將您自己設定為 Microsoft Entra 管理員

    2. 開啟 Synapse Studio,從左側導覽中選取 [管理 ]。 選取 [安全性] 底下的 [存取控制 ]。 將 SQL 系統管理員 工作區管理員 角色指派給自己

    3. 從 Synapse Studio 的左側導覽中選取 [開發 ]。 在 SQL 集區中執行下列腳本,以將 Data Share 資源受控識別新增為db_datareader。

      create user "<share_acct_name>" from external provider;     
      exec sp_addrolemember db_datareader, "<share_acct_name>"; 
      

      注意

      < share_acc_name > 是您 Data Share 資源的名稱。

  • Synapse 工作區防火牆存取:

    1. Azure 入口網站 中,流覽至 Synapse 工作區。 從左側導覽中選取 [防火牆 ]。
    2. 針對 [ 允許 Azure 服務和資源存取此工作區 ] 選取 [開啟 ]。
    3. 選取 [+新增用戶端 IP ]。 用戶端 IP 位址可能會變更,因此您可能需要下次從入口網站共用資料時再次新增用戶端 IP。
    4. 選取 [儲存]。

Receive

  • Azure Synapse Analytics (工作區) 專用 SQL 集區。 目前不支援將資料接收到無伺服器 SQL 集區。

  • 寫入 Synapse 工作區中 SQL 集區的許可權: Microsoft.Synapse/workspaces/sqlPools/write 。 此權限存在於參與者角色中。

  • Data Share 資源的受控識別許可權,以存取 Synapse 工作區 SQL 集區:

    1. Azure 入口網站 中,流覽至 Synapse 工作區。

    2. 從左側導覽中選取 [SQL Active Directory 管理員],並將您自己設定為 Microsoft Entra 管理員

    3. 開啟 Synapse Studio,從左側導覽中選取 [管理 ]。 選取 [安全性] 底下的 [存取控制 ]。 將 SQL 系統管理員 工作區管理員 角色指派給自己

    4. 在 Synapse Studio 中,從左側導覽中選取 [開發 ]。 在 SQL 集區中執行下列腳本,將 Data Share 資源受控識別新增為 「db_datareader、db_datawriter、db_ddladmin」。

      create user "<share_acc_name>" from external provider; 
      exec sp_addrolemember db_datareader, "<share_acc_name>"; 
      exec sp_addrolemember db_datawriter, "<share_acc_name>"; 
      exec sp_addrolemember db_ddladmin, "<share_acc_name>";
      

      注意

      < share_acc_name > 是您 Data Share 資源的名稱。

  • Synapse 工作區防火牆存取:

    1. Azure 入口網站 中,流覽至 Synapse 工作區。 從左側導覽中選取 [防火牆 ]。
    2. 針對 [ 允許 Azure 服務和資源存取此工作區 ] 選取 [開啟 ]。
    3. 選取 [+新增用戶端 IP ]。 用戶端 IP 位址可能會變更。 下次您從 Azure 入口網站 共用 SQL 資料時,可能需要重複此程式。
    4. 選取 [儲存]。

如需在 Azure Synapse 分析中共用和從中共用的詳細資訊,請參閱 從 Azure Synapse Analytics 共用和接收資料的文章。

手動指派 MI 許可權

如果使用者在來源或目標資料存放區上具有 Microsoft.Authorization/role assignments/write 許可權,它會自動將 Azure Data Share 的受控識別指派給資料存放區驗證所需的許可權。 您也可以手動指派受控識別許可權。

如果您選擇手動指派許可權,請根據來源和動作,將這些許可權指派給 Azure Data Share 資源的受控識別:

資料存放區類型 資料來源資料來源存放區 資料取用者目標資料存放區
Azure Blob 儲存體 儲存體 Blob 資料讀者 儲存體 Blob 資料參與者
Azure Data Lake Gen1 負責人 不支援
Azure Data Lake Gen2 儲存體 Blob 資料讀者 儲存體 Blob 資料參與者
Azure SQL Database db_datareader db_datareader、db_datawriter、db_ddladmin
Azure Synapse Analytics db_datareader db_datareader、db_datawriter、db_ddladmin

資料提供者範例

當您從儲存體帳戶共用資料時,會將資料共用資源的受控識別授與 儲存體 Blob 資料讀取者 角色。

當使用者透過 Azure 入口網站 新增資料集,且使用者是 Azure 資料存放區的擁有者,或是已指派 Microsoft.Authorization/role assignments/write 許可權的自訂角色 成員時,Azure Data Share 服務會自動完成此作業。

或者,使用者可以讓 Azure 資料存放區的擁有者手動將資料共用資源的受控識別新增至 Azure 資料存放區。 此動作只需要針對每個資料共用資源執行一次。

若要手動為資料共用資源的受控識別建立角色指派,請使用下列步驟:

  1. 流覽至 Azure 資料存放區。

  2. 選取 [存取控制 (IAM)]。

  3. 選取 [新增 > 角色指派 ]。

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  4. 在 [ 角色] 索引標籤上,選取上一節中角色指派資料表中列出的其中一個角色。

  5. 在 [ 成員] 索引標籤上,選取 [受控識別 ],然後選取 [ 選取成員 ]。

  6. 選取 Azure 訂閱。

  7. 選取 [系統指派的受控識別 ],搜尋您的 Azure Data Share 資源,然後加以選取。

  8. 在 [檢閱 + 指派] 索引標籤上,選取 [檢閱 + 指派] 以指派角色。

若要深入瞭解角色指派,請參閱 使用Azure 入口網站 指派 Azure 角色。 如果您使用 REST API 共用資料,您可以使用 API 來參考 使用 REST API 指派 Azure 角色來建立角色指派。

針對以 SQL 快照集為基礎的共用,SQL 使用者必須在與 Azure Data Share 資源名稱相同的SQL 資料庫中從外部提供者建立,同時使用 Microsoft Entra 驗證連線到 SQL 資料庫。 此使用者必須授與 db_datareader 許可權。 如需 SQL 型共用的其他必要條件,請參閱從 Azure SQL 資料庫 共用或 Azure Synapse Analytics 教學課程中的 範例腳本。

資料取用者範例

若要將資料接收至儲存體帳戶,取用者資料共用資源的受控識別必須獲得目標儲存體帳戶的存取權。 資料共用資源的受控識別必須授與 儲存體 Blob 資料參與者 角色。 如果使用者透過 Azure 入口網站 指定目標儲存體帳戶,且使用者具有適當的許可權,Azure Data Share 服務就會自動完成此作業。 例如,使用者是儲存體帳戶的擁有者,或是已指派 Microsoft.Authorization/role assignments/write 許可權的自訂角色 成員。

或者,使用者可以擁有儲存體帳戶的擁有者,手動將資料共用資源的受控識別新增至儲存體帳戶。 此動作只需要針對每個資料共用資源執行一次。 若要手動為資料共用資源的受控識別建立角色指派,請遵循下列步驟。

  1. 流覽至 Azure 資料存放區。

  2. 選取 [存取控制 (IAM)]。

  3. 選取 [新增 > 角色指派 ]。

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  4. 在 [ 角色] 索引標籤上,選取上一節中角色指派資料表中列出的其中一個角色。 例如,針對儲存體帳戶,選取 [儲存體 Blob 資料讀取器]。

  5. 在 [ 成員] 索引標籤上,選取 [受控識別 ],然後選取 [ 選取成員 ]。

  6. 選取 Azure 訂閱。

  7. 選取 [系統指派的受控識別 ],搜尋您的 Azure Data Share 資源,然後加以選取。

  8. 在 [檢閱 + 指派] 索引標籤上,選取 [檢閱 + 指派] 以指派角色。

若要深入瞭解角色指派,請參閱 使用Azure 入口網站 指派 Azure 角色。 如果您使用 REST API 接收資料,您可以使用 API 來參考 使用 REST API 指派 Azure 角色來建立角色指派。

針對 SQL 型目標,SQL 使用者必須在與 Azure Data Share 資源名稱相同的SQL 資料庫中,從外部提供者建立 SQL 使用者,同時使用 Microsoft Entra 驗證連線到 SQL 資料庫。 此使用者必須授與 db_datareader、db_datawriter db_ddladmin 許可權。 如需 SQL 型共用的其他必要條件,請參閱從 Azure SQL 資料庫 共用或 Azure Synapse Analytics 教學課程中的 範例腳本。

資源提供者註冊

在下列案例中,您可能需要手動向 Azure 訂用帳戶註冊 Microsoft.DataShare 資源提供者:

  • 第一次在 Azure 租使用者中檢視 Azure Data Share 邀請
  • 在 Azure Data Share 資源的不同 Azure 訂用帳戶中共用來自 Azure 資料存放區的資料
  • 從 Azure Data Share 資源的不同 Azure 訂用帳戶中,將資料接收至 Azure 資料存放區

請遵循下列步驟,將 Microsoft.DataShare 資源提供者註冊到您的 Azure 訂用帳戶。 您需要 Azure 訂用帳戶的參與者 存取權,才能註冊資源提供者。

  1. 在 Azure 入口網站中,瀏覽到 [訂用帳戶]。
  2. 選取您用於 Azure Data Share 的訂用帳戶。
  3. 選取 [ 資源提供者 ]。
  4. 搜尋 Microsoft.DataShare。
  5. 選取註冊

若要深入瞭解資源提供者,請參閱 Azure 資源提供者和類型

Data Share 的自訂角色

本節說明自訂角色內共用和接收資料所需的自訂角色和許可權,特別是儲存體帳戶。 此外,還有與自訂角色或 Azure Data Share 角色無關的必要條件。

除了自訂角色之外,Data Share 的必要條件

  • 針對儲存體和 Data Lake 快照集型共用,若要在 Azure Data Share 中新增資料集,提供者資料共用資源的受控識別必須授與來源 Azure 資料存放區的存取權。 例如,如果使用儲存體帳戶,則會將資料共用資源的受控識別授與儲存體 Blob 資料讀取者角色。
  • 若要將資料接收至儲存體帳戶,取用者資料共用資源的受控識別必須獲得目標儲存體帳戶的存取權。 資料共用資源的受控識別必須授與儲存體 Blob 資料參與者角色。
  • 在某些情況下,您可能也需要手動向 Azure 訂用帳戶註冊 Microsoft.DataShare 資源提供者。 如需特定詳細資料,請參閱本文中的 資源提供者註冊 一節。

建立自訂角色和必要許可權

您可以在訂用帳戶或資源群組中建立自訂角色,以便共用和接收資料。 然後,使用者和群組可以指派自訂角色。

  • 若要建立自訂角色,儲存體、Data Share、Resources 群組和授權都需要執行動作。 請參閱 Data Share 的 Azure 資源提供者作業檔 ,以瞭解不同層級的許可權,並選擇與您自訂角色相關的許可權。
  • 或者,您可以使用Azure 入口網站流覽至 IAM、自訂角色、新增許可權、搜尋、搜尋 Microsoft.DataShare 許可權,以查看可用的動作清單。
  • 若要深入瞭解自訂角色指派,請參閱 Azure 自訂角色 。 擁有自訂角色之後,請測試它,以確認其如預期般運作。

下列範例顯示自訂角色共用和接收資料的 JSON 檢視中如何列出必要的動作。

{
"Actions": [ 

"Microsoft.Storage/storageAccounts/read",  

"Microsoft.Storage/storageAccounts/write",  

"Microsoft.Storage/storageAccounts/blobServices/containers/read", 

"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action",

"Microsoft.Storage/storageAccounts/listkeys/action",

"Microsoft.DataShare/accounts/read", 

"Microsoft.DataShare/accounts/providers/Microsoft.Insights/metricDefinitions/read", 

"Microsoft.DataShare/accounts/shares/listSynchronizations/action", 

"Microsoft.DataShare/accounts/shares/synchronizationSettings/read", 

"Microsoft.DataShare/accounts/shares/synchronizationSettings/write", 

"Microsoft.DataShare/accounts/shares/synchronizationSettings/delete", 

"Microsoft.DataShare/accounts/shareSubscriptions/*", 

"Microsoft.DataShare/listInvitations/read", 

"Microsoft.DataShare/locations/rejectInvitation/action", 

"Microsoft.DataShare/locations/consumerInvitations/read", 

"Microsoft.DataShare/locations/operationResults/read", 

"Microsoft.Resources/subscriptions/resourceGroups/read", 

"Microsoft.Resources/subscriptions/resourcegroups/resources/read", 

"Microsoft.Authorization/roleAssignments/read", 
 ] 
}

下一步