チュートリアル: データ製品バッチを設定する

このチュートリアルでは、既にデプロイされているデータ製品サービスを設定する方法について説明します。 Azure Data Factory を使用してデータを統合および調整し、Microsoft Purview を使用してデータ資産の検出、管理、ガバナンスを行います。

具体的には、次の方法を学習します。

  • 必要なリソースの作成とデプロイ
  • ロールとアクセス許可の割り当て
  • データ統合のためのリソースの接続

このチュートリアルは、<DMLZ-prefix>-dev-dp001 のサンプル データ製品リソース グループにデプロイされているサービスについて理解するのに役立ちます。 Azure サービスが相互にインターフェイスする方法と、どのようなセキュリティ対策が実施されているかを体験してください。

新しいコンポーネントをデプロイするとき、Purview によってサービス ガバナンスが接続されて、包括的で最新のデータ ランドスケープのマップが作成される方法について調査する機会が得られます。 その結果、自動化されたデータ検出、機密データ分類、エンド ツー エンドのデータ系列が得られます。

前提条件

データ製品バッチの設定を開始する前に、次の前提条件を満たしていることを確認してください。

  • Azure のサブスクリプション。 Azure サブスクリプションをお持ちでない場合は、Azure の無料アカウントを作成してください。

  • Azure サブスクリプションへのアクセス許可。 Purview と Azure Synapse Analytics をデプロイ用に設定するには、Azure サブスクリプションのユーザー アクセス管理者ロールまたは所有者ロールが必要です。 このチュートリアルでは、サービスとサービス プリンシパルに対してさらに多くのロールの割り当てを設定します。

  • デプロイされるリソース。 このチュートリアルを完了するには、これらのリソースが Azure サブスクリプションに既にデプロイされている必要があります。

  • Microsoft Purview アカウント。 アカウントはデータ管理ランディング ゾーンのデプロイの一部として作成されます。

  • セルフホステッド統合ランタイム。 ランタイムは、データ ランディング ゾーンのデプロイの一部として作成されます。

注意

このチュートリアルでは、プレースホルダーは、チュートリアルを開始する前にデプロイする前提条件となるリソースを示します。

  • <DMLZ-prefix> は、"データ管理ランディング ゾーン" のデプロイを作成したときに入力したプレフィックスを示します。
  • <DLZ-prefix> は、"データ ランディング ゾーン" のデプロイを作成したときに入力したプレフィックスを示します。
  • <DP-prefix> は、"データ製品バッチ" のデプロイを作成したときに入力したプレフィックスを示します。

Azure SQL Database インスタンスを作成する

このチュートリアルを開始するには、2 つのサンプルの SQL Database インスタンスを作成します。 後のセクションでこれらのデータベースを使用して、CRM および ERP のデータ ソースをシミュレートします。

  1. Azure portal のポータル グローバル コントロールで、Cloud Shell アイコンを選択して Azure Cloud Shell ターミナルを開きます。 ターミナルの種類として [Bash] を選択します。

    Screenshot that shows the Cloud Shell icon in the Azure portal.

  2. Cloud Shell で次のスクリプトを実行します。 このスクリプトでは、<DLZ-prefix>-dev-dp001 リソース グループと、リソース グループ内の <DP-prefix>-dev-sqlserver001 Azure SQL サーバーが検索されます。 次に、スクリプトによって <DP-prefix>-dev-sqlserver001 サーバー上に 2 つの SQL Database インスタンスが作成されます。 データベースには、AdventureWorks サンプル データが事前に設定されています。 データには、このチュートリアルで使用するテーブルが含まれています。

    subscription パラメーター プレースホルダーの値は、必ず独自の Azure サブスクリプション ID に置き換えてください。

    # Azure SQL Database instances setup
    # Create the AdatumCRM and AdatumERP databases to simulate customer and sales data.
    
    # Use the ID for the Azure subscription you used to deployed the data product.
    az account set --subscription "<your-subscription-ID>"
    
    # Get the resource group for the data product.
    resourceGroupName=$(az group list -o tsv  --query "[?contains(@.name, 'dp001')==\`true\`].name")
    
    # Get the existing Azure SQL Database server name.
    sqlServerName=$(az sql server list -g $resourceGroupName -o tsv  --query "[?contains(@.name, 'sqlserver001')==\`true\`].name")
    
    # Create the first SQL Database instance, AdatumCRM, to create the customer's data source.
    az sql db create --resource-group $resourceGroupName --server $sqlServerName --name AdatumCRM --service-objective Basic --sample-name AdventureWorksLT
    
    # Create the second SQL Database instance, AdatumERP, to create the sales data source.
    az sql db create --resource-group $resourceGroupName --server $sqlServerName --name AdatumERP --service-objective Basic --sample-name AdventureWorksLT
    

スクリプトの実行が完了すると、<DP-prefix>-dev-sqlserver001 Azure SQL サーバー上に 2 つの新しい SQL Database インスタンス AdatumCRM および AdatumERP があります。 どちらのデータベースも Basic コンピューティング レベルにあります。 データベースは、データ製品バッチのデプロイに使用したのと同じ <DLZ-prefix>-dev-dp001 リソース グループに配置されます。

データ製品バッチをカタログ化するように Purview を設定する

次に、データ製品バッチをカタログ化するように Purview を設定する手順を完了します。 まず、サービス プリンシパルを作成します。 次に、必要なリソースを設定し、ロールとアクセス許可を割り当てます。

サービス プリンシパルの作成

  1. Azure portal のポータル グローバル コントロールで、Cloud Shell アイコンを選択して Azure Cloud Shell ターミナルを開きます。 ターミナルの種類として [Bash] を選択します。

  2. 次のスクリプトを修正します。

    • subscriptionId パラメーター プレースホルダーの値を、独自の Azure サブスクリプション ID に置き換えます。
    • spname パラメーター プレースホルダーの値を、サービス プリンシパルに使用する名前に置き換えます。 サービス プリンシパル名は、サブスクリプション内で一意である必要があります。

    パラメーター値を更新した後、Cloud Shell でスクリプトを実行します。

    # Replace the parameter values with the name you want to use for your service principal name and your Azure subscription ID.
    spname="<your-service-principal-name>"
    subscriptionId="<your-subscription-id>"
    
    # Set the scope to the subscription.
    scope="/subscriptions/$subscriptionId"
    
    # Create the service principal.
    az ad sp create-for-rbac \
      --name $spname \
      --role "Contributor" \
      --scope $scope
    
  3. 次の例のような結果がないか JSON 出力を確認します。 出力内の値をメモまたはコピーして、後の手順で使用します

    {
      "appId": "<your-app-id>",
      "displayName": "<service-principal-display-name>",
      "name": "<your-service-principal-name>",
      "password": "<your-service-principal-password>",
      "tenant": "<your-tenant>"
    }
    

