Microsoft Purview で Azure Synapse Analytics ワークスペースに接続して管理する

この記事では、Azure Synapse Analytics ワークスペースを登録する方法について説明します。 また、Microsoft Purview で Azure Synapse Analytics ワークスペースを認証して操作する方法についても説明します。 Microsoft Purview の詳細については、 入門記事を参照してください。

サポートされている機能

メタデータ抽出 フル スキャン 増分スキャン スコープスキャン 分類 ラベル付け アクセス ポリシー 系統 データ共有 ライブ ビュー
はい いいえ はい いいえ 不要 はい - パイプライン 不要 不要

現在、Azure Synapse Analytics Lake データベースはサポートされていません。

外部テーブルの場合、Azure Synapse Analytics は現在、それらのテーブルと元のファイルの関係をキャプチャしていません。

前提条件

登録

次の手順では、 Microsoft Purview ガバナンス ポータルを使用して、Microsoft Purview に Azure Synapse Analytics ワークスペースを登録する方法について説明します。

Azure Synapse Analytics ワークスペースで少なくともデータ 閲覧者ロールを持ち、Microsoft Purview のデータ ソース管理者でもあるユーザーのみが Azure Synapse Analytics ワークスペースを登録できます。

  1. Microsoft Purview ガバナンス ポータルを開き、Microsoft Purview アカウントを選択します。

    または、 Azure portal に移動し、Microsoft Purview アカウントを検索して選択し、[ Microsoft Purview ガバナンス ポータル ] ボタンを選択します。

  2. 左側のウィンドウで、[ソース] を選択 します

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

  4. [ ソースの登録] で、[ Azure Synapse Analytics (複数)] を選択します。

  5. [続行] を選択します。

    Azure Synapse Analytics を含む Microsoft Purview のソースの選択のスクリーンショット。

  6. [ ソースの登録 (Azure Synapse Analytics)] ページで、次の操作を行います。

    1. [ 名前] に、データ カタログに一覧表示するデータ ソースの名前を入力します。

    2. 必要に応じて、 Azure サブスクリプションの場合は、フィルター処理するサブスクリプションを選択します。

    3. [ ワークスペース名] で、操作しているワークスペースを選択します。

      SQL エンドポイントのボックスは、ワークスペースの選択に基づいて自動的に入力されます。

    4. [ コレクションの選択] で、使用しているコレクションを選択するか、新しいコレクションを作成します。

    5. [ 登録] を選択して、データ ソースの登録を完了します。

    Azure Synapse ソースに関する詳細を入力するためのページのスクリーンショット。

スキャン

Azure Synapse Analytics ワークスペースをスキャンして資産を自動的に識別し、データを分類するには、次の手順に従います。 一般的なスキャンの詳細については、「 Microsoft Purview でのスキャンとインジェスト」を参照してください。

  1. 専用リソースまたはサーバーレス リソースを列挙するための認証を設定します。 この手順により、Microsoft Purview はワークスペース資産を列挙し、スキャンを実行できます。
  2. アクセス許可を適用して、ワークスペースの内容をスキャンします
  3. Microsoft Purview へのアクセスを許可するようにネットワークが設定されていることを確認します。

列挙認証

認証を設定するには、次の手順に従います。 指定したロールを追加するには、所有者またはユーザー アクセス管理者である必要があります。

専用 SQL データベース リソースを列挙するための認証

  1. Azure portal で、Azure Synapse Analytics ワークスペース リソースに移動します。
  2. 左側のウィンドウで、[ アクセス制御 (IAM)] を選択します。
  3. [追加] ボタンを選択します。
  4. 閲覧者ロールを設定し、マネージド サービス ID (MSI) を表す Microsoft Purview アカウント名を入力します。
  5. [ 保存] を 選択して、ロールの割り当てを完了します。

注:

Microsoft Purview アカウントで複数の Azure Synapse Analytics ワークスペースを登録してスキャンする予定の場合は、リソース グループやサブスクリプションなど、より高いレベルからロールを割り当てることもできます。

サーバーレス SQL データベース リソースを列挙するための認証

Microsoft Purview がサーバーレス SQL データベース リソースを列挙できるようにするには、認証を設定する必要がある場所が 3 つあります。

