Azure Data Share のロールと要件

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

ロールと要件

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

Azure データ ストアからデータを共有または受信するには、ユーザーに少なくとも以下のアクセス許可が必要です。

  • その Azure データ ストアに対する書き込みアクセス許可。 通常、このアクセス許可は共同作成者ロールにあります。

ストレージとデータ レイクのスナップショット ベースの共有を行う場合は、Azure データ ストアでロールの割り当てを作成するためのアクセス許可も必要です。 通常、ロールの割り当てを作成するためのアクセス許可は、所有者ロール、ユーザー アクセス管理者ロール、または "Microsoft.Authorization/ロールの割り当て/書き込み" のアクセス許可が割り当てられているカスタム ロールにあります。 データ共有リソースのマネージド ID に Azure データ ストアへのアクセス権が既に付与されている場合は、このアクセス許可は必要ありません。 Data Share リソースのマネージド ID に割り当てられるロールの概要を次に示します。

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

SQL スナップショット ベースの共有を行う場合、Azure SQL Database に、Azure Data Share リソースと同じ名前を使用して、外部プロバイダーから SQL ユーザーを作成する必要があります。 このユーザーを作成するには、Azure Active Directory の管理者権限が必要です。 その SQL ユーザーに必要なアクセス許可の概要を次に示します。

SQL データベースの種類 データ プロバイダーの SQL ユーザーのアクセス許可 データ コンシューマーの SQL ユーザーのアクセス許可
Azure SQL データベース db_datareader db_datareader、db_datawriter、db_ddladmin
Azure Synapse Analytics db_datareader db_datareader、db_datawriter、db_ddladmin

データ プロバイダー

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

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

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

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

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

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

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

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

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

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

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

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

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

SQL スナップショット ベースの共有の場合、Azure Active Directory 認証を使用して 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. [追加] > [ロールの割り当ての追加] の順に選択します。

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

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

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

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

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

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

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

SQL ベースのターゲットの場合は、Azure Active Directory 認証を使用して 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.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", 
 ] 
}

次のステップ