サービス プリンシパルのアクセスとアクセス許可を設定する

前の手順で生成された JSON 出力から、次の戻り値を取得します。

  • サービス プリンシパル ID (appId)
  • サービス プリンシパルのキー (password)

サービス プリンシパルには次のアクセス許可が必要です。

  • ストレージ アカウントのストレージ BLOB データ閲覧者ロール。
  • SQL Database インスタンスに対するデータ閲覧者のアクセス許可。

必要なロールとアクセス許可を使用してサービス プリンシパルを設定するには、次の手順を実行します。

Azure ストレージ アカウントのアクセス許可

  1. Azure portal で、<DLZ-prefix>devraw Azure ストレージ アカウントに移動します。 リソース メニューで、[アクセス制御 (IAM)] を選択します。

    Screenshot that shows the storage account service principal permissions pane, with Access Control highlighted.

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

    Screenshot that shows the storage account service principal Access Control pane that shows how to add a role assignment.

  3. [ロールの割り当ての追加][ロール] タブで、[ストレージ BLOB データ閲覧者] を検索して選択します。 次に、 [次へ] を選択します。

    Screenshot that shows searching for Storage Blob Data Reader under Add role assignment.

  4. [メンバー] で、[メンバーの選択] を選択します。

    Screenshot that shows select members pane under add role assignment.

  5. [メンバーの選択] で、作成したサービス プリンシパルの名前を検索します。

    Screenshot that shows how to search for a service principal name.

  6. 検索結果でサービス プリンシパルを選択し、[選択] を選択します。

    Screenshot that shows the results pane after searching for a service principal name.

  7. ロールの割り当てを完了するには、[レビューと割り当て] を 2 回選択します。

残りのストレージ アカウントについて、このセクションの手順を繰り返します。

  • <DLZ-prefix>devencur
  • <DLZ-prefix>devwork

SQL データベースのアクセス許可

SQL Database のアクセス許可を設定するには、クエリ エディターを使用して Azure SQL 仮想マシンに接続します。 すべてのリソースはプライベート エンドポイントの背後にあるため、最初に Azure Bastion ホスト仮想マシンを使用して Azure portal にサインインする必要があります。

Azure portal で、<DMLZ-prefix>-dev-bastion リソース グループにデプロイされている仮想マシンに接続します。 Bastion ホスト サービスを使用して仮想マシンに接続する方法がわからない場合は、「VM への接続」を参照してください。

サービス プリンシパルをデータベースのユーザーとして追加するには、まず Microsoft Entra 管理者として自分自身を追加することが必要になる場合があります。手順 1 と 2 では、Microsoft Entra 管理者として自分自身を追加します。手順 3 から 5 では、サービス プリンシパルにデータベースへのアクセス許可を付与します。 Bastion ホスト仮想マシンからポータルにサインインしたら、Azure portal で Azure SQL 仮想マシンを検索します。

  1. <DP-prefix>-dev-sqlserver001 Azure SQL 仮想マシンに移動します。 リソース メニューの [設定] で、[Microsoft Entra ID] を選びます。

    Screenshot that shows the Microsoft Entra pane in Azure SQL Database Server.

  2. コマンド バーで、[管理者の設定] を選択します。自分のアカウントを検索して選択します。 [選択] を選択します。

    Screenshot that shows how to search for an account to make a user an admin.

  3. リソース メニューで、[SQL データベース] を選択し、AdatumCRM データベースを選択します。

    Screenshot that shows a search for the correct database, with AdatumCRM highlighted.

  4. [AdatumCRM] リソース メニューで、[クエリ エディター (プレビュー)] を選択します。 [Active Directory 認証] で、[続行] ボタンを選択してサインインします。

    Screenshot that shows how to sign in to the query editor by using Active Directory authentication.

  5. クエリ エディターで、次のステートメントを修正して、<service principal name> を作成したサービス プリンシパルの名前 (たとえば purview-service-principal) に置き換えます。 次に、ステートメントを実行します。

    
    CREATE USER [<service principal name>] FROM EXTERNAL PROVIDER
    GO
    
    EXEC sp_addrolemember 'db_datareader', [<service principal name>]
    GO
    
    

    Screenshot that shows how to execute statements in the query editor.

AdatumERP データベースについて、手順 3 から 5 を繰り返します。

キー コンテナーを設定する

Purview では、Azure Key Vault のインスタンスからサービス プリンシパル キーを読み取ります。 キー コンテナーは、データ管理ランディング ゾーンのデプロイで作成されます。 キー コンテナーを設定するには、次の手順が必要です。

  1. サービス プリンシパルのキーをシークレットとしてキー コンテナーに追加します。

  2. キー コンテナー内の MSI シークレット閲覧者のアクセス許可を Purview に付与します。

  3. キー コンテナー接続として Purview にキー コンテナーを追加します。

  4. Purview で、キー コンテナー シークレットを指す資格情報を作成します。

キー コンテナーにシークレットを追加するアクセス許可を追加する

  1. Azure portal で、Azure Key Vault サービスに移動します。 <DMLZ-prefix>-dev-vault001 キー コンテナーを検索します。

    Screenshot that shows the Access Control Key Vault pane.

  2. リソース メニューで、[アクセス制御 (IAM)] を選択します。 コマンド バーで、[追加] を選択し、[ロールの割り当ての追加] を選択します。

    Screenshot that shows adding a role assignment in Purview.

  3. [ロール] タブで、[キー コンテナー管理者] を検索して選択します。 [次へ] を選択します。

    Screenshot that shows how to search for the Key Vault Administrator role.

  4. [メンバー] で、[メンバーの選択] を選択して、現在サインインしているアカウントを追加します。

    Screenshot that shows the Select members button highlighted.

  5. [メンバーの選択] で、現在サインインしているアカウントを検索します。 アカウントを選択し、[選択] を選択します。

    Screenshot that shows the select member search box.

  6. ロールの割り当てプロセスを完了するには、[レビューと割り当て] を 2 回選択します。