Azure Synapse Analytics ワークスペースの認証を設定するには:

  1. Azure portal で、Azure Synapse Analytics ワークスペース リソースに移動します。
  2. 左側のウィンドウで、[ アクセス制御 (IAM)] を選択します。
  3. [追加] ボタンを選択します。
  4. 閲覧者ロールを設定し、MSI を表す Microsoft Purview アカウント名を入力します。
  5. [ 保存] を 選択して、ロールの割り当てを完了します。

ストレージ アカウントの認証を設定するには:

  1. Azure portal で、Azure Synapse Analytics ワークスペースに関連付けられているストレージ アカウントを含むリソース グループまたはサブスクリプションに移動します。
  2. 左側のウィンドウで、[ アクセス制御 (IAM)] を選択します。
  3. [追加] ボタンを選択します。
  4. [ストレージ BLOB データ閲覧者] ロールを設定し、[選択] ボックスに Microsoft Purview アカウント名 (MSI を表します) 入力します。
  5. [ 保存] を 選択して、ロールの割り当てを完了します。

Azure Synapse Analytics サーバーレス データベースの認証を設定するには:

  1. Azure Synapse Analytics ワークスペースに移動し、Synapse Studio を開きます。

  2. 左側のウィンドウで、[データ] を選択 します

  3. いずれかのデータベースの横にある省略記号 (...) を選択し、新しい SQL スクリプトを開始します。

  4. SQL スクリプトで次のコマンドを実行して、サーバーレス SQL データベースに Microsoft Purview アカウント MSI (アカウント名で表される) を追加します。

    CREATE LOGIN [PurviewAccountName] FROM EXTERNAL PROVIDER;
    

アクセス許可を適用してワークスペースの内容をスキャンする

Azure Synapse Analytics ワークスペースから登録してスキャンする各 SQL データベースで認証を設定する必要があります。 アクセス許可を適用する手順については、次のシナリオから選択します。

重要

サーバーレス データベースの次の手順 、レプリケートされたデータベースには適用されません。 Azure Synapse Analytics では、Spark データベースからレプリケートされるサーバーレス データベースは現在、読み取り専用です。 詳細については、「 レプリケートされたデータベースに対する操作が許可されていません」を参照してください。

専用 SQL データベースにマネージド ID を使用する

次の手順でコマンドを実行するには、ワークスペースの Azure Synapse 管理者である必要があります。 Azure Synapse Analytics のアクセス許可の詳細については、「 Azure Synapse Analytics ワークスペースのアクセス制御を設定する」を参照してください。

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

  2. [ データ ] セクションに移動し、専用 SQL データベースのいずれかを探します。

  3. データベース名の横にある省略記号 (...) を選択し、新しい SQL スクリプトを開始します。

  4. SQL スクリプトで次のコマンドを実行して、専用 SQL データベースと同様 db_datareader に Microsoft Purview アカウント MSI (アカウント名で表される) を追加します。

    CREATE USER [PurviewAccountName] FROM EXTERNAL PROVIDER
    GO
    
    EXEC sp_addrolemember 'db_datareader', [PurviewAccountName]
    GO
    
  5. SQL スクリプトで次のコマンドを実行して、ロールの追加を確認します。

    SELECT p.name AS UserName, r.name AS RoleName
    FROM sys.database_principals p
    LEFT JOIN sys.database_role_members rm ON p.principal_id = rm.member_principal_id
    LEFT JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id
    WHERE p.authentication_type_desc = 'EXTERNAL'
    ORDER BY p.name;
    

スキャンするデータベースごとに同じ手順に従います。

サーバーレス SQL データベースにマネージド ID を使用する

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

  2. [ データ ] セクションに移動し、いずれかの SQL データベースを選択します。

  3. データベース名の横にある省略記号 (...) を選択し、新しい SQL スクリプトを開始します。

  4. SQL スクリプトで次のコマンドを実行して、サーバーレス SQL データベースと同様 db_datareader に Microsoft Purview アカウント MSI (アカウント名で表される) を追加します。

    CREATE USER [PurviewAccountName] FOR LOGIN [PurviewAccountName];
    ALTER ROLE db_datareader ADD MEMBER [PurviewAccountName]; 
    
  5. SQL スクリプトで次のコマンドを実行して、ロールの追加を確認します。

    SELECT p.name AS UserName, r.name AS RoleName
    FROM sys.database_principals p
    LEFT JOIN sys.database_role_members rm ON p.principal_id = rm.member_principal_id
    LEFT JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id
    WHERE p.authentication_type_desc = 'EXTERNAL'
    ORDER BY p.name;
    

