Azure Purview : Azure SQL データベースの登録とスキャン

今回は [Azure SQL Database の登録とスキャン](https://docs.microsoft.com/ja-jp/azure/purview/register-scan-azure-sql-database) の内容を見ていきます。

# Azure SQL データベースへの接続

現在以下の 3 つの方法がサポートされています。

- SQL 認証
- サービス プリンシパル
- マネージド ID

SQL 認証とサービスプリンパルを使う場合、パスワードやシークレット管理に Key Vault サービスを使います。まずは Key Vault から準備します。

# Key Vault の作成

1\. Azure Portal より Key Vault リソースを追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/d9035be9-0296-fafd-ff8a-92626154600d.png)

2\. Azure Purview がシークレットを読める必要があるため、作成した Key Vault に移動し、アクセスポリシーより「アクセスポリシーの追加」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/bc39c167-3a70-59ca-58db-d9bc4c78d0bb.png)

3\. シークレットの取得を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/4849c8e7-f091-6b5f-a841-2dfefd125c62.png)

4\.「プリンシパルの選択」より Purview アカウントを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/8916f7b4-9a1c-dc87-b62a-c218595eeaf2.png)

5\.「追加」をクリックした後、「保存」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/935bc6fb-3d8a-9905-08ff-a008e2ef2d19.png)

6\. シークレットを選択し、「生成/インポート」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/205310a7-5ae7-ec4e-cd33-677f6e8587eb.png)

7\. 任意の名前を付けて、SQL ユーザーのパスワードを入力。「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/fa632e2b-9746-ca99-1980-5399310d3445.png)

# SQL Server でファイアウォールの設定

次に Purview からアクセスが行えるよう、SQL Server のファイアウォールを設定します。

1\. SQL Server リソースを開き、「ファイアウォールと仮想ネットワーク」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/4507bbc1-09df-cfe0-5eee-8f4866c2dda4.png)

2\.「Azure サービスおよびリソースにこのサーバーへのアクセスを許可する」を「はい」に変更して、「保存」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/9ca830a6-46ad-a54a-38c5-75c4665cfa98.png)

# SQL 認証で接続

はじめに SQL 認証で接続を試してみます。

1\. Azure Purview Studio より「Sources」を選択し、「Register」をクリック。ソースの一覧より「Azure SQL Databases」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/b889f3bf-4c3a-e9b8-6c33-b573dfd83c32.png)

2\. 任意の名前を入力し、スキャンしたいデータベースを選択。「Register」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/3e470c3e-0e7f-98c0-69b0-eb40fe7f7747.png)

3\. 登録が完了したらスキャンアイコンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/a9ae8e5b-5f1a-3150-be93-3251c172d119.png)

4\. Credential ドロップダウンより「New」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/f80fbf49-0ea6-59af-606e-85681573fd56.png)

5\. Key Vault connection ドロップダウンより「New」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/e58f1be6-4bd6-637a-c79a-1bb3ae5f2f52.png)

6\. 任意の名前を設定し、作成した Key Vault を選択。「Create」をクリック。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/4234b92f-e993-553b-82bd-03ed5061ec56.png)

7\. 権限付与の確認画面が出る。既に実施済みの為「Confirm」をクリック。

8\. 任意の名前を設定し、SQL 認証情報を入力して、「Create」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/33624a8b-df67-d71c-283e-5541e8e55331.png)

9\. 資格情報で作成したものを選択し、データベース名からスキャン対象のデータベースを選択。「Continue」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/fe25dbba-dac9-cf38-4618-2074861c712e.png)

10\. テーブルの一覧が表示されるため、スキャンしたいテーブルを選択して「Continue」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/d60feb1c-8ebf-b51b-030c-19d2c9069dfa.png)

11\. スキャンルールは既定のものを選択し、「Continue」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/1ecbff9d-924c-3ff9-af59-a2b26429539b.png)

12\. トリガーは「Once」を選択し、ウィザードを完了させる。

スキャンは他の資産同様、データ量により完了までの時間が変わります。またメタデータの作成は 24 時間以内に完了するようです。

# サービスプリンシパルで接続

次にサービスプリンシパルを試します。

## サービスプリンシパルの作成とシークレットの登録

1\. Azure ポータルより Azure Active Directory を選択し、「アプリの登録」を選択。「新規登録」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/d1497ddf-ceb0-0059-f3e0-a3cbbd64c78b.png)

2\. 任意の名前をつけて、「登録」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/13a1bffc-d5c2-a9e0-f6ba-2b60ccb5351a.png)

3\. 概要ページよりアプリケーション ID をコピーしておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/748dd76d-ff51-7e9a-b02c-9fec6134a855.png)