キー コンテナーにシークレットを追加する

Bastion ホスト仮想マシンから Azure portal にサインインするには、次の手順を実行します。

  1. <DMLZ-prefix>-dev-vault001 キー コンテナーのリソース メニューで、[シークレット] を選択します。 コマンド バーで、[生成/インポート] を選択して新しいシークレットを作成します。

    Screenshot that shows the key vault Generate/Import button highlighted.

  2. [シークレットの作成] で、次の値を選択するか入力します。

    設定 アクション
    Upload options [Manual] \(手動) を選択します。
    名前 service-principal-secret」と入力します。
    Value 以前作成したサービス プリンシパルのパスワードを入力します。

    Screenshot that shows the key vault Create a secret pane.

    Note

    この手順では、サービス プリンシパルのパスワード キーを使用して、キー コンテナーに service-principal-secret という名前のシークレットを作成します。 Purview ではシークレットを使用して、データ ソースに接続してスキャンします。 正しくないパスワードを入力した場合、次のセクションを完了できません。

  3. [作成] を選択します

キー コンテナーで Purview アクセス許可を設定する

Purview インスタンスで、キー コンテナーに格納されているシークレットを読み取るために、Purview にキー コンテナー内の関連するアクセス許可を割り当てる必要があります。 アクセス許可を設定するには、Purview マネージド ID をキー コンテナーのシークレット閲覧者ロールに追加します。

  1. <DMLZ-prefix>-dev-vault001 キー コンテナーのリソース メニューで、[アクセス制御 (IAM)] を選択します。

  2. コマンド バーで、[追加] を選択し、[ロールの割り当ての追加] を選択します。

    Screenshot that shows the Access Control pane, with the add role assignment button highlighted.

  3. [ロール] で、[キー コンテナー シークレット ユーザー] を検索して選択します。 [次へ] を選択します。

    Screenshot that shows the search for Key Vault Secret User pane.

  4. [メンバー] で、[メンバーの選択] を選択します。

    Screenshot that shows the add role assignment pane with the select member button highlighted.

  5. <DMLZ-prefix>-dev-purview001 Purview インスタンスを検索します。 該当するアカウントを追加するインスタンスを選択します。 次に [選択] を選択します。

    Screenshot that shows the search box for the Purview instance name.

  6. ロールの割り当てプロセスを完了するには、[レビューと割り当て] を 2 回選択します。

    Screenshot that shows how to complete a role assignment.

Purview でキー コンテナー接続を設定する

Purview へのキー コンテナー接続を設定するには、Azure Bastion ホスト仮想マシンを使用してAzure portal にサインインする必要があります。

  1. Azure portal で、<DMLZ-prefix>-dev-purview001 の Purview アカウントに移動します。 [概要][Microsoft Purview ガバナンス ポータルを開く] で、[開く] を選択します。

    Screenshot that shows the Microsoft Purview account overview.

  2. Purview Studio で、[管理]>[資格情報] を選択します。 [資格情報] のコマンド バーで、[Key Vault 接続の管理] を選択し、[新規] を選択します。

    Screenshot that shows the Manage Key Vault connections button.

  3. [New key vault connection](新しいキー コンテナー接続) で、次の情報を選択または入力します。

    設定 アクション
    名前 <DMLZ-prefix>-dev-vault001」と入力します。
    Azure サブスクリプション キー コンテナーをホストするサブスクリプションを選択します。
    キー コンテナー名 <DMLZ-prefix>-dev-vault001 キー コンテナーを選択します。

    Screenshot that shows the new Key Vault connections pane.

  4. [作成] を選択します

  5. [アクセス権の付与の確認] で、[確認] を選択します。

Purview で資格情報を作成する

キー コンテナーを設定する最後の手順は、サービス プリンシパルのキー コンテナーで作成したシークレットを指す資格情報を Purview で作成することです。

  1. Purview Studio で、[管理]>[資格情報] を選択します。 [資格情報] コマンド バーで、[新規] を選択します。

    Screenshot that shows the new Purview Credentials pane.

  2. [新しい資格情報] で、次の情報を選択または入力します。

    設定 アクション
    名前 purviewServicePrincipal」と入力します。
    認証方法 [サービス プリンシパル] を選択します。
    テナント ID 値は自動的に設定されます。
    サービス プリンシパル ID サービス プリンシパルのアプリケーション ID またはクライアント ID を入力します。
    Key Vault 接続 前のセクションで作成したキー コンテナー接続を選択します。
    シークレット名 キー コンテナー内のシークレットの名前 (service-principal-secret) を入力します。

    Screenshot that shows the new credentials form, with values highlighted.

  3. [作成] を選択します

データ ソースの登録

この時点で、Purview からサービス プリンシパルに接続できます。 これで、データ ソースを登録して設定できます。

Azure Data Lake Storage Gen2 アカウントを登録する

次の手順では、Azure Data Lake Storage Gen2 ストレージ アカウントを登録するプロセスの概要を示します。

  1. Purview Studio で、データ マップ アイコンを選択し、[ソース] を選択して、[登録] を選択します。

    Screenshot that shows the data map button highlighted in Purview.

  2. [ソースの登録] で、[Azure Data Lake Storage Gen2] を選択し、[続行] を選択します。

    Screenshot that shows the Azure Data Lake Storage Gen2 registration source.

  3. [ソースの登録 (Azure Data Lake Storage Gen2)] 画面で、次の情報を選択または入力します。

    設定 アクション
    名前 <DLZ-prefix>dldevraw」と入力します。
    Azure サブスクリプション ストレージ アカウントをホストするサブスクリプションを選択します。
    Storage account name (ストレージ アカウント名) 関連するストレージ アカウントを選択します。
    エンドポイント この値は、選択されたストレージ アカウントに応じて自動的に設定されます。
    コレクションを選択する ルート コレクションを選びます。

    Screenshot that shows the Register Azure Data Lake Storage Gen2 pane, with values highlighted.

  4. [登録] を選択してデータ ソースを作成します。