スキャンするデータベースごとに同じ手順に従います。

外部テーブルに資格情報を使用するアクセス許可を付与する

Azure Synapse Analytics ワークスペースに外部テーブルがある場合は、外部テーブルのスコープ資格情報に対する Microsoft Purview マネージド ID 参照アクセス許可を付与する必要があります。 [参照] アクセス許可を使用すると、Microsoft Purview は外部テーブルからデータを読み取ることができます。

  1. SQL スクリプトで次のコマンドを実行して、データベース スコープの資格情報の一覧を取得します。

    Select name, credential_identity
    from sys.database_scoped_credentials;
    
  2. データベース スコープの資格情報へのアクセスを許可するには、次のコマンドを実行します。 を、データベース スコープの資格情報の名前に置き換えます scoped_credential

    GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[scoped_credential] TO [PurviewAccountName];
    
  3. アクセス許可の割り当てを確認するには、SQL スクリプトで次のコマンドを実行します。

    SELECT dp.permission_name, dp.grantee_principal_id, p.name AS grantee_principal_name
    FROM sys.database_permissions AS dp
    JOIN sys.database_principals AS p ON dp.grantee_principal_id = p.principal_id
    JOIN sys.database_scoped_credentials AS c ON dp.major_id = c.credential_id;
    

Azure Synapse Analytics ワークスペースのファイアウォール アクセスを設定する

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

  2. 左側のウィンドウで、[ ネットワーク] を選択します。

  3. [ Azure サービスとリソースがこのワークスペース コントロールにアクセスできるようにする ] で、[オン] を選択 します

  4. [保存] を選択します。

重要

Azure Synapse Analytics ワークスペースで Azure サービスとリソースによるこのワークスペースへのアクセスを許可 できない場合、Microsoft Purview ガバナンス ポータルでスキャンを設定すると、サーバーレス データベース列挙エラーが発生します。 この場合は、[ 手動で入力 ] オプションを選択して、スキャンするデータベース名を指定し、 API を使用してスキャンを続行または設定できます。

スキャンを作成して実行する

  1. Microsoft Purview ガバナンス ポータルの左側のウィンドウで、[データ マップ] を選択します。

  2. 登録したデータ ソースを選択します。

  3. [ 詳細の表示] を選択し、[ 新しいスキャン] を選択します。 または、ソース タイルの [クイック アクションのスキャン ] アイコンを選択することもできます。

  4. [ スキャン の詳細] ウィンドウの [名前 ] ボックスに、スキャンの名前を入力します。

注:

統合ランタイムの場合、 Managed VNet Runtime を使用している場合は、必要な Managed Private Enpoints が作成されていることを確認します。

  • サーバーレス プールをスキャンするには、Synapse ワークスペースの sqlOnDemand サブリソースの種類のマネージド プライベート エンポイントを作成します。
  • 専用プールをスキャンするには、Synapse ワークスペースの sql サブリソースの種類のマネージド プライベート エンポイントを作成します。
  • サーバーレス プールと専用プールの両方をスキャンする場合は、マネージド プライベート エンドポイントの両方を作成し、ウィザードで 1 つを選択します。
  1. [ 資格情報 ] ドロップダウン リストで、データ ソース内のリソースに接続する資格情報を選択します。

  2. [ データベースの選択方法] で、[ Synapse ワークスペースから ] または [ 手動で入力] を選択します。 既定では、Microsoft Purview はワークスペースの下にあるデータベースの列挙を試み、スキャンするデータベースを選択できます。

    Azure Synapse ソース スキャンの詳細ペインのスクリーンショット。

    Microsoft Purview がサーバーレス データベースの読み込みに失敗したことを示すエラーが発生した場合は、[Enter] を 手動で 選択して、データベースの種類 (専用またはサーバーレス) と対応するデータベース名を指定できます。

    スキャンを設定するときにデータベース名を手動で入力するための選択のスクリーンショット。

  3. [ 接続のテスト] を選択して、設定を検証します。 エラーが発生した場合は、レポート ページで接続状態にマウス ポインターを合わせて詳細を表示します。

  4. [続行] を選択します。

  5. [Azure Synapse SQL] の種類の [スキャン ルール セット] を選択します。 スキャン ルール セットをインラインで作成することもできます。

  6. スキャン トリガーを選択します。 毎週または毎月または 1 回実行するようにスケジュールできます。

  7. スキャンを確認し、[ 保存 ] を選択してセットアップを完了します。

