共用方式為


Azure Data Share 的角色和需求

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

角色和需求

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

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

儲存體和資料湖共用

資料存放區類型 動作 來源資料存放區上的角色 目標資料存放區上的角色 注意
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 Storage 共用和接收資料的文章。

SQL 資料庫共用

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

若要將資料接收到 SQL 中,您必須指派可接收資料的權限

要共用的 Microsoft Entra 驗證

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

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

要共用的 SQL 驗證

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

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

  • Azure Data Share 資源的受控識別用來存取資料庫的權限:

    1. Azure 入口網站中瀏覽至 SQL 伺服器,並將您自己設定為 Microsoft Entra 管理員

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

    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 Database 使用者,可瀏覽並選取您想共用的資料表或檢視。

  • SQL Server 防火牆存取:

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

在 SQL 中接收的驗證

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

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

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

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

  • Azure SQL DatabaseAzure Synapse Analytics (先前稱為 Azure SQL DW)

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

  • Data Share 資源的受控識別用來存取 Azure SQL Database 或 Azure Synapse Analytics 的權限:

    1. Azure 入口網站中瀏覽至 SQL 伺服器,並將您自己設定為 Microsoft Entra 管理員

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

    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 SQL Database 共用和接收資料的文章。

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 Analytics 和從 Azure Synapse Analytics 共用的詳細資訊,請參閱從 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. 選取 [新增] > [新增角色指派]。

    顯示 [存取控制] 頁面的螢幕快照,並開啟 [新增角色指派] 功能表。

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

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

  6. 選取 Azure 訂閱。

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

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

如需深入了解角色指派,請參閱使用 Azure 入口網站指派 Azure 角色。 如果您是使用 REST API 共用資料,可以參考使用 REST API 指派 Azure 角色,依照說明使用 API 建立角色指派。

針對 SQL 快照集型共用,您需從 SQL Database 的外部提供者 (名稱與 Azure Data Share 資源相同) 建立 SQL 使用者,同時使用 Microsoft Entra 驗證連線到 SQL 資料庫。 必須將 db_datareader 權限授與此使用者。 如需範例指令碼及 SQL 型共用的其他必要條件,請參閱從 Azure SQL Database 或 Azure Synapse Analytics 共用教學課程。

資料取用者範例

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

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

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

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

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

    顯示 [存取控制] 頁面的螢幕快照,並開啟 [新增角色指派] 功能表。

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

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

  6. 選取 Azure 訂閱。

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

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

如需深入了解角色指派,請參閱使用 Azure 入口網站指派 Azure 角色。 如果您是使用 REST API 接收資料,可以參考使用 REST API 指派 Azure 角色,依照說明使用 API 建立角色指派。

針對 SQL 型目標,您需從 SQL Database 的外部提供者 (名稱與 Azure Data Share 資源相同) 建立 SQL 使用者,同時使用 Microsoft Entra 驗證連線到 SQL 資料庫。 需將 db_datareader、db_datawriter、db_ddladmin 權限授與此使用者。 如需範例指令碼及 SQL 型共用的其他必要條件,請參閱從 Azure SQL Database 或 Azure Synapse Analytics 共用教學課程。

資源提供者註冊

在下列情況下,您可能需手動將 Microsoft.DataShare 資源提供者註冊到您的 Azure 訂用帳戶:

  • 第一次在 Azure 租使用者中檢視 Azure Data Share 邀請
  • 從 Azure 資料存放區 (其 Azure 訂用帳戶與 Azure Data Share 資源不同) 共用資料
  • 將資料接收到 Azure 資料存放區 (其 Azure 訂用帳戶與 Azure Data Share 資源不同)

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

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

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

Data Share 的自訂角色

本節說明自訂角色中共用和接收資料所需的自訂角色和權限 (儲存體帳戶專用)。 另外也說明與自訂角色或 Azure Data Share 角色無關的必要條件。

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

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

建立自訂角色和必要權限

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

  • 若要建立自訂角色,需對儲存體、Data Share、資源群組和授權執行必要動作。 請參閱 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", 
 ] 
}

下一步