これらの手順を、次のストレージ アカウントに対して繰り返します。

  • <DMLZ-prefix>devencur
  • <DMLZ-prefix>devwork

SQL Database インスタンスをデータ ソースとして登録する

  1. Purview Studio で、データ マップ アイコンを選択し、[ソース] を選択して、[登録] を選択します。

    Screenshot that shows the data map button highlighted in the Purview interface.

  2. [ソースの登録] で、[Azure SQL Database] を選択し、[続行] を選択します。

    Screenshot that shows the Azure SQL Database registration source.

  3. [Register sources (Azure SQL Database)](ソースの登録 (Azure SQL Database)) 画面で、次の情報を選択または入力します。

    設定 アクション
    名前 SQLDatabase (「Azure SQL Database インスタンスを作成する」で作成されたデータベースの名前) を入力します。
    サブスクリプション データベースをホストするサブスクリプションを選択します。
    サーバー名 <DP-prefix>-dev-sqlserver001」と入力します。

    Screenshot that shows the Register SQL Database form, with values highlighted.

  4. [登録] を選択します。

スキャンを設定する

次に、データ ソースのスキャンを設定します。

Data Lake Storage Gen2 データ ソースをスキャンする

  1. Purview Studio で、データ マップに移動します。 データ ソースで、[新しいスキャン] アイコンを選択します。

    Screenshot that shows how to set up a new Data Lake Storage Gen2 scan.

  2. [新しいスキャン] ペインで、次の情報を入力または選択します。

    設定 アクション
    名前 Scan_<DLZ-prefix>devraw」と入力します。
    統合ランタイム経由で接続 データ ランディング ゾーンと共にデプロイされたセルフホステッド統合ランタイムを選択します。
    資格情報 Purview 用に設定したサービス プリンシパルを選択します。

    Screenshot that shows the scan Data Lake Storage Gen2 credential form with values entered.

  3. [接続のテスト] を選択して、接続と、アクセス許可が設定されていることを確認します。 [続行] をクリックします。

  4. [スキャンのスコープ設定] で、スキャンのスコープとしてストレージ アカウント全体を選択し、[続行] を選択します。

    Screenshot that shows the Scope your scan pane with storage accounts selected.

  5. [スキャン ルール セットの選択] で、[AdlsGen2] を選択し、[続行] を選択します。

    Screenshot that shows the Data Lake Storage Gen2 scan rule set selection.

  6. [スキャン トリガーの設定] で、[1 回] を選択し、[続行] を選択します。

    Screenshot that shows the set a scan Trigger pane, with Once selected.

  7. [スキャンを確認する] で、スキャン設定を確認します。 [保存および実行] を選択してスキャンを開始します。

    Screenshot that shows reviewing your scan before you save and run it.

これらの手順を、次のストレージ アカウントに対して繰り返します。

  • <DMLZ-prefix>devencur
  • <DMLZ-prefix>devwork

SQL Database データ ソースのスキャン

  1. Azure SQL Database データ ソースで、[新しいスキャン] を選択します。

    Screenshot that shows how to create a new SQL Database scan.

  2. [新しいスキャン] ペインで、次の情報を入力または選択します。

    設定 アクション
    名前 Scan_Database001」と入力します。
    統合ランタイム経由で接続 [Purview-SHIR] を選択します。
    データベース名 データベース名を選択します。
    資格情報 Purview で作成したキー コンテナー資格情報を選択します。
    系列の抽出 (プレビュー) [オフ] を選択します。

    Screenshot that shows the scan credential form, with values entered.

  3. [接続のテスト] を選択して、接続と、アクセス許可が設定されていることを確認します。 [続行] をクリックします。

  4. スキャンのスコープを選択します。 データベース全体をスキャンするには、既定値を使用します。

    Screenshot that shows how to set the scope for the scan to the whole database.

  5. [スキャン ルール セットの選択] で、[AzureSqlDatabase] を選択し、[続行] を選択します。

    Screenshot that shows the SQL Database scan rule set selection.

  6. [スキャン トリガーの設定] で、[1 回] を選択し、[続行] を選択します。

    Screenshot that shows the set a scan to run pane with once selected.

  7. [スキャンを確認する] で、スキャン設定を確認します。 [保存および実行] を選択してスキャンを開始します。

以上の手順を AdatumERP データベースについても行います。

これで Purview は、登録済みのデータ ソースのデータ ガバナンス用に設定されました。

SQL Database データを Data Lake Storage Gen2 にコピーする

次の手順では、Data Factory のデータのコピー ツールを使用して、SQL Database インスタンスAdatumCRM および AdatumERP のテーブルを、<DLZ-prefix>devraw の Data Lake Storage Gen2 アカウントの CSV ファイルにコピーするパイプラインを作成します。

環境はパブリック アクセスにロックされているため、まずプライベート エンドポイントを設定する必要があります。 プライベート エンドポイントを使用するには、ローカル ブラウザーで Azure portal にサインインし、Bastion ホスト仮想マシンに接続して、必要な Azure サービスにアクセスします。

プライベート エンドポイントを作成する

