このページでは、Cloud Data Fusion インスタンスでロールベースのアクセス制御(RBAC)の使用を開始する方法について説明します。RBAC は、バージョン 6.5 以降で動作している Cloud Data Fusion インスタンスで使用できます。
詳細については、ロールベース アクセス制御(RBAC)の概要をご覧ください。
推奨: 自動化が必要な場合を除き、Google Cloud コンソールを使用して RBAC タスクを実行します。
既存のインスタンスで RBAC を有効にする
バージョン 6.5 以降で実行されている既存の Cloud Data Fusion インスタンスで RBAC を有効にできます。
Console
既存の Cloud Data Fusion インスタンスで RBAC を有効にするには:
- インスタンスの詳細(
Google Cloud コンソールで、Cloud Data Fusion のページに移動します。
[インスタンス]、インスタンス名の順にクリックして、[インスタンスの詳細] ページに移動します。
- インスタンスがバージョン 6.5 以降にアップグレードされていることを確認します。インスタンスが 6.5 より前の場合は、インスタンスをバージョン 6.5 以降にアップグレードします。
- [RBAC を有効にする] をクリックします。
- [保存] をクリックします。
- インスタンスの更新オペレーションが完了するまで待ちます。
gcloud
既存の Cloud Data Fusion インスタンスで RBAC を有効にするには、次のコマンドを実行します。
gcloud beta data-fusion instances update --enable_rbac --location=REGION INSTANCE_ID
REST API
Cloud Data Fusion patch API を使用して、既存のインスタンスで RBAC を有効にします。次のコマンド例を使用して、enableRbac
フラグを true
に設定し、updateMask
クエリ パラメータを使用します。
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "true"}'
既存のインスタンスで RBAC を無効にする
RBAC が有効になっている既存のインスタンスが存在する場合は、必要に応じて RBAC を無効にできます。RBAC を無効にしても、インスタンス内の既存のパイプラインや構成には影響しません。単に名前空間の間のセキュリティ分離を無効にします。
Console
既存の Cloud Data Fusion インスタンスで RBAC を無効にするには:
インスタンスの詳細(
Google Cloud コンソールで、Cloud Data Fusion のページに移動します。
[インスタンス]、インスタンス名の順にクリックして、[インスタンスの詳細] ページに移動します。
[RBAC を無効にする] をクリックします。
[保存] をクリックします。
インスタンスの更新オペレーションが完了するまで待ちます。
gcloud
既存のインスタンスの RBAC を無効にするには、引数 --enable-rbac の代わりに --no-enable_rbac を使用します。
gcloud beta data-fusion instances update --no-enable_rbac --location=REGION INSTANCE_ID
使用例:
gcloud beta data-fusion instances update --no-enable_rbac --location=us-east1 cdf-test-instance
REST API
Cloud Data Fusion patch API を使用して、既存のインスタンスの RBAC を無効にします。次のコマンド例を使用して、enableRbac
フラグを false
に設定し、updateMask
クエリ パラメータを使用します。
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "false"}'
RBAC 対応の新しいインスタンスを作成する
Console
RBAC が有効になっている新しい Cloud Data Fusion インスタンスを作成するには:
Cloud Data Fusion の [インスタンス] ページに移動します。
[Instances] をクリックします。
[インスタンスを作成] をクリックして、インスタンスの詳細を入力します。
[Enterprise Edition] を選択します。 RBAC は、Enterprise Edition でのみサポートされます。
[詳細オプション] で、[きめ細かいロールベースのアクセス制御の有効化] を選択します。
この機能は、Cloud Data Fusion バージョン 6.5 以降を使用するインスタンスでのみ使用できます。
[作成] をクリックします。
gcloud
RBAC 対応の新しいインスタンスを作成するには、次のコマンドを実行します。
gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=REGION INSTANCE_ID \
--version=6.5.0
使用例:
gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=us-east1 \
--version=6.5.0
REST API
REST API を使用して RBAC 対応インスタンスを作成するには、次のコマンドで示すように、インスタンス オプションで true
に設定された enableRbac
フラグを渡します。
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances?instanceId=$INSTANCE -X POST -d '{"description": "RBAC CDF instance created through REST", "type": "ENTERPRISE", "enableRbac": "true"}'
Cloud Data Fusion の事前定義ロールをユーザーに付与する(必須)
RBAC を有効にしたら、インスタンスまたは名前空間で特定の操作が実行できるようにプリンシパルにロールを付与します。要件に最適なロールを決定するには、Cloud Data Fusion の事前定義ロールとセキュリティに関する推奨事項をご覧ください。
Console
Cloud Data Fusion の事前定義ロールをプリンシパルに付与するには:
Cloud Data Fusion の [インスタンス] ページに移動します。
[追加] をクリックします。
[ユーザーのアクセスを追加] ダイアログが開きます。
[新しいメンバー] フィールドに、ロールを付与するプリンシパル(ユーザー、グループ、サービス アカウントのメールアドレス)のリストを入力します。
これらの権限を付与する各インスタンスの横にあるチェックボックスをオンにします。
[ロール] 列に移動し、選択したインスタンスの横にあるプルダウンを選択します。
インスタンス管理者権限を付与するには、[インスタンス管理者] を選択します。
名前空間レベルの権限を付与するには、[名前空間ユーザー] を選択します。
名前空間レベルの権限を付与する場合は、[選択] をクリックします。
[アクセス権を追加] ダイアログが開きます。
Namespace を選択し、Namespace に付与する事前定義された Cloud Data Fusion ロールを選択します。
[選択] をクリックして新しい設定を保存します。
(省略可)他のインスタンスに名前空間の権限を付与するには、手順 5 を繰り返します。
[保存] をクリックします。
付与されているロールを確認するには、Google Cloud コンソールでロールを確認するをご覧ください。
gcloud
Google Cloud CLI を使用して、プログラムでアクセスを制御できます。
gcloud CLI を使用してロールを付与するには、次の形式のユーザー ID のカンマ区切りリストを使用します。
[user|group|serviceAccount][email_address]
次の値を指定します。
user:useremail@example.com
group:groupemail@example.com
serviceAccount:serviceaccount@project.iam.gserviceaccount.com
その他の例については、ロールを付与するをご覧ください。
インスタンス アクセサーのロールを付与する(必須)
まず、ユーザーにインスタンスへのアクセサーのロールを付与することで、インスタンスへのアクセス権を付与する必要があります。
次のコマンドで変数をエクスポートし、変数を独自の値に置き換えます。
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export USER_ID=EMAIL export USER_TYPE=USER_TYPE
次の変数は、独自の値に置き換えます。
- PROJECT_ID: プロジェクト名。
- INSTANCE_ID: インスタンスの名前。
- REGION: プロジェクトが属するリージョン。
- EMAIL: プリンシパルのメールアドレス。
- USER_TYPE: ユーザータイプは、user、group、serviceAccount のいずれかです。
次のコマンドを実行してロールを割り当てます。
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
名前空間にロールを付与する(ユースケースによって異なる)
ユースケースに応じて、次のコマンドを使用してロールを付与します。
次のコマンドで変数をエクスポートし、変数を独自の値に置き換えます。
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export NAMESPACE=NAMESPACE export USER_ID=EMAIL export USER_TYPE=USER_TYPE
次の変数は、独自の値に置き換えます。
- PROJECT_ID: プロジェクト名。
- INSTANCE_ID: インスタンスの名前。
- REGION: プロジェクトが属するリージョン。
- NAMESPACE: 名前空間名。
- EMAIL: プリンシパルのメールアドレス。
- USER_TYPE: ユーザータイプは、user、group、serviceAccount のいずれかです。
次のコマンドを実行して、特定の名前空間のプリンシパルにロールを割り当てます。
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="roles/ROLE_NAME"
ROLE_NAME は次のいずれかの値に置き換えます。
- 名前空間の編集者のロールには、
datafusion.editor
を使用します。 - 名前空間のオペレーターのロールには、
datafusion.operator
を使用します。 - 名前空間のデベロッパーのロールには、
datafusion.developer
を使用します。 - 名前空間の閲覧者のロールには、
datafusion.viewer
を使用します。
- 名前空間の編集者のロールには、
省略可: Namespace ロールを取り消す
特定の 名前空間に対してユーザーに付与されたロールを取り消すには、次のコマンドを使用します。
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
export USER_ID=EMAIL
# User type can be one of: user, group, or serviceAccount.
export USER_TYPE=USER_TYPE
export ROLE=ROLE_NAME
gcloud beta data-fusion remove-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="${ROLE}"
省略可: 特定の名前空間で付与されたロールを一覧表示する
特定の Namespace で付与されたすべてのロールを一覧表示するには、次のコマンドを使用して IAM ポリシーを取得します。
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}
REST API
インスタンス アクセサーのロールを付与する(必須)
まず、ユーザーにインスタンスへのアクセサーのロールを付与することで、インスタンスへのアクセス権を付与する必要があります。
強く推奨: gcloud CLI を使用してアクセサーロールを付与します。
インスタンスに対するアクセサー ロールを付与します。
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export USER_ID=EMAIL # User type can be one of: user, group, or serviceAccount. export USER_TYPE=USER_TYPE alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
現在の IAM ポリシーを取得してファイルに保存します。
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
ポリシーにロールとユーザーのバインディングを追加します。例:
{ "policy": { "bindings": [ { "role": "roles/datafusion.accessor", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }
インスタンスの IAM ポリシーを更新します。
gcurl \ -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
名前空間にロールを付与する(ユースケースによって異なる)
ユースケースに応じて、次のコマンドを使用してロールを付与します。
次のコマンドで変数をエクスポートし、変数を独自の値に置き換えます。
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export NAMESPACE=NAMESPACE export USER_ID=EMAIL export USER_TYPE=USER_TYPE alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
次の変数は、独自の値に置き換えます。
- PROJECT_ID: プロジェクト名。
- INSTANCE_ID: インスタンスの名前。
- REGION: プロジェクトが属するリージョン。
- NAMESPACE: 名前空間名。
- EMAIL: プリンシパルのメールアドレス。
- USER_TYPE: ユーザータイプは、user、group、serviceAccount のいずれかです。
現在の IAM ポリシーを取得してファイルに保存します。
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.json
iam_policy.json は、ご自身のファイル名に置き換えます。
ポリシー ファイルにロールとユーザーのバインディングを追加します。たとえば、ポリシー ファイルは次のようになります。
{ "policy": { "bindings": [ { "role": "roles/ROLE_NAME", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }
特定のポリシーに複数のロール バインディングを指定できます。また、特定のロール バインディングのメンバーリストに複数のプリンシパルを指定できます。特定のプリンシパルについては、ROLE_NAME を次のいずれかの値に置き換えます。
- 名前空間の編集者のロールには、
datafusion.editor
を使用します。 - 名前空間のオペレーターのロールには、
datafusion.operator
を使用します。 - 名前空間のデベロッパーのロールには、
datafusion.developer
を使用します。 - 名前空間の閲覧者のロールには、
datafusion.viewer
を使用します。
- 名前空間の編集者のロールには、
次のコマンドを実行してポリシー ファイルを更新します。
gcurl -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:setIamPolicy
iam_policy.json は、ご自身のファイル名に置き換えます。
Google Cloud コンソールでロールを確認する
Cloud Data Fusion の [権限] ページで既存のロールを確認、編集します。
ポリシー ファイルでロールを確認する
gcloud CLI または REST API を使用して、IAM ポリシー ファイルで正しいユーザーにロールが付与されていることを確認します。
次の IAM ポリシー ファイルの例では、ユーザー alice@example.com
には Data Fusion デベロッパーのロールがあります。
bindings:
- members:
- user:alice@example.com
role: roles/datafusion.developer
- members:
- user:bob@example.com
- serviceAccount:myserviceaccount@myproject.iam.gserviceaccount.com
role: roles/datafusion.operator
- members:
- user:james@example.com
- user:mike@example.com
- group:mygroup@googlegroups.com
role: roles/datafusion.editor
etag: BwXA8BAHYmw=
インスタンスの IAM ポリシーを取得する
gcloud
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION}
cURL
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy
名前空間の IAM ポリシーを取得する
gcloud
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}
cURL
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export NAMESPACE=NAMESPACE
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/${NAMESPACE}:getIamPolicy
次のステップ
- Cloud Data Fusion でのロールベースのアクセス制御の詳細を確認する。