Dokumen ini menunjukkan cara melakukan hal berikut di Dataform:
- Berikan akses yang diperlukan Dataform.
- Mengontrol akses ke Dataform dengan IAM.
- Mengontrol akses ke setiap tabel dengan IAM.
Sebelum memulai
- 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.
Memberikan akses yang diperlukan ke Dataform
Bagian ini menunjukkan cara memberikan peran Identity and Access Management (IAM) yang diperlukan akun layanan Dataform untuk menjalankan alur kerja di BigQuery.
Tentang akun layanan di Dataform
Saat Anda membuat repositori Dataform pertama, Dataform akan otomatis membuat akun layanan default. Dataform menggunakan akun layanan default untuk berinteraksi dengan BigQuery atas nama Anda. Akun layanan Dataform default tidak diberi peran atau izin BigQuery apa pun secara default. Anda harus memberikan akses yang diperlukan ke akun layanan Dataform default.
ID akun layanan Dataform default Anda memiliki format berikut:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Ganti PROJECT_NUMBER dengan ID numerik project Google Cloud Anda. Anda dapat menemukan project ID Google Cloud di dasbor konsol Google Cloud. Untuk mengetahui informasi selengkapnya, lihat Mengidentifikasi project.
Selain akun layanan Dataform default, Anda dapat menggunakan akun layanan lain untuk menjalankan alur kerja atas nama Anda. Anda dapat mengonfigurasi akun layanan kustom dengan cara berikut:
Di tingkat repositori, untuk menjalankan semua alur kerja di repositori tertentu.
Secara terpisah untuk setiap konfigurasi alur kerja.
Saat membuat repositori Dataform atau konfigurasi alur kerja, Anda dapat memilih akun layanan apa pun yang terkait dengan project Google Cloud yang memiliki akses. Anda harus mengonfigurasi izin yang diperlukan untuk semua akun layanan yang terkait dengan resource Dataform Anda.
Akun layanan kustom yang terkait dengan repositori Dataform hanya digunakan untuk menjalankan alur kerja dari repositori tersebut. Semua operasi repositori lainnya masih dilakukan oleh akun layanan Dataform default.
Peran yang diperlukan untuk akun layanan Dataform
Akun layanan default dan kustom yang digunakan di Dataform memerlukan peran IAM BigQuery berikut agar dapat menjalankan alur kerja di BigQuery:
- BigQuery Data Editor di project yang memerlukan akses baca dan tulis Dataform. Ini biasanya mencakup project yang menghosting repositori Dataform Anda.
- BigQuery Data Viewer di project yang memerlukan akses hanya baca untuk Dataform.
- BigQuery Job User di project yang menghosting repositori Dataform Anda.
- Pemilik Data BigQuery jika Anda ingin membuat kueri set data BigQuery.
- Peran BigQuery untuk kontrol akses tingkat kolom jika Anda ingin menggunakan tag kebijakan BigQuery.
Selain itu, Anda perlu memberikan akun layanan Dataform default
peran Service Account Token Creator
(roles/iam.serviceAccountTokenCreator
) agar dapat mengakses akun layanan
kustom yang ingin Anda gunakan di Dataform.
Pertimbangan keamanan untuk akun layanan Dataform
Memberikan peran yang diperlukan oleh Dataform ke akun layanan disertai dengan pertimbangan keamanan berikut:
Setiap akun layanan yang diberi peran yang diperlukan dapat memperoleh akses ke BigQuery atau Secret Manager dalam project tempat akun layanan tersebut berada, terlepas dari Kontrol Layanan VPC.
Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Kontrol Layanan VPC untuk Dataform.
Setiap pengguna yang memiliki izin IAM
dataform.repositories.create
dapat menjalankan kode menggunakan akun layanan Dataform default dan semua izin yang diberikan ke akun layanan tersebut.Untuk informasi selengkapnya, lihat Pertimbangan keamanan untuk izin Dataform.
Untuk membatasi data yang dapat dibaca atau ditulis oleh pengguna atau akun layanan di BigQuery, Anda dapat memberikan izin IAM BigQuery yang terperinci ke set data atau tabel BigQuery yang dipilih. Untuk mengetahui informasi selengkapnya, lihat Mengontrol akses ke set data dan Mengontrol akses ke tabel dan tabel virtual.
Memberikan peran BigQuery yang diperlukan ke akun layanan yang digunakan di Dataform
Untuk memberikan peran IAM BigQuery yang diperlukan ke akun layanan Dataform default, atau akun layanan kustom yang ingin Anda gunakan di Dataform, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Dataform.
Pilih atau buat repositori.
Di konsol Google Cloud, buka halaman IAM.
Klik Grant Access.
Di kolom New principals, masukkan ID akun layanan.
Di daftar Select a role, pilih peran BigQuery Job User.
Klik Add another role, lalu di daftar Select a role, pilih peran BigQuery Data Editor.
Klik Add another role, lalu di daftar Select a role, pilih peran BigQuery Data Viewer.
Klik Simpan.
Memberikan akses pembuatan token ke akun layanan kustom
Untuk menggunakan akun layanan kustom di Dataform, akun layanan Dataform default harus dapat mengakses akun layanan kustom. Untuk memberikan akses ini, Anda perlu menambahkan akun layanan Dataform default sebagai akun utama ke akun layanan kustom dengan peran Pembuat Token Akun Layanan.
Untuk memberikan akses akun layanan Dataform default ke akun layanan kustom, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka IAM > Service accounts.
Pilih project.
Di halaman Akun layanan untuk project "PROJECT_NAME", pilih akun layanan Dataform kustom Anda.
Buka Izin, lalu klik Beri Akses.
Di kolom New principals, masukkan ID akun layanan Dataform default Anda.
ID akun layanan Dataform default Anda memiliki format berikut:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Dalam daftar Select a role, pilih peran Service Account Token Creator.
Klik Simpan.
Mengontrol akses ke Dataform dengan IAM
Dokumen ini menjelaskan opsi kontrol akses untuk Dataform dan menunjukkan cara melihat serta memberikan peran Dataform. Dataform menggunakan Identity and Access Management (IAM) untuk kontrol akses. Untuk mengetahui informasi selengkapnya tentang peran dan izin di IAM, lihat Memahami peran dan izin.
Peran Dataform yang telah ditetapkan
Tabel berikut mencantumkan peran yang telah ditetapkan yang memberi Anda akses ke resource Dataform:
Role | Permissions |
---|---|
Dataform Admin( Full access to all Dataform resources. |
|
Code Commenter Beta( Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources. |
|
Code Creator( Access only to private and shared code resources. The permissions in the Code Creator let you create and list code in Dataform, and access only the code that you created and code that was explicitly shared with you. |
|
Code Editor( Edit access code resources. |
|
Code Owner( Full access to code resources. |
|
Code Viewer( Read-only access to all code resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Peran Dataform kustom
Peran khusus dapat mencakup izin apa pun yang Anda tentukan. Anda dapat membuat peran kustom yang menyertakan izin untuk melakukan operasi administratif tertentu, seperti membuat ruang kerja pengembangan atau membuat file dan direktori dalam ruang kerja pengembangan. Untuk membuat peran khusus, lihat Membuat dan mengelola peran khusus.
Pertimbangan keamanan untuk izin Dataform
Setiap pengguna yang memiliki izin dataform.repositories.create
dapat mengeksekusi kode di BigQuery menggunakan akun layanan Dataform default dan semua izin yang diberikan ke akun layanan tersebut. Hal ini mencakup
eksekusi alur kerja Dataform.
Izin dataform.repositories.create
disertakan dalam peran IAM
berikut:
- BigQuery Admin (
roles/bigquery.admin
) - BigQuery Job User (
roles/bigquery.jobUser
) - Pengguna BigQuery Studio (
roles/bigquery.studioUser
) - Pengguna BigQuery (
roles/bigquery.user
) - Pembuat Kode (
roles/dataform.codeCreator
) - Editor Kode (
roles/dataform.codeEditor
) - Pemilik Kode (
roles/dataform.codeOwner
) - Pengguna Colab Enterprise (
roles/aiplatform.colabEnterpriseUser
) - Dataform Admin (
roles/dataform.admin
)
Untuk membatasi data yang dapat dibaca atau ditulis oleh pengguna atau akun layanan di BigQuery, Anda dapat memberikan izin IAM BigQuery yang terperinci ke set data atau tabel BigQuery yang dipilih. Untuk mengetahui informasi selengkapnya, lihat Mengontrol akses ke set data dan Mengontrol akses ke tabel dan tabel virtual.
Untuk mengetahui informasi selengkapnya tentang akun layanan Dataform default dan peran serta izin yang diperlukan, lihat Memberikan akses yang diperlukan Dataform.
Melihat peran Dataform
Di konsol Google Cloud, lakukan langkah-langkah berikut:
Buka halaman IAM & Admin > Peran.
Di kolom Filter, pilih Used in, ketik
Dataform
, lalu tekan Enter.Klik salah satu peran yang tercantum untuk melihat izin peran di panel kanan.
Misalnya, peran Dataform Admin memiliki akses penuh ke semua resource Dataform.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran pada project, lihat Memberikan peran. Anda dapat memberikan peran standar atau khusus dengan cara ini.
Mengontrol akses ke setiap repositori
Untuk mengontrol akses ke Dataform dengan izin terperinci,
Anda dapat menetapkan peran IAM Dataform di setiap
repositori menggunakan permintaan
repositories.setIamPolicy
Dataform API.
Untuk menetapkan peran IAM Dataform di setiap repositori Dataform, ikuti langkah-langkah berikut:
Di terminal, teruskan permintaan
repositories.setIamPolicy
Dataform API dengan kebijakan akses.Dalam kebijakan, tautkan pengguna, grup, domain, atau akun layanan ke peran yang dipilih dalam format berikut:
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }
Ganti kode berikut:
ROLE
: peran IAM Dataform yang ingin Anda berikan di repositori.TYPE
:user
,group
,domain
, atauserviceAccount
.IDENTIFIER
: pengguna, grup, domain, atau akun layanan yang ingin Anda beri peran.
Di halaman IAM, pastikan semua pengguna dapat melihat daftar lengkap repositori Dataform melalui peran Dataform dengan izin
dataform.repositories.list
.Di IAM, pastikan hanya pengguna yang memerlukan akses penuh ke semua repositori Dataform yang diberi peran Dataform Admin di semua repositori.
Perintah berikut meneruskan permintaan Dataform API repositories.setIamPolicy
yang memberikan peran Dataform Editor di repositori sales
ke satu pengguna:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.editor", "members": ["user:sasha@examplepetstore.com"]}] }}' "https://dataform.googleapis.com/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Memberikan akses publik ke repositori
Anda dapat memberikan akses publik ke repositori Dataform dengan memberikan
peran IAM di repositori kepada akun utama
allAuthenticatedUsers
.
Saat Anda menetapkan peran IAM ke akun utama allAuthenticatedUsers
, akun layanan dan semua pengguna di internet yang telah diautentikasi dengan Akun Google akan diberi peran tersebut. Hal ini mencakup akun yang tidak
terhubung ke akun Google Workspace atau domain Cloud Identity,
seperti akun Gmail pribadi. Pengguna yang tidak diautentikasi,
seperti pengunjung anonim, tidak akan disertakan. Untuk mengetahui informasi selengkapnya, lihat
Semua pengguna yang diautentikasi.
Misalnya, saat Anda memberikan peran Dataform Viewer ke allAuthenticatedUsers
di repositori sales
, semua akun layanan dan pengguna di internet yang telah diautentikasi dengan Akun Google akan memiliki akses hanya baca ke semua resource kode sales
.
Untuk memberikan akses publik ke repositori Dataform, ikuti langkah-langkah berikut:
Di terminal, teruskan permintaan
repositories.setIamPolicy
Dataform API dengan kebijakan akses.Dalam kebijakan, ikat akun utama
allAuthenticatedUsers
ke peran yang dipilih dalam format berikut:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }
Ganti
ROLE
dengan peran IAM Dataform yang ingin Anda berikan kepada semua pengguna yang diautentikasi.
Perintah berikut meneruskan permintaan Dataform API repositories.setIamPolicy
yang memberikan peran Dataform Viewer pada repositori sales
ke allAuthenticatedUsers
:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.viewer", "members": ["allAuthenticatedUsers"]}] }}' "https://dataform.googleapis.com/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Mencegah akses publik ke repositori
Untuk memastikan tidak ada akses yang diberikan kepada publik di repositori Dataform, Anda dapat membatasi akun utama allAuthenticatedUsers
di project.
Untuk membatasi allAuthenticatedUsers
dalam project, Anda dapat
menetapkan kebijakan iam.allowedPolicyMemberDomains
,
dan menghapus allAuthenticatedUsers
dari daftar allowed_values
.
Saat Anda membatasi allAuthenticatedUsers
dalam kebijakan iam.allowedPolicyMemberDomains
, akun utama allAuthenticatedUsers
tidak dapat digunakan dalam kebijakan IAM apa pun dalam project Anda, yang mencegah pemberian akses publik ke semua resource, termasuk repositori Dataform.
Untuk informasi selengkapnya tentang kebijakan iam.allowedPolicyMemberDomains
dan juga petunjuk untuk menetapkannya, lihat
Membatasi identitas berdasarkan domain.
Workforce identity federation di Dataform
Workforce identity federation memungkinkan Anda menggunakan penyedia identitas (IdP) eksternal untuk melakukan autentikasi dan memberi otorisasi kepada pengguna ke Google Cloud layanan dengan IAM.
Dataform mendukung workforce identity federation tanpa batasan yang diketahui.
Mengontrol akses ke setiap tabel dengan IAM
Bagian ini menunjukkan cara memberikan dan mencabut peran IAM BigQuery untuk setiap tabel dan tampilan Dataform.
Saat menjalankan tabel atau tampilan, Dataform akan membuat resource di BigQuery. Selama pengembangan di Dataform, Anda dapat memberikan peran BigQuery ke setiap tabel dan tampilan untuk mengontrol aksesnya di BigQuery setelah dieksekusi.
Untuk mengetahui informasi selengkapnya tentang cara memberikan dan mencabut akses ke resource, lihat Memberikan akses ke resource.
Memberikan peran BigQuery ke tabel atau tampilan
Anda dapat memberikan peran BigQuery ke tabel atau tampilan di Dataform dengan menambahkan blok post_operations
dengan pernyataan DCL GRANT
ke file definisi .sqlx
dari tabel atau tampilan yang dipilih.
Untuk memberikan peran BigQuery ke tabel atau tampilan yang dipilih, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Dataform.
Pilih repositori, lalu pilih ruang kerja.
Di panel Files, luaskan direktori
definitions/
.Pilih file definisi
.sqlx
tabel atau tampilan yang ingin Anda beri akses.Di file tersebut, masukkan cuplikan kode berikut:
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }
Ganti kode berikut:
ROLE_LIST: peran BigQuery atau daftar peran BigQuery yang dipisahkan koma yang ingin Anda berikan.
RESOURCE_TYPE:
TABLE
atauVIEW
.USER_LIST: daftar pengguna yang dipisahkan koma yang diberi peran.
Untuk daftar format yang valid, lihat user_list.
Opsional: Klik Format.
Jalankan tabel atau tampilan.
Jika Anda memberikan akses pada tabel inkremental, hapus pernyataan
GRANT
dari file definisi tabel setelah eksekusi pertama.
Contoh kode berikut menunjukkan peran Pelihat BigQuery yang diberikan pada tabel kepada pengguna:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
Cabut peran BigQuery dari tabel atau tampilan
Anda dapat mencabut peran BigQuery dari tabel atau tampilan dengan menambahkan blok post_operations
dengan pernyataan DCL REVOKE
ke file definisi .sqlx
dari tabel atau tampilan yang dipilih.
Untuk mencabut peran BigQuery dari tabel atau tampilan yang dipilih, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Dataform.
Pilih repositori, lalu pilih ruang kerja.
Di panel Files, luaskan direktori
definitions/
.Pilih file definisi
.sqlx
tabel atau tampilan yang aksesnya ingin Anda cabut.Di blok
post_operations
, masukkan pernyataanREVOKE
berikut:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"
Ganti kode berikut:
- ROLE_LIST: peran BigQuery atau daftar peran BigQuery yang dipisahkan koma yang ingin Anda cabut.
- RESOURCE_TYPE:
TABLE
atauVIEW
. - USER_LIST: daftar pengguna yang dipisahkan koma yang perannya dicabut. Untuk daftar format yang valid, lihat user_list.
Untuk mencabut akses yang diberikan dalam pernyataan
GRANT
dalam file, ganti pernyataanGRANT
dengan pernyataanREVOKE
.Opsional: Klik Format.
Jalankan tabel atau tampilan.
Jika Anda mencabut akses ke tabel inkremental, hapus pernyataan
REVOKE
dari file definisi tabel setelah eksekusi pertama.
Contoh kode berikut menunjukkan peran Pelihat BigQuery yang dicabut dari pengguna di tabel:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
Mengelola peran BigQuery secara kolektif untuk tabel dan tampilan
Untuk mengontrol akses BigQuery ke setiap tabel dan tampilan di
satu lokasi, Anda dapat membuat file type: "operations"
khusus dengan
pernyataan DCL GRANT
dan
REVOKE
.
Untuk mengelola akses tabel BigQuery dalam satu file type: "operations"
, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Dataform.
Pilih repositori, lalu pilih ruang kerja.
Di panel Files, di samping
definitions/
, klik menuMore.
Klik Create file.
Di kolom Add a file path, masukkan nama file diikuti dengan
.sqlx
setelahdefinitions/
. Contohnya,definitions/table-access.sqlx
Nama file hanya boleh berisi angka, huruf, tanda hubung, dan garis bawah.
Klik Create file.
Di panel Files, luaskan direktori
definitions/
, lalu pilih file yang baru dibuat.Di file tersebut, masukkan cuplikan kode berikut:
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"
Ganti kode berikut:
- ROLE_LIST: peran BigQuery atau daftar peran BigQuery yang dipisahkan koma yang ingin Anda berikan atau cabut.
- RESOURCE_TYPE:
TABLE
atauVIEW
. - RESOURCE_NAME: nama tabel atau tampilan.
- USER_LIST: daftar pengguna yang dipisahkan koma yang mendapatkan atau dicabut peran. Untuk daftar format yang valid, lihat user_list.
Tambahkan pernyataan
GRANT
danREVOKE
sesuai kebutuhan.Untuk mencabut akses yang diberikan dalam pernyataan
GRANT
dalam file, ganti pernyataanGRANT
dengan pernyataanREVOKE
.Menghapus pernyataan
GRANT
tanpa menambahkan pernyataanREVOKE
tidak akan mencabut akses.
Opsional: Klik Format.
Jalankan file setelah setiap update.
- Jika Anda memberikan atau mencabut akses pada tabel inkremental, hapus pernyataan
GRANT
atauREVOKE
dari file setelah eksekusi pertama pernyataan.
- Jika Anda memberikan atau mencabut akses pada tabel inkremental, hapus pernyataan
Langkah berikutnya
- Untuk mempelajari IAM lebih lanjut, lihat ringkasan IAM.
- Untuk mempelajari lebih lanjut cara mengelola akses ke resource, lihat Mengelola akses ke project, folder, dan organisasi
- Untuk mempelajari konsep utama workforce identity federation lebih lanjut, lihat Workforce identity federation.
- Untuk mempelajari peran dan izin IAM BigQuery lebih lanjut, lihat Kontrol akses dengan IAM.
- Untuk mempelajari lebih lanjut cara memberikan izin terperinci ke set data BigQuery, lihat Mengontrol akses ke set data.