必要なリソースのプライベート エンドポイントを設定するには、次の手順を実行します。

  1. <DMLZ-prefix>-dev-bastion のリソース グループで、<DMLZ-prefix>-dev-vm001 を 選択します。

    Screenshot that shows the resource groups for connecting to the bastion host virtual machine.

  2. コマンド バーで、[接続] を選択し、[Bastion] を選択します。

    Screenshot that shows the connect to bastion selection pane.

  3. 仮想マシンのユーザー名とパスワードを入力し、[接続] を選択します。

    Screenshot that shows the username and password entry pane.

  4. 仮想マシンの Web ブラウザーで、Azure portal に移動します。 <DLZ-prefix>-dev-shared-integration のリソース グループに移動し、<DLZ-prefix>-dev-integration-datafactory001 のデータ ファクトリを開きます。

    Screenshot that shows how to go to a different resource group to open Azure Data Factory.

  5. [概要][Open Azure Data Factory Studio](Azure Data Factory Studio を開く) で、[開く] を選択します。

    Screenshot that shows how to open Azure Data Factory Studio.

  6. Data Factory Studio メニューで、[管理] アイコンを選択します (アイコンは、レンチのマークが付いた正方形のツール ボックスのように表示されています)。 リソース メニューで、[マネージド プライベート エンドポイント] を選択して、Data Factory をセキュリティで保護された他の Azure サービスに接続するために必要なプライベート エンドポイントを作成します。

    プライベート エンドポイントのアクセス要求の承認については、後のセクションで説明します。 プライベート エンドポイントのアクセス要求を承認すると、承認の状態は、 次の <DLZ-prefix>devencur のストレージ アカウントの例のように [承認済み] になります。

    Screenshot that shows how to go to the Manage Private Endpoints pane.

  7. プライベート エンドポイント接続を承認する前に、[新規] を選択します。 「Azure SQL」と入力して、<DP-prefix>-dev-sqlserver001 の Azure SQL 仮想マシンの新しいマネージド プライベート エンドポイントを作成するために使用する Azure SQL Database コネクタを見つけます。 仮想マシンには、前に作成した AdatumCRM データベースと AdatumERP データベースが含まれています。

  8. [New managed private endpoint (Azure SQL Database)] (\新しいマネージド プライベート エンドポイント (Azure SQL データベース)\)[名前] に、「data-product-dev-sqlserver001」と入力します。 リソースの作成に使用した Azure サブスクリプションを入力します。 [サーバー名] で、<DP-prefix>-dev-sqlserver001 を選択し、次のセクションでこのデータ ファクトリから接続できるようにします。

    Screenshot that shows how to name the new private endpoint.

プライベート エンドポイントのアクセス要求を承認する

Data Factory に必要なサービスのプライベート エンドポイントへのアクセス権を付与するには、次の 2 つのオプションがあります。

  • オプション 1: アクセスを要求する各サービスについて、Azure portal で、サービスのネットワークまたはプライベート エンドポイント接続オプションに移動し、プライベート エンドポイントへのアクセス要求を承認します。

  • オプション 2: Azure Cloud Shell で Bash モードで次のスクリプトを実行し、必要なプライベート エンドポイントへのすべてのアクセス要求を一度に承認します。

    
    # Storage managed private endpoint approval
    
    # devencur
    resourceGroupName=$(az group list -o tsv  --query "[?contains(@.name, '-dev-storage')==\`true\`].name")
    storageAcctName=$(az storage account list -g $resourceGroupName -o tsv  --query "[?contains(@.name, 'devencur')==\`true\`].name")
    endPointConnectionName=$(az network private-endpoint-connection list -g $resourceGroupName -n $storageAcctName --type Microsoft.Storage/storageAccounts -o tsv --query "[?contains(@.properties.privateLinkServiceConnectionState.status, 'Pending')==\`true\`].name")
    
    az network private-endpoint-connection approve -g $resourceGroupName -n $endPointConnectionName --resource-name $storageAcctName --type Microsoft.Storage/storageAccounts --description "Approved"
    
    # devraw
    resourceGroupName=$(az group list -o tsv  --query "[?contains(@.name, '-dev-storage')==\`true\`].name")
    storageAcctName=$(az storage account list -g $resourceGroupName -o tsv  --query "[?contains(@.name, 'devraw')==\`true\`].name")
    endPointConnectionName=$(az network private-endpoint-connection list -g $resourceGroupName -n $storageAcctName --type Microsoft.Storage/storageAccounts -o tsv --query "[?contains(@.properties.privateLinkServiceConnectionState.status, 'Pending')==\`true\`].name")
    az network private-endpoint-connection approve -g $resourceGroupName -n $endPointConnectionName --resource-name $storageAcctName --type Microsoft.Storage/storageAccounts --description "Approved"
    
    # SQL Database managed private endpoint approval
    resourceGroupName=$(az group list -o tsv  --query "[?contains(@.name, '-dev-dp001')==\`true\`].name")
    sqlServerName=$(az sql server list -g $resourceGroupName -o tsv  --query "[?contains(@.name, 'sqlserver001')==\`true\`].name")
    endPointConnectionName=$(az network private-endpoint-connection list -g $resourceGroupName -n $sqlServerName --type Microsoft.Sql/servers -o tsv --query "[?contains(@.properties.privateLinkServiceConnectionState.status, 'Pending')==\`true\`].name")
    az network private-endpoint-connection approve -g $resourceGroupName -n $endPointConnectionName --resource-name $sqlServerName --type Microsoft.Sql/servers --description "Approved"
    
    # Key Vault private endpoint approval
    resourceGroupName=$(az group list -o tsv  --query "[?contains(@.name, '-dev-metadata')==\`true\`].name")
    keyVaultName=$(az keyvault list -g $resourceGroupName -o tsv  --query "[?contains(@.name, 'dev-vault001')==\`true\`].name")
    endPointConnectionID=$(az network private-endpoint-connection list -g $resourceGroupName -n $keyVaultName --type Microsoft.Keyvault/vaults -o tsv --query "[?contains(@.properties.privateLinkServiceConnectionState.status, 'Pending')==\`true\`].id")
    az network private-endpoint-connection approve -g $resourceGroupName --id $endPointConnectionID --resource-name $keyVaultName --type Microsoft.Keyvault/vaults --description "Approved"
    
    # Purview private endpoint approval
    resourceGroupName=$(az group list -o tsv  --query "[?contains(@.name, 'dev-governance')==\`true\`].name")
    purviewAcctName=$(az purview account list -g $resourceGroupName -o tsv  --query "[?contains(@.name, '-dev-purview001')==\`true\`].name")
    for epn in $(az network private-endpoint-connection list -g $resourceGroupName -n $purviewAcctName --type Microsoft.Purview/accounts -o tsv --query "[?contains(@.properties.privateLinkServiceConnectionState.status, 'Pending')==\`true\`].name")
    do
        az network private-endpoint-connection approve -g $resourceGroupName -n $epn --resource-name $purviewAcctName --type Microsoft.Purview/accounts --description "Approved"
    done
    
    

次の例は、<DLZ-prefix>devraw のストレージ アカウントがプライベート エンドポイントのアクセス要求を管理する方法を示しています。 ストレージ アカウントのリソース メニューで、[ネットワーク] を選択します。 コマンド バーで、[プライベート エンドポイント接続] を選択します。

Screenshot that shows how to go to the Private endpoint connections pane.

