コンテンツまでスキップ

20.メタデータを同期する(Knowledge Catalog)

1. データソースの作成

Mashuに新しいデータソースを作成します。データソースのタイプ選択画面で、「Knowledge Catalog」を選択してください。

datasource_dataplexuniversal_1

2. Knowledge Catalog への接続情報設定

認証方式について

Knowledge Catalog への接続は、以下の2種類の認証方式に対応しています。

認証方式 概要
Workload Identity 連携 サービスアカウントキーを発行・管理することなく、AWS と GCP 間のフェデレーション認証を使用してセキュアに接続する方法です。
※ Workload Identity 連携は、サービスアカウントキーの漏洩リスクを排除し、一時的なトークンで認証するより安全な方式です。セキュリティを重視される場合はこちらをご利用ください。

サービスアカウントキー(非推奨) GCP で発行したサービスアカウントキーファイルを Mashu にアップロードして認証する方法です。
Workload Identity 連携を使用した接続設定

Workload Identity 連携を使用するには、GCP 側での事前設定と Mashu 側への接続情報の入力が必要です。以下の手順に沿って設定してください。

ステップ 1: Mashu の組織 ID を確認する
GCP 側の設定で組織 ID が必要になります。事前に確認しておいてください。Mashu のトップページの「組織設定」タブを開き、「組織 ID」をコピーします。

datasource_dataplexuniversal_8

ステップ 2: GCP で Workload Identity プールとプロバイダーを作成する
GCP コンソール にログインし、Workload Identity プールとプロバイダーを作成します。

2-1. Workload Identity プールの作成

  1. GCP コンソール左上のナビゲーションメニューから「IAM と管理」→「Workload Identity 連携」を開きます。

  2. 「プールを作成」ボタンをクリックします。

  3. 以下の項目を入力し、「続行」をクリックします。

    • 名前: 任意(例: mashu)プールIDとして使用されます
    • 説明: 任意
  4. 「続行」をクリックしてプロバイダー設定に進みます。
datasource_dataplexuniversal_9

2-2.  Workload Identity プロバイダーの作成
プール作成後、続けてプロバイダーを設定します。
  1. プロバイダーの種類として「AWS」を選択します。
  2. 以下の項目を入力します。
    • プロバイダー: AWS 
    • プロバイダー名: 任意(例: mashu-provider)プロバイダー ID として使用されます
    • AWS アカウント ID: 717777571607(Mashu の AWS アカウントID です)
  3. 「続行」をクリックして属性の設定に進みます。
datasource_dataplexuniversal_10

2-3. 属性のマッピングと条件の設定

  1. 「属性のマッピング」に以下を追加します。

    • Googleの属性: google.subject
    • 外部IdPの属性: assertion.arn
  2. 「属性条件」の入力欄に以下の CEL 式を入力します。
    「組織ID」 の部分をステップ 1 で確認した自身の Mashu 組織 ID に置き換えてください。
    google.subject == 'arn:aws:sts::717777571607:assumed-role/GCPRole/[組織ID]'

    この設定は必須です。 属性条件を設定しないと、他の Mashu 組織からのアクセスも許可されてしまう可能性があります。

  3. 「保存」をクリックしてプール・プロバイダーの作成を完了します。

datasource_dataplexuniversal_11

ステップ 3: GCP サービスアカウントを作成し、権限を付与する

Mashu がメタデータの読み取りに使用する GCP サービスアカウントを作成します。

3-1. サービスアカウントの作成

  1. GCP コンソールの「IAM と管理」→「サービスアカウント」を開きます。

  2. 「サービスアカウントを作成」をクリックします。
  3. サービスアカウント名に任意の名前(例: mashu-sync)を入力し、「作成して続行」をクリックします。
  4. Knowledge Catalog からのメタデータ読み取りに必要な権限を付与します(詳細は後述の「必要な GCP 権限」を参照)。
  5. 「完了」をクリックします。

datasource_dataplexuniversal_12

3-2. サービスアカウントへの Workload Identity ユーザー権限の付与

Mashu がこのサービスアカウントの権限を借用できるよう設定します。

  1. 作成したサービスアカウントの一覧から対象のアカウントをクリックし、詳細画面を開きます。
  2. 「アクセス権を持つプリンシパル」タブを開き、「アクセスを許可」をクリックします。
  3. 「新しいプリンシパル」の入力欄に以下の値を入力します。
    「プロジェクト番号」、「プールID」、「組織ID」 をそれぞれ置き換えてください。
    principal://iam.googleapis.com/projects/[プロジェクト番号]/locations/global/workloadIdentityPools/[プールID]/subject/arn:aws:sts::717777571607:assumed-role/GCPRole/[組織ID]
    ※ プロジェクト番号は GCP コンソール上部のプロジェクト選択メニューで確認できる数値(例: 123456789012)です。プロジェクト ID(文字列)とは異なります。
  4. ロールに「Workload Identity ユーザー」(roles/iam.workloadIdentityUser)を選択します。
  5. 「保存」をクリックします。
datasource_dataplexuniversal_13

ステップ 4: Mashu の接続設定に情報を入力する

