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

このページでは、Cloud Data Fusion インスタンスで名前空間の Identity and Access Management(IAM)サービス アカウントを構成する方法について説明します。

Cloud Data Fusion の名前空間について

名前空間とは、Cloud Data Fusion インスタンスのアプリケーション、データ、および関連するメタデータの論理グループのことです。名前空間は、インスタンスの区分けであると考えることができます。エンティティと呼ばれるアプリケーションとデータは、複数の名前空間に個別に存在できます。1 つのインスタンスでは、1 つの名前空間が別の名前空間から独立してエンティティのデータとメタデータを格納します。

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

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

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

始める前に

  • Per Namespace Service Account は、Cloud Data Fusion バージョン 6.10.0 以降の RBAC 対応インスタンスでサポートされています。
  • Per Namespace Service Account は、Google Cloud リソースへのアクセスの制御と管理に使用されます。

必要なロールと権限

名前空間サービス アカウントをカスタマイズし、名前空間内でユーザーに権限を付与するために必要な権限を取得するには、プロジェクト内の Cloud Data Fusion インスタンスに対する Cloud Data Fusion 管理者roles/datafusion.admin)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

名前空間内のユーザーの権限を管理する

名前空間でユーザーが必要とする権限を付与するには、Cloud Data Fusion の事前定義ロールを付与します。詳細については、RBAC 対応インスタンスでユーザーが使用できる Cloud Data Fusion の事前定義ロールをご覧ください。

名前空間サービス アカウントを構成する

Console

名前空間のサービス アカウントを構成する手順は次のとおりです。

  1. 名前空間用の既存のサービス アカウントがない場合は、1 つ作成します
  2. Google Cloud コンソールで、Cloud Data Fusion の [インスタンス] ページに移動し、Cloud Data Fusion ウェブ インターフェースでインスタンスを開きます。

    [インスタンス] に移動

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

  4. 構成する名前空間をクリックします。

  5. [サービス アカウント] タブをクリックしてから、[サービス アカウントを追加] をクリックします。

    [サービス アカウントを追加] ボタン。

  6. Workload Identity ユーザーロール(roles/iam.workloadIdentityUser)を付与します。

    ロールを付与する手順は次のとおりです。

    1. [パイプライン設計サービス アカウント] フィールドに、サービス アカウントのメールアドレスを入力します(例: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com)。
    2. 表示されるダイアログの指示に沿って操作します。
  7. サービス アカウントの設定を完了するには、Cloud Data Fusion インスタンスの名前空間に戻り、[保存] をクリックします。

  8. この手順を繰り返して、名前空間ごとにサービス アカウントを構成します。

REST API

  1. Workload Identity ユーザーロール(roles/iam.workloadIdentityUser)を付与します。

    ロールを付与する手順は次のとおりです。

    1. 次の環境変数を設定します。

      export TENANT_PROJECT_ID=TENANT_PROJECT
      export GSA_PROJECT_ID=SERVICE_ACCOUNT_PROJECT
      

      次のように置き換えます。

      • TENANT_PROJECT: テナント プロジェクト ID。これを確認するには、[インスタンス] ページに移動し、インスタンス名をクリックします。ID は [インスタンスの詳細] ページに表示されます。

        [インスタンス] に移動

      • SERVICE_ACCOUNT_PROJECT: IAM サービス アカウントが配置されている Google Cloud プロジェクト ID。

    2. Workload Identity ユーザーロールを付与します。

      gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser
          --member "serviceAccount:${TENANT_PROJECT_ID}.svc.id.goog[default/NAMESPACE_IDENTITY]" SERVICE_ACCOUNT_EMAIL \
          --project ${GSA_PROJECT_ID}
      

      次のように置き換えます。

      • NAMESPACE_IDENTITY: 名前空間の ID。詳細については、名前空間の詳細をご覧ください。

      • SERVICE_ACCOUNT_EMAIL: サービス アカウントのメールアドレス(例: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com)。

  2. 前の手順で確認した名前空間サービス アカウントのメールアドレスを確認します。environment variables を設定してから、次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity/validate -X POST -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    次のように置き換えます。

    • NAMESPACE_NAME: 名前空間の ID。
    • SERVICE_ACCOUNT_EMAIL:名前空間に設定する IAM サービス アカウントのメールアドレス。
  3. 名前空間サービス アカウントを設定します。environment variables を設定してから、次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

名前空間のサービス アカウントを編集する

Console

名前空間サービス アカウントを編集するには、次の手順を行います。

  1. Cloud Data Fusion インスタンスで、[システム管理者] > [設定] > [名前空間] をクリックします。
  2. 編集するサービス アカウントの名前空間をクリックします。
  3. サービス アカウントを編集するには、[サービス アカウント] タブに移動します。サービス アカウントの名前の横にある [メニュー] > [編集] をクリックします。
  4. 手順に沿って名前空間サービス アカウントを構成します

REST API

名前空間サービス アカウントを編集するには、次の手順を行います。

  1. environment variables を設定してから、次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    次のように置き換えます。

    • NAMESPACE_NAME: 名前空間の ID。
    • SERVICE_ACCOUNT_EMAIL:名前空間に設定する IAM サービス アカウントのメールアドレス。

名前空間のサービス アカウントを削除する

Console

名前空間サービス アカウントを名前空間から削除する手順は次のとおりです。

  1. Cloud Data Fusion インスタンスで、[システム管理者] > [設定] > [名前空間] をクリックします。
  2. 削除するサービス アカウントの名前空間をクリックします。
  3. サービス アカウントを削除するには、[サービス アカウント] タブに移動します。サービス アカウントの名前の横にある [メニュー] > [削除] をクリックします。

REST API

名前空間サービス アカウントを名前空間から削除する手順は次のとおりです。

  1. environment variables を設定してから、次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X DELETE
    

    次のように置き換えます。

    • NAMESPACE_NAME: 名前空間の ID。

名前空間サービス アカウントを取得する

Console

名前空間のサービス アカウント情報を取得する手順は次のとおりです。

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

    [インスタンス] に移動

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

  3. 名前空間名をクリックして、サービス アカウントの詳細を表示します。

REST API

名前空間サービス アカウント名を取得する手順は次のとおりです。

  1. environment variables を設定してから、次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X GET
    

    次のように置き換えます。

    • NAMESPACE_NAME: 名前空間の ID。

    成功すると、次のレスポンスでサービス アカウントのメールアドレスが返されます。

    Response: {"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}
    

次のステップ