一部の Azure リソースでは、リソース メニューで [プライベート エンドポイント接続] を選択します。 Azure SQL サーバーの例を次のスクリーンショットに示します。

プライベート エンドポイント アクセス要求を承認するには、[プライベート エンドポイント接続] で、保留中のアクセス要求を選択し、[承認] を選択します。

Screenshot that shows to approve a private endpoint access request.

必要な各サービスでアクセス要求を承認した後、Data Factory Studio の [マネージド プライベート エンドポイント] で要求が [承認済み] として表示されるまでに数分かかる場合があります。 コマンド バーで [更新] を選択した場合でも、承認状態が数分間古くなっている可能性があります。

必要なサービスのすべてのアクセス要求の承認が完了したら、[マネージド プライベート エンドポイント] で、すべてのサービスの承認状態の値が [承認済み] になります。

Screenshot that shows the private endpoint SQL connections as Approved.

ロールの割り当て

プライベート エンドポイントのアクセス要求の承認が完了したら、Data Factory から次のリソースにアクセスするための適切なロールのアクセス許可を追加します。

  • <DP-prefix>-dev-sqlserver001 の Azure SQL サーバーの SQL Database インスタンス AdatumCRM および AdatumERP
  • ストレージ アカウント <DLZ-prefix>devraw<DLZ-prefix>devencur、および <DLZ-prefix>devwork
  • Purview アカウント<DMLZ-prefix>-dev-purview001

Azure SQL:仮想マシン

  1. ロールの割り当てを追加するには、Azure SQL 仮想マシンから作業を開始します。 <DMLZ-prefix>-dev-dp001 のリソース グループで、<DP-prefix>-dev-sqlserver001 に移動します。

  2. リソース メニューで、[アクセス制御 (IAM)] を選択します。 コマンド バーで、[追加]>[ロールの割り当ての追加] を選択します。

  3. [ロール] タブで、[共同作成者] を選択し、[次へ] を選択します。

    Screenshot that shows the Contributor role selection pane.

  4. [メンバー][アクセス権の割り当て先][マネージド ID] を選択します。 [メンバー] で、[メンバーの選択] を選択します。

    Screenshot that shows the select Managed Identity Members pane.

  5. [マネージド ID の選択] で、Azure サブスクリプションを選択します。 [マネージド ID] について、[Data Factory (V2)] を選択して、使用可能なデータ ファクトリを表示します。 データ ファクトリの一覧で、Azure Data Factory <DLZ-prefix>-dev-integration-datafactory001 を選択します。 [選択] を選択します。

    Screenshot that shows the role assignment completion pane.

  6. [レビューと割り当て] を 2 回選択してプロセスを完了します。

ストレージ アカウント

次に、必要なロールを <DLZ-prefix>devraw<DLZ-prefix>devencur<DLZ-prefix>devwork のストレージ アカウントに割り当てます。

ロールを割り当てるには、Azure SQL サーバー ロールの割り当ての作成に使用したのと同じ手順を実行します。 ただし、ロールについては、[共同作成者] ではなく [ストレージ BLOB データ共同作成者] を選択します。

3 つのストレージ アカウントすべてにロールを割り当てた後、Data Factory からストレージ アカウントに接続してアクセスできます。

Microsoft Purview

ロールの割り当てを追加する最後の手順は、Microsoft Purview の Purview データ キュレーター ロールを <DLZ-prefix>-dev-integration-datafactory001 データ ファクトリのマネージド ID アカウントに追加することです。 Data Factory で複数のデータ ソースから Purview アカウントにデータ カタログ資産情報を送信できるようにするには、次の手順を実行します。

  1. リソース グループ <DMLZ-prefix>-dev-governance で、<DMLZ-prefix>-dev-purview001 の Purview アカウントに移動します。

  2. Purview Studio で、[データ マップ] アイコンを選択し、[コレクション] を選択します。

  3. コレクションの [ロールの割り当て] タブを選択します。 [データ キュレーター] で<DLZ-prefix>-dev-integration-datafactory001 のマネージド ID を追加します。

    Screenshot that shows how to add data curators to your Purview role assignment.

Data Factory を Purview に接続する

アクセス許可が設定され、Purview でデータ ファクトリが表示されるようになりました。 次の手順では、<DMLZ-prefix>-dev-purview001<DLZ-prefix>-dev-integration-datafactory001 に接続します。

  1. Purview Studio で、[管理] アイコンを選択し、[Data Factory] を選択します。 [新規] を選択して Data Factory 接続を作成します。

  2. [New Data Factory connections] (新しい Data Factory 接続) ウィンドウで、Azure サブスクリプションを入力し、<DLZ-prefix>-dev-integration-datafactory001 のデータ ファクトリを選択します。 [OK] を選択します。

    Screenshot that shows what the Purview Studio pane looks like while selecting a new connection.

  3. <DLZ-prefix>-dev-integration-datafactory001 Data Factory Studio インスタンスの [管理]>[Azure Purview] で、[Azure Purview アカウント] を更新します。

    Data Lineage - Pipeline 統合に緑色の [接続済み] アイコンが表示されます。

    Screenshot that shows the Azure Data Factory Purview account pane with the data lineage pipeline connected.

ETL パイプラインを作成する

<DLZ-prefix>-dev-integration-datafactory001 に必要なアクセス許可が付与されたので、Data Factory でコピー アクティビティを作成して、SQL Database インスタンスから <DLZ-prefix>devraw の RAW ストレージ アカウントにデータを移動します。

AdatumCRM でデータのコピー ツールを使用する