4\.「証明書とシークレット」を選択し、「新しいクライアントシークレット」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/ee329966-e68d-7f35-75f6-3845c7eb871c.png)

5\. 任意の有効期限を選択し、シークレットを発行。発行されたシークレットをコピー。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/4feb8ffd-2aa5-0a6a-5bc5-627a5903612e.png)

6\. Key Vault リソースで新しくシークレット追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/2e8aea87-f32d-9ab3-e7c2-d0343f26374a.png)

7\. 任意の名前をつけてシークレットを保存。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/619a2c8d-7180-4464-8094-4035e8400daf.png)

## SQL データベースでユーザー登録

Azure SQL データベースにサービスプリンシパルをユーザーとして登録します。またこの操作は Azure AD ユーザーで行う必要があります。

1\. SQL Server リソースより「Active Directory 管理者」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/93e42444-4574-2759-f601-26365525c9cf.png)

2\. 存在しない場合、もしくは使いたいユーザーがいない場合、「管理者の設定」をクリックし、ユーザーを追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/88738a03-3012-87a5-491b-88600ceaef70.png)

3\.「保存」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/a4d103eb-1dc2-2f0d-9289-9138ad093d35.png)

4\. 設定した Azure AD ユーザーで Azure SQL に接続。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/a0bd7e81-add5-479f-1b26-3db9b51fb702.png)

5\. 以下クエリを実行してサービスプリンシパルをユーザーとして登録。サービスプリンパル名は必要に応じて変更。

```
CREATE USER [purvewtestdb-sp] FROM EXTERNAL PROVIDER
GO

EXEC sp_addrolemember 'db_owner', [purvewtestdb-sp]
GO
```

## Azure Purview から接続

今回は先ほどと異なる方法で資格情報を登録してみます。

1\. Azure Purview Studio より「Management
Center」を選択し、「New」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/e0cf3884-ac66-4839-b0f2-f637b04fbcb4.png)

2\.「Authentication method」で「Service Principal」を選択し、必要な情報を入力。「Create」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/e0e8c35c-6c96-85a4-a211-637139f78481.png)

3\.「Sources」より Azure SQL のスキャンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/22bffdc8-d4c0-7e95-f5d2-de7fe676060e.png)

4\.「Credential」で登録したサービスプリンシパルを選択。「Test connection」を実行して接続できることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/0f8bf581-c911-51fb-ad83-1bb4f50c4651.png)

# マネージド ID で接続

マネージド ID を使う場合は、シークレット管理は必要ありません。そのため Key Vault も不要で、サービスプリンシパルと同様、データベースにユーザー登録をすればそれだけで使えます。

# スキャン結果の確認

スキャン結果は他の資産と同じように検索したりメタデータを付与したりできます。また Power BI を使ってデータを取得することも可能です。

1\. Azure Purview Studio のホーム画面より「Browse assets」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/359a7c50-0c5f-2dd6-7670-fd5ebc4afc9d.png)

2\. 資産の一覧より Azure SQL Database を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/dbcf15ba-2f0a-f1c0-fb23-51b744c2e7b7.png)

3\. スキャンしたデータベースが表示されていることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/f6b1e3de-04fd-9953-c86c-7531e95cf63a.png)

4\. SalesLT スキーマを選択し、テーブルが存在する事を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/73e61eea-820c-3bda-c68b-f7d1c1dc0af4.png)

5\. 任意のテーブルを開き、情報やスキーマなどを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/e265ae96-82f8-6fcf-dfd0-9aff813e3068.png)

6\.「Open in Power BI Desktop」をクリック。「Get started」をクリックすると pbids ファイルがダウンロードされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/6a70a80f-b2ff-50ca-c336-9234cef43d9a.png)

7\. ダウンロードしたファイルを開くと Power BI Desktop が起動。資格情報を入力して接続。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/dd47e72e-21da-d7b2-9580-2a2f7c76bd10.png)

8\. データベースに接続されるので、任意のテーブルを選択してデータを読み込み。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/2a8edf29-03ac-ab92-1b83-3d1c962f1c67.png)

# Azure Synapse Analytics

現時点で Synapse Analytics は Dedicated SQL のスキャンしか対応していないため、登録とスキャンの手順、および行えることはほぼ Azure SQL と同じです。既に Synapse アカウントをお持ちの場合は是非試してください。

[参考:Azure Synapse Analytics の登録とスキャン](https://docs.microsoft.com/ja-jp/azure/purview/register-scan-azure-synapse-analytics)

次回は Azure Cosmos DB の登録とスキャンを試してみます。

[次の記事へ](https://qiita.com/kenakamu/items/bf6cb08174351a9404d4)
[前の記事へ](https://qiita.com/kenakamu/items/a2ca89831642591b0cac)