GCP 側の設定が完了したら、Mashu のデータソース画面「接続設定」タブで認証方式として「Workload Identity 連携」を選択し、以下の情報を入力します。

  • 認証方式の設定:Workload Identity 連携 を選択します。
  • Workload Identity プールID:ステップ 2 で作成したプールの ID(例: mashu)
  • Workload Identity プロバイダーID:ステップ 2 で作成したプロバイダーの ID(例: aws-provider)
  • サービスアカウントメールアドレス:ステップ 3 で作成したサービスアカウントのメールアドレス(例: mashu-sync@YOUR_PROJECT.iam.gserviceaccount.com)
  • ロケーション(複数指定可):同期対象のロケーション(例: asia-northeast1)。省略した場合はすべてのロケーションが対象になります。
datasource_dataplexuniversal_14
サービスアカウントキーを使用した接続設定
  • 認証方式の設定: サービスアカウントキー(非推奨)を選択します。
  • サービスアカウントキー(JSON): GCPのサービスアカウントキー(JSON形式)をアップロードします。このキーは適切に安全管理してください。
  • ロケーション(複数指定可): メタデータを同期したいGCPのロケーション(例: asia-northeast1)を指定します。指定したロケーションのみが同期対象となります。
    ※ ロケーションを指定しない場合、すべてのロケーションが同期対象になります。

datasource_dataplexuniversal_2

3. 接続設定の保存とシステム選択

Knowledge Catalog への接続情報を入力した後、「保存」ボタンをクリックします。GCPへの接続に成功すると、GCPプロジェクトで利用可能なソースシステム(BigQuery, CloudSQLなど)の一覧が表示されます。一覧から、メタデータを同期したいシステムを選択してください。

4. データソース設定(メタデータ同期オプション)

「データソース設定」タブでは、メタデータの同期に関する3つのオプション(マッピング、マージ、同期対象)を設定できます。

4.1. マッピング設定

Knowledge Catalog のエントリーおよびカラムの「説明」を、を、Mashuのどの項目(エイリアス/説明)に対応させるかを設定します。

  • エントリーの説明のマッピング先:
    • エイリアス: エントリーの説明をMashuメタデータの「エイリアス」にマッピングします。
    • 説明: エントリーの説明をMashuメタデータの「説明」にマッピングします。
    • エイリアスと説明: 両方にマッピングします。
  • カラムの説明のマッピング先:
    • エイリアス: カラムの説明をMashuカラムの「エイリアス」にマッピングします。
    • 説明: カラムの説明をMashuカラムの「説明」にマッピングします。
    • エイリアスと説明: 両方にマッピングします。

4.2. メタデータマージ設定

2回目以降の同期時に、Knowledge Catalog の「エントリーの説明」と「カラムの説明」でMashu上の「エイリアス」と「説明」を上書きする際のルールを設定します。

  • メタデータのエイリアスを上書きする: ONにすると、「エントリーの説明」でMashuのメタデータのエイリアスを上書きします。
  • メタデータの説明を上書きする: ONにすると、「エントリーの説明」でMashuのメタデータの説明を上書きします。
  • カラムのエイリアスを上書きする: ONにすると、「カラムの説明」でMashuのカラムのエイリアスを上書きします。
  • カラムの説明を上書きする: ONにすると、「カラムの説明」でMashuのカラムの説明を上書きします。

4.3. 同期対象設定

Knowledge Catalog から同期するエントリーの種類を選択します。チェックを外した種類のエントリーは同期されません。データソース画面の「データソース設定」タブで、同期するメタデータの種類を絞り込むための「タイプエイリアス」を指定します。

5. 必要な GCP 権限

手順2で使用するサービスアカウントには、Mashuが Knowledge Catalog からメタデータを読み取るためのIAM権限が必要です。GCPコンソールで、以下の権限をサービスアカウントに付与してください。

5.1 Knowledge Catalog に対する権限

  • dataplex.aspectTypes.get
  • dataplex.entries.get
  • dataplex.entryGroups.get
  • dataplex.entryTypes.get
  • dataplex.projects.search
  • dataplex.entryTypes.list
  • dataplex.aspectTypes.list

5.2 別プロジェクトのリソースに対する権限付与

サービスアカウントが所属するプロジェクトとは異なるプロジェクトのリソースを同期対象とする場合、対象プロジェクト側で当該サービスアカウントに必要な権限を付与する必要があります。

Mashuでは、サービスアカウントに対して権限が付与されているリソースのみをメタデータ同期の対象とします。権限が付与されていれば、サービスアカウントが所属するプロジェクトとは異なるプロジェクトのリソースも同期対象とします。

5.3 ソースシステムに対する権限

Knowledge Catalog がメタデータを収集している元のサービス(ソースシステム)に対しても、メタデータを読み取る権限が必要です。以下に、代表的なシステムで必要となる権限を示します。

BigQuery

  • bigquery.tables.get: テーブル・ビュー・マテリアライズドビューなどの同期に必要な権限
  • bigquery.models.getMetadata: モデルの同期に必要な権限
  • bigquery.routines.get: ルーチンの同期に必要な権限
  • bigquery.datasets.get: データセットの同期に必要な権限

CloudSQL

  • cloudsql.schemas.view

Cloud Pub/Sub

  • pubsub.topics.get

VertexAI

  • aiplatform.models.get

6. メタデータ同期の実行

最後に、「メタデータ」タブに移動し、「メタデータ同期」ボタンをクリックします。これにより、Knowledge Catalog から Mashu へのメタデータ同期が開始されます。