このプロセスでは、AdatumCRM の SQL Database インスタンスから顧客データを抽出し、Data Lake Storage Gen2 ストレージにコピーします。

  1. Data Factory Studio で、[作成者] アイコンを選択し、[ファクトリ リソース] を選択します。 プラス記号 (+) を選択し、[データのコピー ツール] を選択します。

    Screenshot that shows the Copy Data tool under factory resources.

    データのコピー ツール ウィザードの各手順を完了します。

    1. パイプラインを 24 時間ごとに実行するトリガーを作成するには、[スケジュール] を選択します。

      Screenshot that shows how to schedule a Trigger to run periodically in CRM.

    2. このデータ ファクトリを <DP-prefix>-dev-sqlserver001 のサーバー上の AdatumCRM の SQL Database インスタンス (ソース) に接続するためのリンクされたサービスを作成するには、[新しい接続] を選択します。

      Screenshot that shows connecting to the AdatumCRM database.

      Note

      SQL Database インスタンスまたはストレージ アカウント内のデータへの接続またはアクセスでエラーが発生した場合は、Azure サブスクリプションのアクセス許可を確認してください。 データ ファクトリに必要な資格情報と、問題のあるリソースへのアクセス許可があることを確認します。

    3. 次の 3 つのテーブルを選択します。

      • SalesLT.Address
      • SalesLT.Customer
      • SalesLT.CustomerAddress

      Screenshot that shows the select tables pane with tables highlighted.

    4. <DLZ-prefix>devraw の Azure Data Lake Storage Gen2 ストレージ (宛先) にアクセスするための新しいリンクされたサービスを作成します。

      Screenshot that shows the raw storage connection.

    5. <DLZ-prefix>devraw のストレージ内のフォルダーを参照し、コピー先として [データ] を選択します。

      Screenshot that shows the destination as raw data.

    6. ファイル名のサフィックスを .csv に変更し、他の既定のオプションを使用します。

      Screenshot that shows the file name suffix field with CSV entered.

    7. 次のペインに移動し、[ファイルにヘッダーを追加] を選択します。

      Screenshot that shows how to add a header to a file.

    8. ウィザードが完了すると、[Deployment complete](デプロイ完了) ペインは次の例のようになります。

      Screenshot that shows the Copy Data tool deployment completed.

新しいパイプラインが [パイプライン] に一覧表示されます。

パイプラインを実行する

このプロセスでは、Data\CRM フォルダーに 3 つの .csv ファイルが作成されます。AdatumCRM データベース内の選択したテーブルごとに 1 つずつ作成されます。

  1. パイプライン CopyPipeline_CRM_to_Raw の名前を変更します。

  2. データセット CRM_Raw_Storage および CRM_DB の名前を変更します。

  3. [ファクトリ リソース] コマンド バーで、[すべて発行] を選択します。

  4. CopyPipeline_CRM_to_Raw パイプラインを選択し、パイプライン コマンド バーで [トリガー] を選択して、SQL Database から Data Lake Storage Gen2 に 3 つのテーブルをコピーします。

    Screenshot that shows how to use the trigger tool to copy data from the SQL Database to Data Lake Storage Gen2.

AdatumERP でデータのコピー ツールを使用する

次に、AdatumERP データベースからデータを抽出します。 データは ERP システムからの売上データを表します。

  1. 引き続き Data Factory Studio で、データのコピー ツールを使用して新しいパイプラインを作成します。 今回は、CRM データで行ったのと同じ方法で、売上データを AdatumERP から <DLZ-prefix>devraw のストレージ アカウント データ フォルダーに送信します。 同じ手順を実行しますが、ソースとして AdatumERP データベースを使用します。

    1. 1 時間ごとにトリガーするスケジュールを作成します。

    2. AdatumERP の SQL Database インスタンスへのリンクされたサービスを作成します。

      Screenshot that shows the Adatum ERP connection pane completed.

    3. 次の 7 つのテーブルを選択します。

      • SalesLT.Product
      • SalesLT.ProductCategory
      • SalesLT.ProductDescription
      • SalesLT.ProductModel
      • SalesLT.ProductModelProductDescription
      • SalesLT.SalesOrderDetail
      • SalesLT.SalesOrderHeader

      Screenshot that shows Adatum ERP Table options.

    4. <DLZ-prefix>devraw ストレージ アカウントに対する既存のリンクされたサービスを使用し、ファイル拡張子を .csv に設定します。

      Screenshot that shows a raw storage account with the file extension set to CSV.

    5. [ファイルにヘッダーを追加] を選択します。

      Screenshot that shows adding a header to a file under File format settings.

    6. ウィザードをもう一度完了し、パイプライン CopyPipeline_ERP_to_DevRaw の名前を変更します。 コマンド バーで、[すべて発行] を選択します。 最後に、この新しく作成されたパイプラインでトリガーを実行し、選択した 7 つのテーブルを SQL Database から Data Lake Storage Gen2 にコピーします。

これらの手順を完了すると、10 個の CSV ファイルが <DLZ-prefix>devraw の Data Lake Storage Gen2 ストレージに格納されます。 次のセクションでは、<DLZ-prefix>devencur の Data Lake Storage Gen2 ストレージ内のファイルをキュレーションします。

Data Lake Storage Gen2 でのデータのキュレーション

未加工の <DLZ-prefix>devraw の Data Lake Storage Gen2 ストレージに 10 個の CSV ファイルを作成することが完了したら、これらのファイルは、キュレーションされた <DLZ-prefix>devencur の Data Lake Storage Gen2 ストレージにコピーするときに、必要に応じて変換します。

引き続き Azure Data Factory を使用してこれらの新しいパイプラインを作成し、データ移動を調整します。

CRM を顧客データにキュレーションする

<DLZ-prefix>devrawData\CRM フォルダー内の CSV ファイルを取得するデータ フローを作成します。 ファイルを変換し、変換されたファイルを .parquet ファイル形式で <DLZ-prefix>devencurData\Customer フォルダーにコピーします。

  1. Azure Data Factoryで、データ ファクトリに移動し、[調整] (Orchestrate) を選択します。

    Screenshot that shows the Orchestrate button in Azure Data Factory.

  2. [全般] で、パイプライン Pipeline_transform_CRM に名前を付けます。

  3. [アクティビティ] ウィンドウで、 [移動と変換] を展開します。 データ フロー アクティビティをドラッグし、パイプライン キャンバスにドロップします。

    Screenshot that shows the Activities pane and Move and transform highlighted.

  4. [Adding Data Flow](データ フローの追加) で、[Create new data flow](新しいデータ フローの作成) を選択し、データ フロー CRM_to_Customer に名前を付けます。 [完了] を選択します。

    注意

    パイプライン キャンバスのコマンド バーで、[データ フローのデバッグ] を有効にします。 デバッグ モードでは、ライブの Apache Spark クラスターに対して変換ロジックを対話形式でテストできます。 データ フロー クラスターのウォームアップには 5 分から 7 分かかります。 データ フローの開発を開始する前に、デバッグを有効にすることをお勧めします。

    Screenshot that shows the Open Data Flow button.

    CRM_to_Customer データ フローのオプションの選択が完了すると、Pipeline_transform_CRM パイプラインは次の例のようになります。

    Screenshot that shows the pipeline transform CRM.

    データ フローは次の例のようになります。

    Screenshot that shows the CRM to Customer data flow.

  5. 次に、CRMAddress ソースのデータ フローで次の設定を変更します。

    1. Data Lake Storage Gen2 から新しいデータセットを作成します。 DelimitedText 形式を使用します。 データセットに DevRaw_CRM_Address という名前を付けます。

    2. リンクされたサービスを <DLZ-prefix>devraw に接続します。

    3. Data\CRM\SalesLTAddress.csv ファイルをソースとして選択します。

  6. ペアになっている CustAddress シンクのデータ フローで次の設定を変更します。

    1. DevEncur_Cust_Address という名前の新しいデータセットを作成します。

    2. シンクとして <DLZ-prefix>devencurData\Customer フォルダーを選択します。

    3. [Settings\Output to single file](単一ファイルへの設定/出力) で、ファイルを [Address.parquet] に変換します。

