このページでは、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 つ作成します。
Google Cloud コンソールで、Cloud Data Fusion の [インスタンス] ページに移動し、Cloud Data Fusion ウェブ インターフェースでインスタンスを開きます。
[システム管理者] > [設定] > [名前空間] をクリックします。
構成する名前空間をクリックします。
[サービス アカウント] タブをクリックしてから、[サービス アカウントを追加] をクリックします。
Workload Identity ユーザーロール(
roles/iam.workloadIdentityUser
)を付与します。ロールを付与する手順は次のとおりです。
- [パイプライン設計サービス アカウント] フィールドに、サービス アカウントのメールアドレスを入力します(例:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
)。 - 表示されるダイアログの指示に沿って操作します。
- [パイプライン設計サービス アカウント] フィールドに、サービス アカウントのメールアドレスを入力します(例:
サービス アカウントの設定を完了するには、Cloud Data Fusion インスタンスの名前空間に戻り、[保存] をクリックします。
この手順を繰り返して、名前空間ごとにサービス アカウントを構成します。
REST API
Workload Identity ユーザーロール(
roles/iam.workloadIdentityUser
)を付与します。ロールを付与する手順は次のとおりです。
次の環境変数を設定します。
export TENANT_PROJECT_ID=TENANT_PROJECT export GSA_PROJECT_ID=SERVICE_ACCOUNT_PROJECT
次のように置き換えます。
TENANT_PROJECT
: テナント プロジェクト ID。これを確認するには、[インスタンス] ページに移動し、インスタンス名をクリックします。ID は [インスタンスの詳細] ページに表示されます。SERVICE_ACCOUNT_PROJECT
: IAM サービス アカウントが配置されている Google Cloud プロジェクト ID。
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
)。
前の手順で確認した名前空間サービス アカウントのメールアドレスを確認します。
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 サービス アカウントのメールアドレス。
名前空間サービス アカウントを設定します。
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
名前空間サービス アカウントを編集するには、次の手順を行います。
- Cloud Data Fusion インスタンスで、[システム管理者] > [設定] > [名前空間] をクリックします。
- 編集するサービス アカウントの名前空間をクリックします。
- サービス アカウントを編集するには、[サービス アカウント] タブに移動します。サービス アカウントの名前の横にある > [編集] をクリックします。 [メニュー]
- 手順に沿って名前空間サービス アカウントを構成します。
REST API
名前空間サービス アカウントを編集するには、次の手順を行います。
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
名前空間サービス アカウントを名前空間から削除する手順は次のとおりです。
- Cloud Data Fusion インスタンスで、[システム管理者] > [設定] > [名前空間] をクリックします。
- 削除するサービス アカウントの名前空間をクリックします。
- サービス アカウントを削除するには、[サービス アカウント] タブに移動します。サービス アカウントの名前の横にある > [削除] をクリックします。 [メニュー]
REST API
名前空間サービス アカウントを名前空間から削除する手順は次のとおりです。
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
名前空間のサービス アカウント情報を取得する手順は次のとおりです。
Google Cloud コンソールで、Cloud Data Fusion の [インスタンス] ページに移動し、Cloud Data Fusion ウェブ インターフェースでインスタンスを開きます。
[システム管理者] > [設定] > [名前空間] をクリックします。
名前空間名をクリックして、サービス アカウントの詳細を表示します。
REST API
名前空間サービス アカウント名を取得する手順は次のとおりです。
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"}
次のステップ
- 名前空間サービス アカウントを使用したアクセス制御のユースケースの詳細を確認する。
- Cloud Data Fusion でのロールベースのアクセス制御の詳細を確認する。