Dataplex にて他プロジェクトの BigQuery のテーブルに対して Data Profile を実施する方法

## 概要

Dataplex にて他プロジェクトの BigQuery のテーブルに対して Data Profile を実施する方法を共有します。

Data Profile 作成時に別のテーブルを指定することができますが、権限不足であるというエラーが発生します。

> An error occurred while creating the profile. Please try again.
> Permission denied for Dataplex Service Agent (service-241625037743@gcp-sa-dataplex.iam.gserviceaccount.com) to access source BigQuery table [project:publisher-01, dataset:publisher01, table:sample_01]. Dataplex Service Agent should have `bigquery.tables.get` permission for the specified table to create a DataScan for it. Please grant `bigquery.tables.get` permission for the specified table via appropriate IAM roles e.g. BigQuery Data Viewer.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d09ebea5-c9bc-cbf3-8c45-47005e9d6f61.png)


Dataplex Service Agent （Dataplex サービス アカウント）にアクセス権を付与が必要であるとドキュメントに記載されています。本記事では、その対応方法を提示します。ただし、付与するロールが`BigQuery Data Editor`であることから最小限の権限でない可能性があることに注意してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/b5257471-822b-1175-8a82-feea5c0227a2.png)

> BigQuery テーブルとデータ プロファイル スキャンが異なるプロジェクトにある場合、Dataplex サービス アカウントに、対応する BigQuery テーブルの読み取り権限を付与する必要があります。

引用元：[データ プロファイル スキャンを作成して使用する  | Dataplex  | Google Cloud](https://cloud.google.com/dataplex/docs/use-data-profiling?hl=ja#permissions)

## エラーの再現方法

### 1. Dataplex にて`Profile` -> `CREATE DATA PROFILE SCAN`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/b837f00a-ba44-d42d-2857-b3420cda50eb.png)

### 2. `Define scan`にて`ID`に適当な名前を入力し、`table`に他のプロジェクトのテーブルを指定して`CONTINUE`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/5aeb01a1-a446-7e1e-1872-13cf5092d6f4.png)

### 3. `Additional settings (optional)`をデフォルトのままで`CREATE`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a0fba843-2d03-5613-9e5e-126a4f8c5380.png)

### 4. エラーとなることを確認

> An error occurred while creating the profile. Please try again.
> Permission denied for Dataplex Service Agent (service-241625037743@gcp-sa-dataplex.iam.gserviceaccount.com) to access source BigQuery table [project:publisher-01, dataset:publisher01, table:sample_01]. Dataplex Service Agent should have `bigquery.tables.get` permission for the specified table to create a DataScan for it. Please grant `bigquery.tables.get` permission for the specified table via appropriate IAM roles e.g. BigQuery Data Viewer.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d6b39b29-b228-291d-36c4-82710c2a787b.png)

## エラーへの対応方法

### 1. Dataplex Service Agent に対して Scan 対象のオブジェクトへの権限付与を実施する方法

#### 1-1. `IAM & Admin` -> `IAM`を選択し、`GRANT ACCESS`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/3033ad11-388b-a6d9-90d8-e7ac57602273.png)

#### 1-2. `Add prinpals`にて Dataplex Service Agent を指定し、`Assign roles`にて`BigQuery Data Editor`を選び`SAVE`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/ac23dd16-f160-35b3-6467-4d135795bf73.png)

#### 1-3. Dataplex の画面に戻り、`CREATE`を再度選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a0fba843-2d03-5613-9e5e-126a4f8c5380.png)

#### 1-4. Data Profile が作成されたことを確認し、`RUN NOW`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/548720c0-28c5-9d3e-ac83-f685d050b8ff.png)

#### 1-5. 処理が完了することを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/824d778c-6bee-0e0f-6a83-6a679fae24dd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/5770b07c-3b85-915a-a7c2-a9c567fcdcd5.png)