ユースケース: 名前空間サービス アカウントを使用したアクセス制御

このページでは、Cloud Storage から BigQuery にデータを移行するときに、名前空間レベルで Google Cloud リソースへのアクセスを制御するユースケースについて説明します。

Google Cloud リソースへのアクセスを制御するために、Cloud Data Fusion の名前空間はデフォルトで Cloud Data Fusion API サービス エージェントを使用します。

データの分離を適切に行うには、カスタマイズされた IAM サービス アカウント(Per Namespace Service Account と呼ばれる)を各名前空間に関連付けます。カスタマイズされた IAM サービス アカウントは名前空間ごとに異なる場合があり、パイプラインのプレビュー、Wrangler、パイプラインの検証など、Cloud Data Fusion でのパイプライン設計時のオペレーションのために、名前空間の間の Google Cloud リソースへのアクセスを制御できます。

詳細については、名前空間サービス アカウントを使用したアクセス制御をご覧ください。

シナリオ

このユースケースでは、マーケティング部門が Cloud Data Fusion を使用して Cloud Storage から BigQuery にデータを移行します。

Cloud Storage ソース、Wrangler 変換、BigQuery シンクを示すデータ パイプライン。

マーケティング部門には A、B、C の 3 つのチームがあります。目標は、各チームに対応する Cloud Data Fusion 名前空間(A、B、C)を介して Cloud Storage 内のデータアクセスを制御する構造化されたアプローチを確立することです。

解決策

次の手順は、名前空間サービス アカウントを使用して Google Cloud リソースへのアクセスを制御し、異なるチームのデータストア間の不正アクセスを防ぐ方法を示しています。

Identity and Access Management サービス アカウントを各名前空間に関連付ける

各チームの名前空間に IAM サービス アカウントを構成します(名前空間サービス アカウントを構成するを参照)。

  1. チーム A 用のカスタマイズされたサービス アカウントを追加して、アクセス制御を設定します(例: team-a@pipeline-design-time-project.iam.gserviceaccount.com)。

    チーム A のサービス アカウントを構成します。
    図 1: チーム A 用のカスタマイズされたサービス アカウントを追加する。
  2. チーム B と C の構成手順を繰り返して、同様のカスタマイズされたサービス アカウントを使用してアクセス制御を設定します。

Cloud Storage バケットへのアクセスを制限する

適切な権限を付与して、Cloud Storage バケットへのアクセスを制限します。

  1. IAM サービス アカウントに、プロジェクト内の Cloud Storage バケットの一覧表示に必要な storage.buckets.list 権限を付与します。 詳細については、バケットの一覧表示をご覧ください。
  2. IAM サービス アカウントに、特定のバケット内のオブジェクトへのアクセス権を付与します。

    たとえば、Storage オブジェクト閲覧者ロールを、バケット team_a1 の名前空間 team_A に関連付けられた IAM サービス アカウントに付与します。この権限により、チーム A は分離された設計時の環境で、バケット内のオブジェクトとマネージド フォルダおよびそのメタデータを表示して一覧表示できます。

    [バケットの詳細] ページでロールを付与します。
    図 2: Cloud Storage の [バケット] ページで、チームをプリンシパルとして追加し、Storage オブジェクトのユーザーロールを割り当てます。

それぞれの名前空間に Cloud Storage 接続を作成する

各チームの名前空間に Cloud Storage 接続を作成します。

  1. Google Cloud コンソールで Cloud Data Fusion の [インスタンス] ページに移動し、Cloud Data Fusion ウェブ インターフェースでインスタンスを開きます。

    [インスタンス] に移動

  2. [システム管理者] > [設定] > [名前空間] をクリックします。

  3. 使用する名前空間(チーム A の名前空間など)をクリックします。

  4. [接続] タブをクリックし、[ネットワークを追加] をクリックします。

  5. [GCS] を選択し、接続を構成します。

    Cloud Data Fusion で Cloud Storage 接続を作成する
    図 3: 名前空間の Cloud Storage 接続を構成します。
  6. 上記の手順を繰り返して、すべての名前空間に Cloud Storage 接続を作成します。各チームは、設計時のオペレーションのために、そのリソースの分離されたコピーを操作できます。

名前空間ごとに設計時の分離を検証する

チーム A は、それぞれの名前空間の Cloud Storage バケットにアクセスすることで、設計における分離を検証できます。

  1. Google Cloud コンソールで Cloud Data Fusion の [インスタンス] ページに移動し、Cloud Data Fusion ウェブ インターフェースでインスタンスを開きます。

    [インスタンス] に移動

  2. [システム管理者] > [設定] > [名前空間] をクリックします。

  3. 名前空間を選択します(Team A の名前空間、team_A など)。

  4. [メニュー > Wrangler] をクリックします。

  5. [GCS] をクリックします。

  6. バケットリストで、team_a1 バケットをクリックします。

    • チーム A の名前空間には storage.buckets.list 権限が付与されているため、バケットのリストを表示できます。

    • チーム A の名前空間には Storage オブジェクト閲覧者のロールがあるため、バケットをクリックするとバケットの内容を表示できます。

    チーム A の Cloud Storage 接続を検証します。 チーム A がバケットにアクセスできることを確認します。
    図 4 と 5: チーム A が適切なストレージ バケットにアクセスできることを確認します。
  7. バケットリストに戻り、team_b1 バケットまたは team_c1 バケットをクリックします。 名前空間サービス アカウントを使用してチーム A 用の設計時リソースが分離されているため、アクセスは制限されます。

    チーム A が制限付きリソースにアクセスできないことを確認します。
    図 6: チーム A がチーム B と C ストレージ バケットにアクセスできないことを確認します。

次のステップ