データ フロー構成の残りの部分では、コンポーネントごとに次の表の情報を使用します。 CRMAddressCustAddress は、最初の 2 行であることに注意してください。 これらは他のオブジェクトの例として使用します。

次の表のいずれにも含まれていない項目は、RemovePasswords のスキーマ修飾子です。 上のスクリーンショットは、この項目が CRMCustomerCustCustomer の間で変化することを示しています。 このスキーマ修飾子を追加するには、[設定の選択] に移動し、[PasswordHash][PasswordSalt] を削除します。

CRMCustomer は、.crv ファイルから 15 列のスキーマを返します。 CustCustomer は、スキーマ修飾子が 2 つのパスワード列を削除した後、13 列のみを書き込みます。

完全なテーブル

名前 オブジェクトの種類 データセットの名前 データ ストア 形式の種類 リンクされたサービス ファイルまたはフォルダー
CRMAddress source DevRaw_CRM_Address Azure Data Lake Storage Gen2 DelimitedText devraw Data\CRM\SalesLTAddress.csv
CustAddress sink DevEncur_Cust_Address Azure Data Lake Storage Gen2 Parquet devencur Data\Customer\Address.parquet
CRMCustomer source DevRaw_CRM_Customer Azure Data Lake Storage Gen2 DelimitedText devraw Data\CRM\SalesLTCustomer.csv
CustCustomer sink DevEncur_Cust_Customer Azure Data Lake Storage Gen2 Parquet devencur Data\Customer\Customer.parquet
CRMCustomerAddress source DevRaw_CRM_CustomerAddress Azure Data Lake Storage Gen2 DelimitedText devraw Data\CRM\SalesLTCustomerAddress.csv
CustCustomerAddress sink DevEncur_Cust_CustomerAddress Azure Data Lake Storage Gen2 Parquet devencur Data\Customer\CustomerAddress.parquet

ERP から販売へのテーブル

次に、同様の手順を繰り返して Pipeline_transform_ERP パイプラインを作成し、<DLZ-prefix>devrawData\ERP フォルダー内の .csv ファイルを変換する ERP_to_Sales データ フローを作成し、変換されたファイルを <DLZ-prefix>devencurData\Sales フォルダーにコピーします。

次の表では、ERP_to_Sales データ フローで作成するオブジェクトと、各オブジェクトに対して変更する必要がある設定を示します。 各 .csv ファイルは .parquet シンクにマップされます。

名前 オブジェクトの種類 データセットの名前 データ ストア 形式の種類 リンクされたサービス ファイルまたはフォルダー
ERPProduct source DevRaw_ERP_Product Azure Data Lake Storage Gen2 DelimitedText devraw Data\ERP\SalesLTProduct.csv
SalesProduct sink DevEncur_Sales_Product Azure Data Lake Storage Gen2 Parquet devencur Data\Sales\Product.parquet
ERPProductCategory source DevRaw_ERP_ProductCategory Azure Data Lake Storage Gen2 DelimitedText devraw Data\ERP\SalesLTProductCategory.csv
SalesProductCategory sink DevEncur_Sales_ProductCategory Azure Data Lake Storage Gen2 Parquet devencur Data\Sales\ProductCategory.parquet
ERPProductDescription source DevRaw_ERP_ProductDescription Azure Data Lake Storage Gen2 DelimitedText devraw Data\ERP\SalesLTProductDescription.csv
SalesProductDescription sink DevEncur_Sales_ProductDescription Azure Data Lake Storage Gen2 Parquet devencur Data\Sales\ProductDescription.parquet
ERPProductModel source DevRaw_ERP_ProductModel Azure Data Lake Storage Gen2 DelimitedText devraw Data\ERP\SalesLTProductModel.csv
SalesProductModel sink DevEncur_Sales_ProductModel Azure Data Lake Storage Gen2 Parquet devencur Data\Sales\ProductModel.parquet
ERPProductModelProductDescription source DevRaw_ERP_ProductModelProductDescription Azure Data Lake Storage Gen2 DelimitedText devraw Data\ERP\SalesLTProductModelProductDescription.csv
SalesProductModelProductDescription sink DevEncur_Sales_ProductModelProductDescription Azure Data Lake Storage Gen2 Parquet devencur Data\Sales\ProductModelProductDescription.parquet
ERPProductSalesOrderDetail source DevRaw_ERP_ProductSalesOrderDetail Azure Data Lake Storage Gen2 DelimitedText devraw Data\ERP\SalesLTProductSalesOrderDetail.csv
SalesProductSalesOrderDetail sink DevEncur_Sales_ProductSalesOrderDetail Azure Data Lake Storage Gen2 Parquet devencur Data\Sales\ProductSalesOrderDetail.parquet
ERPProductSalesOrderHeader source DevRaw_ERP_ProductSalesOrderHeader Azure Data Lake Storage Gen2 DelimitedText devraw Data\ERP\SalesLTProductSalesOrderHeader.csv
SalesProductSalesOrderHeader sink DevEncur_Sales_ProductSalesOrderHeader Azure Data Lake Storage Gen2 Parquet devencur Data\Sales\ProductSalesOrderHeader.parquet

次のステップ