Azure Data Share のロールと要件

この記事では、Azure Data Share サービスを使用してデータを共有および受信するために必要なロールとアクセス許可について説明します。

ロールと要件

Azure Data Share サービスを使用すると、データ プロバイダーとコンシューマーの間で資格情報を交換することなくデータを共有できます。 スナップショット ベースの共有を行う場合、Azure Data Share サービスでは、Azure データ ストアに対する認証を行うためにマネージド ID (旧称 MSI) が使用されます。

Azure Data Share で共有を作成するユーザーは、次のアクセス許可を持っている必要があります。

  • Data Share アカウントのアクセス許可: 共同作成者
  • ストレージ リソース グループ: 閲覧者 (ストレージ アカウントまたはデータベースが含まれるリソース グループに対する読み取りアクセス許可。ポータルでそれらを参照するアクセス許可です。)
  • ソースに応じたソースのアクセス許可:

ストレージとデータ レイクの共有

データ ストアの種類 アクション ソース データ ストアに対する役割 ターゲット データ ストアに対する役割 Note
Azure Blob Storage データの共有 ストレージ アカウント共同作成者** **代わりに、必要なストレージ アクションを備えたカスタム役割を作成することもできます
データの受信 ストレージ アカウント共同作成者** **代わりに、必要なストレージ アクションを備えたカスタム役割を作成することもできます
共有するための 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 Storage との間での共有について詳しくは、Azure Blob Storage と 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 portal で、SQL サーバーにナビゲートします。 左側のナビゲーションから [ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要が生じることがあります。
    4. [保存] を選択します。

共有するための SQL 認証

ステップバイステップのデモビデオ に沿って認証を設定するか、それぞれの前提条件を満たすことができます。

  • SQL サーバー Microsoft.Sql/servers/databases/write 上のデータベースへの書き込みを許可します。 このアクセス許可は、共同作成者ロール内に存在します。

  • Azure Data Share リソースのマネージド ID がデータベースにアクセスするためのアクセス許可:

    1. Azure portalで SQL サーバーに移動し、自分を Microsoft Entra 管理者として設定します。

    2. クエリ エディター、または Microsoft Entra 認証を使用する SQL Server Management Studio を使用して Azure SQL Database/Data Warehouse に接続します。

    3. 次のスクリプトを実行し、Data Share リソースのマネージド ID を db_datareader として追加します。 SQL Server 認証ではなく Active Directory を使用して接続します。

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

      Note

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • 共有するテーブルやビューに移動して選択するための ’db_datareader’ アクセス権を持つ Azure SQL Database ユーザー。

  • SQL Server ファイアウォール アクセス:

    1. Azure portal で SQL サーバーに移動します。 左側のナビゲーションから [ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要が生じることがあります。
    4. [保存] を選択します。

SQL で受信するための認証

SQL サーバーの Microsoft Entra 管理者 である SQL サーバーの場合は、データ共有を受け入れる前に次の前提条件を満たしてください。

  • Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW)
  • SQL サーバー Microsoft.Sql/servers/databases/write 上のデータベースへの書き込みを許可します。 このアクセス許可は、共同作成者ロール内に存在します。
  • SQL Server ファイアウォール アクセス:
    1. Azure portal で、SQL サーバーにナビゲートします。 左側のナビゲーションから [ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要が生じることがあります。
    4. [保存] を選択します。

Microsoft Entra 管理者ではない SQL サーバーの場合、データ共有を受け入れる前に以下の前提条件を満たしてください。

前提条件の設定は、ステップバイステップのデモ動画、または以下の手順で行うことができます。

  • Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW)

  • SQL サーバー Microsoft.Sql/servers/databases/write 上のデータベースへの書き込みを許可します。 このアクセス許可は、共同作成者ロール内に存在します。

  • Data Share リソースのマネージド ID が Azure SQL Database または Azure Synapse Analytics にアクセスするためのアクセス許可:

    1. Azure portalで SQL サーバーに移動し、自分を Microsoft Entra 管理者として設定します。

    2. クエリ エディター、または Microsoft Entra 認証を使用する SQL Server Management Studio を使用して Azure SQL Database/Data Warehouse に接続します。

    3. 次のスクリプトを実行し、Data Share のマネージド ID を "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>";
      

      Note

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • SQL Server ファイアウォール アクセス:

    1. Azure portal で、SQL サーバーに移動し、[ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要が生じることがあります。
    4. [保存] を選択します。

Azure SQL との間での共有について詳しくは、Azure SQL Database からのデータの共有と受信に関する記事を参照してください。

Azure Synapse Analytics 共有

共有

  • Synapse ワークスペースの SQL プールに対する書き込みアクセス許可: Microsoft.Synapse/workspaces/sqlPools/write このアクセス許可は、共同作成者ロール内に存在します。

  • Data Share リソースのマネージド ID が Synapse ワークスペースの SQL プールにアクセスするためのアクセス許可:

    1. Azure portal で、Synapse のワークスペースに移動します。 左側のナビゲーションから SQL Active Directory 管理者を選択し、自分自身を Microsoft Entra 管理者に設定します。

    2. Synapse Studio を開き、左側のナビゲーションから [管理] を選択します。 [セキュリティ] で [アクセス制御] を選択します。 SQL 管理者またはワークスペース管理者ロールを自分に割り当てます。

    3. Synapse Studio で、左側のナビゲーションから [開発] を選択します。 SQL プールで次のスクリプトを実行して、Data Share リソースのマネージド ID を db_datareader として追加します。

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

      Note

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • Synapse ワークスペースのファイアウォール アクセス:

    1. Azure portal で Synapse ワークスペースに移動します。 左側のナビゲーションから [ファイアウォール] を選択します。
    2. [Azure サービスおよびリソースに、このワークスペースへのアクセスを許可する][オン] を選びます。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要が生じることがあります。
    4. [保存] を選択します。

受入

  • Azure Synapse Analytics (ワークスペース) の専用 SQL プール。 サーバーレス SQL プールへのデータの受信は、現在サポートされていません。

  • Synapse ワークスペースの SQL プールに対する書き込みアクセス許可: Microsoft.Synapse/workspaces/sqlPools/write このアクセス許可は、共同作成者ロール内に存在します。

  • Data Share リソースのマネージド ID が Synapse ワークスペースの SQL プールにアクセスするためのアクセス許可:

    1. Azure portal で Synapse ワークスペースに移動します。

    2. 左側のナビゲーションから SQL Active Directory 管理者を選択し、自分自身を Microsoft Entra 管理者に設定します。

    3. Synapse Studio を開き、左側のナビゲーションから [管理] を選択します。 [セキュリティ] で [アクセス制御] を選択します。 SQL 管理者またはワークスペース管理者ロールを自分に割り当てます。

    4. Synapse Studio で、左側のナビゲーションから [開発] を選択します。 SQL プールで次のスクリプトを実行して、Data Share リソースのマネージド ID を "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>";
      

      Note

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • Synapse ワークスペースのファイアウォール アクセス:

    1. Azure portal で Synapse ワークスペースに移動します。 左側のナビゲーションから [ファイアウォール] を選択します。
    2. [Azure サービスおよびリソースに、このワークスペースへのアクセスを許可する][オン] を選びます。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変わることがあります。 次回 Azure portal から SQL データを共有するときにも、このプロセスを繰り返すことが必要になる場合もあります。
    4. [保存] を選択します。

Azure Synapse Analytics との間での共有について詳しくは、Azure Synapse Analytics からのデータの共有と受信に関する記事を参照してください。

MI アクセス許可を手動で割り当てる

ユーザーがソースまたはターゲット データ ストアに対する Microsoft.Authorization/role assignments/write アクセス許可を持っている場合、Azure Data Share のマネージド ID に、データ ストアで認証するために必要なアクセス許可が自動的に割り当てられます。 マネージド ID のアクセス許可を手動で割り当てることもできます。

アクセス許可を手動で割り当てる場合は、ソースとアクションに基づいて、Azure Data Share リソースのマネージド ID に次のアクセス許可を割り当てます。

データ ストアの種類 データ プロバイダーのソース データ ストア データ コンシューマーのターゲット データ ストア
Azure Blob Storage ストレージ BLOB データ閲覧者 ストレージ BLOB データ共同作成者
Azure Data Lake Gen1 所有者 サポートされていません
Azure Data Lake Gen2 ストレージ BLOB データ閲覧者 ストレージ BLOB データ共同作成者
Azure SQL データベース db_datareader db_datareader、db_datawriter、db_ddladmin
Azure Synapse Analytics db_datareader db_datareader、db_datawriter、db_ddladmin

データ プロバイダーの例

ストレージ アカウントからデータを共有する場合は、データ共有リソースのマネージド ID に "ストレージ BLOB データ閲覧者" の役割が付与されます。

ユーザーが Azure portal を使ってデータセットを追加しようとしており、かつ、そのユーザーが Azure データ ストアの所有者であるか、Microsoft.Authorization/role assignments/write アクセス許可が割り当てられているカスタム役割のメンバーである場合、これは Azure Data Share サービスによって自動的に実行されます。

または、ユーザーが、データ共有リソースのマネージド ID を Azure データ ストアに手動で追加するよう Azure データ ストアの所有者に依頼することもできます。 この操作は、データ共有リソースごとに 1 回だけ実行する必要があります。

データ共有リソースのマネージド ID に対してロールの割り当てを手動で作成するには、次の手順を使用します。

  1. Azure データ ストアに移動します。

  2. [アクセス制御 (IAM)] を選択します。

  3. [追加] > [ロールの割り当ての追加] の順に選択します。

    [ロールの割り当ての追加] メニューが開いている [アクセス制御 (IAM)] ページのスクリーンショット。

  4. [ロール] タブで、前のセクションのロール割り当てテーブルの一覧で示されているロールのいずれかを選びます。

  5. [メンバー] タブで、[マネージド ID] を選択し、[メンバーの選択] を選択します。

  6. Azure サブスクリプションを選択します。

  7. [システム割り当てマネージド ID] を選び、Azure Data Share リソースを検索して選択します。

  8. [確認と 割り当て] タブで、 [確認と割り当て] を選択して ロールを割り当てます。

ロールの割り当ての詳細については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。 REST API を使用してデータを共有している場合は、「REST API を使用して Azure ロールを割り当てる」を参照することによって、API を使用してロールの割り当てを作成できます。

SQL スナップショット ベースの共有の場合、Microsoft Entra 認証を使用して SQL データベースに接続する一方で、SQL Database に、Azure Data Share リソースと同じ名前を使用して、外部プロバイダーから SQL ユーザーを作成する必要があります。 このユーザーには db_datareader アクセス許可を付与する必要があります。 サンプル スクリプトと、SQL ベースの共有に必要なその他の前提条件については、「Azure SQL Database または Azure Synapse Analytics からの共有」のチュートリアルを参照してください。

データ コンシューマーの例

ストレージ アカウントへのデータを受信するには、コンシューマーのデータ共有リソースのマネージド ID に、ターゲット ストレージ アカウントへのアクセス権を付与する必要があります。 データ共有リソースのマネージド ID に、"ストレージ BLOB データ共同作成者" ロールを付与する必要があります。 これは、ユーザーが Azure portal を使用してターゲット ストレージ アカウントを指定する場合に、そのユーザーが適切なアクセス許可を持っていれば、Azure Data Share サービスによって自動的に行われます。 たとえば、ユーザーがストレージ アカウントの所有者である場合や、"Microsoft.Authorization/ロールの割り当て/書き込み" のアクセス許可が割り当てられているカスタム ロールのメンバーである場合などです。

また、ユーザーは、ストレージ アカウントの所有者にデータ共有リソースのマネージド ID をストレージ アカウントに手動で追加してもらうこともできます。 この操作は、データ共有リソースごとに 1 回だけ実行する必要があります。 データ共有リソースのマネージド ID に対してロールの割り当てを手動で作成するには、次の手順に従います。

  1. Azure データ ストアに移動します。

  2. [アクセス制御 (IAM)] を選択します。

  3. [追加] > [ロールの割り当ての追加] の順に選択します。

    [ロールの割り当ての追加] メニューが開いている [アクセス制御 (IAM)] ページのスクリーンショット。

  4. [ロール] タブで、前のセクションのロール割り当てテーブルの一覧で示されているロールのいずれかを選びます。 たとえば、ストレージ アカウントの場合は、[ストレージ BLOB データ閲覧者] を選びます。

  5. [メンバー] タブで、[マネージド ID] を選択し、[メンバーの選択] を選択します。

  6. Azure サブスクリプションを選択します。

  7. [システム割り当てマネージド ID] を選び、Azure Data Share リソースを検索して選択します。

  8. [確認と 割り当て] タブで、 [確認と割り当て] を選択して ロールを割り当てます。

ロールの割り当ての詳細については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。 REST API を使用してデータを受信している場合は、「REST API を使用して Azure ロールを割り当てる」を参照することによって、API を使用してロールの割り当てを作成できます。

SQL ベースのターゲットの場合は、Microsoft Entra 認証を使用して SQL データベースに接続する一方で、SQL Database に、Azure Data Share リソースと同じ名前を使用して、外部プロバイダーから SQL ユーザーを作成する必要があります。 このユーザーには、db_datareader、db_datawriter、db_ddladmin アクセス許可を付与する必要があります。 サンプル スクリプトと、SQL ベースの共有に必要なその他の前提条件については、「Azure SQL Database または Azure Synapse Analytics からの共有」のチュートリアルを参照してください。

リソース プロバイダーの登録

次のシナリオでは、Microsoft.DataShare リソース プロバイダーを Azure サブスクリプションに手動で登録することが必要になる場合があります。

  • 自分の Azure テナントで Azure Data Share の招待を初めて表示する
  • Azure Data Share リソースとは異なる Azure サブスクリプションで、Azure データ ストアからのデータを共有する
  • Azure Data Share リソースとは異なる Azure サブスクリプションで、Azure データ ストアへのデータを受信する

Microsoft.DataShare リソース プロバイダーを Azure サブスクリプションに登録するには、次の手順に従います。 リソース プロバイダーを登録するには、Azure サブスクリプションへの "共同作成者" アクセス権が必要です。

  1. Azure portal で、 [サブスクリプション] に移動します。
  2. Azure Data Share に使っているサブスクリプションを選択します。
  3. [リソース プロバイダー] を選択します。
  4. 「Microsoft.DataShare」を検索します。
  5. [登録] を選択します。

リソース プロバイダーの詳細については、「Azure リソース プロバイダーと種類」を参照してください.

Data Share のためのカスタム ロール

このセクションでは、データを共有したり受け取ったりするための、ストレージ アカウントに固有のカスタム ロールおよびカスタム ロールで必要なアクセス許可について説明します。 また、カスタム役割または Azure Data Share 役割とは関係のない前提条件もあります。

Data Share に関するカスタム役割以外の前提条件

  • ストレージとデータ レイクのスナップショット ベースの共有の場合は、Azure Data Share にデータセットを追加するために、プロバイダーのデータ共有リソースのマネージド ID に、ソース Azure データ ストアへのアクセス権を付与する必要があります。 たとえば、ストレージ アカウントを使用する場合は、データ共有リソースのマネージド ID にストレージ BLOB データ閲覧者ロールが付与されます。
  • ストレージ アカウントでデータを受け取るには、コンシューマーのデータ共有リソースのマネージド ID に、ターゲット ストレージ アカウントへのアクセス権を付与する必要があります。 データ共有リソースのマネージド ID に、"ストレージ BLOB データ共同作成者" ロールを付与する必要があります。
  • 一部のシナリオでは、Microsoft.DataShare リソース プロバイダーを Azure サブスクリプションに手動で登録することが必要になる場合もあります。 具体的な詳細については、この記事の「リソース プロバイダーの登録」セクションをご覧ください。

カスタム ロールと必要なアクセス許可を作成する

データの共有と受け取りのために、サブスクリプションまたはリソース グループにカスタム ロールを作成できます。 その後、ユーザーとグループにカスタム ロールを割り当てることができます。

  • カスタム ロールを作成するには、ストレージ、Data Share、リソース グループ、認可に関して必要なアクションがあります。 さまざまなレベルのアクセス許可を理解し、自分のカスタム ロールに関連するものを選択するには、Azure リソース プロバイダーの操作に関するドキュメントでデータ共有について参照してください。
  • または、Azure portal で [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", 
 ] 
}

次のステップ