Dataform と BigQuery は、アクセス制御に IAM を使用します。IAM の Dataform ロールと権限の詳細については、IAM によるアクセスの制御をご覧ください。
Dataform は、テーブルまたはビューを実行すると、BigQuery にリソースを作成します。Dataform の開発中に、BigQuery のロールを個別のテーブルとビューに付与して、実行後に BigQuery でアクセスを制御できます。
リソースへのアクセス権の付与と取り消しについて詳しくは、リソースへのアクセス権の付与をご覧ください。
準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
テーブルまたはビューに BigQuery ロールを付与する
Dataform のテーブルまたはビューに BigQuery のロールを付与するには、GRANT
DCL ステートメントを使用して post_operations
ブロックを選択したテーブルまたはビューの .sqlx
定義ファイルに追加します。
選択したテーブルまたはビューに BigQuery のロールを付与するには、次の手順に沿って操作します。
Google Cloud コンソールの [Dataform] ページに移動します。
リポジトリを選択し、ワークスペースを選択します。
[ファイル] ペインで
definitions/
ディレクトリを開きます。アクセス権を付与するテーブルまたはビューの
.sqlx
定義ファイルを選択します。ファイルに次のコード スニペットを入力します。
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }
以下を置き換えます。
ROLE_LIST: 付与する BigQuery のロールまたは BigQuery のロールのカンマ区切りリスト。
RESOURCE_TYPE:
TABLE
またはVIEW
。USER_LIST: ロールが付与されているユーザーのカンマ区切りのリスト。
有効な形式の一覧については、user_list をご覧ください。
省略可: [書式] をクリックします。
テーブルまたはビューを実行します。
増分テーブルに対してアクセス権を付与した場合は、最初の実行後にテーブル定義ファイルから
GRANT
ステートメントを削除します。
次のコードサンプルは、ユーザーにテーブルに対して付与される BigQuery 閲覧者のロールを示しています。
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
テーブルまたはビューから BigQuery ロールを取り消す
テーブルまたはビューから BigQuery のロールを取り消すには、REVOKE
DCL ステートメントを使用して post_operations
ブロックを選択したテーブルまたはビューの .sqlx
定義ファイルに追加します。
選択したテーブルまたはビューから BigQuery ロールを取り消す手順は次のとおりです。
Google Cloud コンソールの [Dataform] ページに移動します。
リポジトリを選択し、ワークスペースを選択します。
[ファイル] ペインで
definitions/
ディレクトリを開きます。アクセス権を取り消すテーブルまたはビューの
.sqlx
定義ファイルを選択します。post_operations
ブロックで、次のREVOKE
ステートメントを入力します。REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST"
以下を置き換えます。
- ROLE_LIST: 取り消す BigQuery のロールまたは BigQuery のロールのカンマ区切りリスト。
- RESOURCE_TYPE:
TABLE
またはVIEW
。 - USER_LIST: ロールを取り消す対象ユーザーのカンマ区切りのリスト。有効な形式の一覧については、user_list をご覧ください。
ファイル内の
GRANT
ステートメントで付与されたアクセス権を取り消すには、GRANT
ステートメントをREVOKE
ステートメントに置き換えます。省略可: [書式] をクリックします。
テーブルまたはビューを実行します。
増分テーブルに対してアクセス権を取り消した場合は、最初の実行後にテーブル定義ファイルから
REVOKE
ステートメントを削除します。
次のサンプルコードは、ユーザーから取り消されたテーブルに対する BigQuery 閲覧者のロールを示しています。
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
テーブルとビューの BigQuery のロールを集約的に管理する
1 つのロケーションの個別のテーブルとビューに対する BigQuery アクセスを制御するには、GRANT
および REVOKE
の DCL ステートメントを使用して専用の type: "operations"
ファイルを作成します。
単一の type: "operations"
ファイルで BigQuery テーブルへのアクセスを管理する手順は次のとおりです。
Google Cloud コンソールの [Dataform] ページに移動します。
リポジトリを選択し、ワークスペースを選択します。
[ファイル] ペインで、
definitions/
の横にある [その他] メニューをクリックします。[ファイルを作成] をクリックします。
[ファイルパスを追加] フィールドに、ファイルの名前の後に
definitions/
の後に.sqlx
を入力します。例:definitions/table-access.sqlx
。ファイル名 には数字、英字、ハイフン、アンダースコアのみを使用できます。
[ファイルを作成] をクリックします。
[ファイル] ペインで
definitions/
ディレクトリを展開し、新しく作成されたファイルを選択します。ファイルに次のコード スニペットを入力します。
config { type: "operations" } GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST" REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
以下を置き換えます。
- ROLE_LIST: 付与または取り消しを行う BigQuery のロールまたは BigQuery のロールのカンマ区切りリスト。
- RESOURCE_TYPE:
TABLE
またはVIEW
。 - RESOURCE_NAME: テーブルまたはビューの名前。
- USER_LIST: ロールの付与または取り消しを行う対象ユーザーのカンマ区切りのリスト。有効な形式の一覧については、user_list をご覧ください。
必要に応じて、
GRANT
ステートメントとREVOKE
ステートメントを追加します。ファイル内の
GRANT
ステートメントで付与されたアクセス権を取り消すには、GRANT
ステートメントをREVOKE
ステートメントに置き換えます。REVOKE
ステートメントを追加せずにGRANT
ステートメントを削除しても、アクセス権は取り消されません。
省略可: [書式] をクリックします。
更新するたびにファイルを実行します。
- 増分テーブルに対してアクセス権の付与または取り消しを行った場合は、ステートメントを最初に実行した後にファイルから
GRANT
ステートメントまたはREVOKE
ステートメントを削除します。
- 増分テーブルに対してアクセス権の付与または取り消しを行った場合は、ステートメントを最初に実行した後にファイルから
次のステップ
- IAM について詳しくは、IAM の概要をご覧ください。
- ロールと権限について詳しくは、ロールについてをご覧ください。
- リソースに対するアクセス管理の詳細については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。