スキャンとスキャンの実行を表示する

既存のスキャンを表示するには:

  1. Microsoft Purview ガバナンス ポータルに移動します。 左側のウィンドウで、[ データ マップ] を選択します。
  2. データ ソースを選択します。 [最近のスキャン] で、そのデータ ソースの既存の スキャンの一覧を表示したり、[ スキャン ] タブですべてのスキャンを表示したりできます。
  3. 表示する結果を含むスキャンを選択します。 このウィンドウには、以前のすべてのスキャン実行と、各スキャン実行の状態とメトリックが表示されます。
  4. 実行 ID を選択して、スキャン実行の詳細をチェックします

スキャンを管理する

スキャンを編集、取り消し、または削除するには:

  1. Microsoft Purview ガバナンス ポータルに移動します。 左側のウィンドウで、[ データ マップ] を選択します。

  2. データ ソースを選択します。 [最近のスキャン] で、そのデータ ソースの既存の スキャンの一覧を表示したり、[ スキャン ] タブですべてのスキャンを表示したりできます。

  3. 管理するスキャンを選択します。 次のことを実行できます。

    • [スキャンの編集] を選択して スキャンを編集します
    • [スキャンの実行の取り消し] を選択して、進行中 のスキャンを取り消します
    • [スキャンの削除] を選択して スキャンを削除します

注:

  • スキャンを削除しても、以前のスキャンから作成されたカタログ資産は削除されません。
  • ソース テーブルが変更され、Microsoft Purview の [スキーマ] タブで説明を編集した後にソース テーブルを再スキャンした場合、資産は スキーマ の変更で更新されなくなります。

API を使用してスキャンを設定する

Microsoft Purview REST API を使用してサーバーレス データベースのスキャンを作成する例を次に示します。 かっこ ({}) のプレースホルダーを実際の設定に置き換えます。 詳細については、「 スキャン - 作成または更新」を参照してください。

PUT https://{purview_account_name}.purview.azure.com/scan/datasources/<data_source_name>/scans/{scan_name}?api-version=2022-02-01-preview

次のコードでは、 collection_id はコレクションのフレンドリ名ではなく、5 文字の ID です。 ルート コレクションの場合、 collection_id はコレクションの名前です。 すべてのサブコレクションの場合、代わりに次のいずれかの場所で見つけることができる ID です。

  • Microsoft Purview ガバナンス ポータルの URL。 コレクションを選択し、URL をチェックして collection=と表示される場所を見つけます。 それがあなたの ID です。 次の例では、 Investment コレクションの ID は 50h55c です

    URL のコレクション ID のスクリーンショット。

  • ルート コレクションの子コレクション名を一覧表示 してコレクションを一覧表示し、フレンドリ名の代わりに名前を使用できます。

{
    "properties":{
        "resourceTypes":{
            "AzureSynapseServerlessSql":{
                "scanRulesetName":"AzureSynapseSQL",
                "scanRulesetType":"System",
                "resourceNameFilter":{
                    "resources":[ "{serverless_database_name_1}", "{serverless_database_name_2}", ...]
                }
            }
        },
        "credential":{
            "referenceName":"{credential_name}",
            "credentialType":"SqlAuth | ServicePrincipal | ManagedIdentity (if UAMI authentication)"
        },
        "collection":{
            "referenceName":"{collection_id}",
            "type":"CollectionReference"
        },
        "connectedVia":{
            "referenceName":"{integration_runtime_name}",
            "integrationRuntimeType":"SelfHosted (if self-hosted IR) | Managed (if VNet IR)"
        }
    },
    "kind":"AzureSynapseWorkspaceCredential | AzureSynapseWorkspaceMsi (if system-assigned managed identity authentication)"
}

スキャンをスケジュールするには、スキャンの作成後にそのトリガーを作成します。 詳細については、「 トリガー - トリガーの作成」を参照してください。

トラブルシューティング

スキャンに問題がある場合:

次の手順

ソースを登録したので、次のガイドを使用して、Microsoft Purview とデータの詳細を確認します。