Dokumen ini menunjukkan cara melakukan hal berikut di Dataform:
- Memberikan akses yang diperlukan Dataform.
- Mengontrol akses ke Dataform dengan IAM.
- Mengontrol akses ke setiap tabel dengan IAM.
Sebelum memulai
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
Memberikan akses yang diperlukan ke Dataform
Bagian ini menunjukkan cara memberikan peran Identity and Access Management (IAM) yang diperlukan agen layanan Dataform dan akun layanan kustom untuk menjalankan alur kerja di BigQuery.
Tentang akun layanan kustom dan agen layanan Dataform
Anda dapat mengonfigurasi akun layanan kustom untuk menjalankan alur kerja atas nama Anda dengan cara berikut:
- Di level repositori, untuk menjalankan semua alur kerja di repositori tertentu.
- Secara individual untuk setiap konfigurasi alur kerja.
Saat membuat repositori atau konfigurasi alur kerja Dataform, Anda dapat memilih akun layanan apa pun yang memiliki izin bertindak sebagai. Anda harus mengonfigurasi izin act-as yang diperlukan untuk semua akun layanan yang terkait dengan resource Dataform Anda.
Saat Anda membuat repositori Dataform pertama, Dataform akan otomatis membuat agen layanan. Dataform menggunakan agen layanan untuk berinteraksi dengan BigQuery atas nama Anda.
ID agen layanan Dataform Anda dalam format berikut:
service-PROJECT_NUMBER@gcp-sa-dataform.
Ganti PROJECT_NUMBER dengan ID angka project Google Cloud Anda. Anda dapat menemukan project ID Google Cloud di dasbor konsolGoogle Cloud . Untuk mengetahui informasi selengkapnya, lihat Menemukan nama, nomor, dan ID project.
Peran yang diperlukan untuk agen layanan Dataform, akun layanan kustom, dan Akun Google
Agen layanan Dataform, akun layanan kustom, dan kredensial pengguna untuk Akun Google yang digunakan untuk melakukan autentikasi di Dataform memerlukan peran IAM BigQuery berikut agar dapat menjalankan alur kerja di BigQuery:
- BigQuery Data Editor
(
roles/bigquery.dataEditor) pada project yang memerlukan akses baca dan tulis dari Dataform. Project ini biasanya mencakup project yang menghosting repositori Dataform Anda. - BigQuery Data Viewer
(
roles/bigquery.dataViewer) di project yang memerlukan akses hanya baca dari Dataform. - BigQuery Job User
(
roles/bigquery.jobUser) di project yang menghosting repositori Dataform Anda. - BigQuery Data Owner
(
roles/bigquery.dataOwner) jika Anda ingin mengkueri set data BigQuery. - Peran BigQuery untuk kontrol akses tingkat kolom jika Anda ingin menggunakan tag kebijakan BigQuery.
Selain itu, berikan peran berikut kepada agen layanan Dataform di akun layanan yang efektif untuk konfigurasi alur kerja. Peran ini diperlukan agar mode bertindak sebagai yang ketat dapat berfungsi.
- Service Account User
(
roles/iam.serviceAccountUser) - Service Account Token Creator
(
roles/iam.serviceAccountTokenCreator)
Untuk rilis repositori otomatis dan operasi alur kerja otomatis,
berikan izin iam.serviceAccounts.actAs kepada agen layanan Dataform di
akun layanan yang efektif.
Untuk mengaktifkan pengayaan metadata di Knowledge Catalog
dan integrasi kartu skor kualitas data,
berikan peran
Dataplex Catalog Editor
(roles/dataplex.catalogEditor) di project atau grup entri @bigquery
ke akun layanan kustom atau Akun Google yang digunakan untuk eksekusi alur kerja.
Pertimbangan keamanan
Memberikan peran yang diperlukan oleh Dataform ke agen layanan Dataform, akun layanan kustom, atau Akun Google pengguna memiliki pertimbangan keamanan berikut:
Setiap akun layanan kustom yang diberi peran yang diperlukan dapat memperoleh akses ke BigQuery, Secret Manager, atau Knowledge Catalog dalam project yang dimiliki akun layanan, terlepas dari Kontrol Layanan VPC. Saat Dataform menggunakan akun layanan kustom untuk menjalankan alur kerja, permintaan Dataform diperlakukan seolah-olah berasal dari dalam perimeter Kontrol Layanan VPC project yang berisi repositori Anda. Oleh karena itu, Kontrol Layanan VPC tidak memblokir komunikasi antara Dataform dan layanan lainnya, seperti BigQuery, Secret Manager, atau Knowledge Catalog, jika resource tersebut berada dalam perimeter layanan yang sama.
Untuk mengetahui detail selengkapnya tentang cara mengelola batas keamanan ini, lihat Mengonfigurasi Kontrol Layanan VPC.
Setiap pengguna yang memiliki izin IAM
dataform.repositories.createdapat menjalankan kode menggunakan agen layanan Dataform dan semua izin yang diberikan ke agen layanan atau akun layanan tersebut.Untuk mengetahui informasi selengkapnya, lihat Pertimbangan keamanan untuk izin Dataform.
Untuk mempertahankan model izin yang aman, audit binding peran agen layanan Dataform secara rutin. Untuk petunjuk pemantauan mendetail, lihat Memantau izin agen layanan dengan Security Command Center.
Untuk membatasi data yang dapat dibaca atau ditulis oleh pengguna, agen layanan, atau akun layanan di BigQuery, Anda dapat memberikan izin IAM BigQuery 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 mencegah pengguna melakukan tindakan saat menggunakan kredensial pengguna untuk Akun Google pengguna lain, batasan berikut diterapkan:
- Untuk mengubah konfigurasi alur kerja dengan kredensial pengguna Akun Google lain yang dilampirkan ke konfigurasi tersebut, Anda harus melampirkan kredensial pengguna untuk Akun Google Anda sendiri ke konfigurasi alur kerja atau mengubah konfigurasi alur kerja untuk melakukan autentikasi dengan akun layanan kustom.
- Anda tidak dapat mengubah hasil kompilasi untuk konfigurasi rilis jika ada konfigurasi alur kerja yang merujuk ke konfigurasi rilis yang memiliki kredensial pengguna Akun Google lain yang dilampirkan.
Anda tidak dapat menetapkan konfigurasi alur kerja untuk melakukan autentikasi dengan kredensial pengguna Akun Google dan mereferensikan konfigurasi rilis dengan jadwal. Batasan ini memiliki konsekuensi berikut:
- Anda tidak dapat memperbarui konfigurasi rilis untuk menggunakan jadwal jika ada konfigurasi alur kerja yang merujuk ke konfigurasi rilis yang ditetapkan untuk melakukan autentikasi dengan kredensial pengguna Akun Google.
- Anda tidak dapat membuat konfigurasi alur kerja yang melakukan autentikasi dengan kredensial pengguna Akun Google dan mengarah ke konfigurasi rilis dengan jadwal.
- Anda tidak dapat membuat atau memperbarui konfigurasi alur kerja untuk menggunakan kredensial pengguna Akun Google dan mengarah ke konfigurasi rilis dengan jadwal.
Untuk melarang penggunaan kredensial pengguna akhir Akun Google, administrator organisasi dapat membuat batasan kebijakan organisasi kustom yang menolak setelan
end_user_auth_config. Untuk mengetahui informasi selengkapnya, lihat Membuat batasan kebijakan organisasi kustom.
Memberikan peran BigQuery yang diperlukan
Untuk memberikan peran IAM BigQuery yang diperlukan kepada agen layanan Dataform, akun layanan kustom yang ingin Anda gunakan di Dataform, atau Akun Google pengguna yang ingin Anda gunakan untuk melakukan autentikasi 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 agen layanan, ID akun layanan, atau email Akun Google pengguna.
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 peran yang diperlukan untuk alur kerja otomatis
Untuk menggunakan akun layanan kustom di Dataform, agen layanan Dataform harus dapat mengakses akun layanan kustom. Hal ini memungkinkan Dataform menjalankan alur kerja Anda menggunakan izin yang ditentukan di akun layanan kustom, bukan di akun agen layanan.
Untuk memberikan akses ini, Anda harus memberikan
peran Service Account Token Creator
(roles/iam.serviceAccountTokenCreator) kepada agen layanan
Dataform sebagai akun utama. Hal ini memungkinkan agen layanan Dataform meniru akun layanan dengan membuat kredensial berumur pendek yang dikenal sebagai token. Token ini diperlukan agar Dataform dapat menjalankan alur kerja menggunakan identitas akun layanan kustom.
Anda juga perlu memberikan
peran Service Account User
(roles/iam.serviceAccountUser) kepada agen layanan
Dataform. Hal ini memungkinkan agen layanan Dataform memulai
alur kerja otomatis baru untuk konfigurasi alur kerja yang dijalankan oleh akun layanan kustom.
Untuk memberikan akses ke akun layanan kustom kepada agen layanan Dataform, ikuti langkah-langkah berikut:
Di konsol Google Cloud , buka IAM > Service accounts.
Pilih project Google Cloud tempat akun layanan kustom Anda berada.
Di halaman Service accounts for project "PROJECT_NAME", pilih akun layanan kustom Anda.
Buka Principals with access, lalu klik Grant Access.
Di kolom New principals, masukkan ID agen layanan Dataform Anda.
ID agen layanan Dataform Anda dalam format berikut:
service-PROJECT_NUMBER@gcp-sa-dataform.Dalam daftar Select a role, pilih peran Service Account Token Creator dan peran Service Account User.
Klik Simpan.
Akun layanan kustom kini siap dikonfigurasi dalam repositori Dataform Anda.
Mengaudit konfigurasi akun layanan
Bagian ini menunjukkan cara mengaudit resource Dataform untuk memastikan penggunaan akun layanan dan pemberian izin yang tepat. Audit sangat penting saat menggunakan akun layanan kustom, karena akun tersebut memerlukan izin khusus agar agen layanan Dataform dapat beroperasi.
Saat menggunakan akun layanan kustom untuk repositori atau konfigurasi alur kerja Dataform, Anda harus memverifikasi bahwa agen layanan Dataform memiliki peran Service Account User (roles/iam.serviceAccountUser) di akun layanan kustom. Peran ini
memberikan izin iam.serviceAccounts.actAs, yang memungkinkan operasi terjadwal,
yang dimulai oleh agen layanan Dataform, meniru identitas
akun layanan kustom. Selain itu, pastikan agen layanan Dataform memiliki peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) di akun layanan yang efektif.
Memverifikasi akun layanan repositori
Pertama, identifikasi aset dataform.Repository yang termasuk dalam cakupan untuk penjadwalan dan eksekusi Dataform sendiri. Kemudian, verifikasi konfigurasi akun layanan untuk repositori yang tercakup tersebut.
Gunakan Inventaris Aset Cloud untuk mencantumkan semua resource dari jenis
dataform.Repository. Untuk mengetahui informasi selengkapnya, lihat Melihat aset.Untuk setiap repositori dalam output Inventaris Aset Cloud, periksa kolom
resource.data.labelsuntuk menentukan apakah repositori tersebut termasuk dalam cakupan. Jalur persisnya mungkin sedikit berbeda berdasarkan format ekspor Anda.Identifikasi repositori di luar cakupan dengan memeriksa peta label untuk kunci
single-file-asset-type. Keberadaan kunci ini menunjukkan bahwa repositori digunakan oleh fitur BigQuery. Jika nilainya adalahsqlataudata_canvas, repositori dapat dikecualikan dari pemeriksaan izin akun layanan.Repositori lainnya yang tidak memiliki kunci atau nilai ini termasuk dalam cakupan pemeriksaan izin akun layanan.
Untuk setiap repositori dalam cakupan, periksa kolom
resource.data.serviceAccountdi output Inventaris Aset Cloud untuk menentukan apakah akun layanan kustom telah dikonfigurasi:- Jika kolom
resource.data.serviceAccountada dan nilainya berbeda dengan alamat email agen layanan Dataform project, berarti repositori menggunakan akun layanan kustom. Jika kolom
resource.data.serviceAccounttidak ada, atau jika nilai kolom cocok dengan agen layanan Dataform project, repositori akan menggunakan agen layanan.
- Jika kolom
Jika akun layanan kustom digunakan, pastikan agen layanan Dataform memiliki peran Pengguna Akun Layanan (
roles/iam.serviceAccountUser) dan peran Pembuat Token Akun Layanan (roles/iam.serviceAccountTokenCreator) di akun layanan kustom tersebut.
Memverifikasi akun layanan konfigurasi alur kerja
Menggunakan akun layanan kustom khusus untuk konfigurasi alur kerja Dataform adalah praktik terbaik keamanan, yang sesuai dengan prinsip hak istimewa terendah.
Untuk memverifikasi penggunaan akun layanan untuk dataform.WorkflowConfig resources, lakukan hal berikut:
Gunakan Inventaris Aset Cloud untuk mencantumkan semua resource dari jenis
dataform.WorkflowConfig.Untuk setiap konfigurasi alur kerja, periksa output Inventaris Aset Cloud untuk menentukan akun layanan yang efektif:
- Jika kolom
resource.data.serviceAccountada, nilai ini adalah alamat email akun layanan yang ditetapkan secara eksplisit pada konfigurasi alur kerja. - Jika kolom
resource.data.serviceAccounttidak ada, konfigurasi alur kerja akan mewarisi akun layanan dari repositori induknya. Periksa konfigurasi repositori induk untuk menemukan akun layanan yang efektif.
- Jika kolom
Identifikasi apakah akun layanan kustom sedang digunakan dengan membandingkan alamat email akun layanan yang efektif dengan alamat email agen layanan Dataform project. Jika berbeda, berarti akun layanan kustom sedang digunakan.
Jika akun layanan kustom sedang digunakan, pastikan agen layanan Dataform memiliki peran Service Account User (
roles/iam.serviceAccountUser) dan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) yang diberikan pada akun layanan kustom tersebut. Izin ini memungkinkan agen layanan Dataform memulai eksekusi alur kerja dengan meniru akun layanan kustom.
Memantau izin agen layanan dengan Security Command Center
Untuk memastikan kepatuhan berkelanjutan terhadap prinsip hak istimewa terendah, pantau project Anda secara aktif di Security Command Center untuk menemukan temuan terkait akun layanan dan agen layanan yang memiliki hak istimewa berlebihan.
Untuk mengetahui petunjuk tentang cara meninjau dan menerapkan temuan perbaikan di Security Command Center, lihat Temuan pemberi rekomendasi IAM dan Menyelidiki temuan identitas di konsol.
Saat Anda memulihkan temuan SERVICE_AGENT_GRANTED_BASIC_ROLE untuk agen layanan Dataform, ganti peran yang terlalu permisif dengan peran bawaan yang memiliki izin minimum yang diperlukan, yang dicakupkan ke resource tertentu. Misalnya, berikan peran Service Account User (roles/iam.serviceAccountUser) di akun layanan tertentu.
Mengontrol akses ke Dataform dengan IAM
Bagian ini menjelaskan opsi kontrol akses untuk Dataform dan menunjukkan cara melihat dan memberikan peran Dataform. Dataform menggunakan Identity and Access Management (IAM) untuk kontrol akses. Untuk mengetahui informasi selengkapnya tentang peran dan izin di IAM, lihat indeks peran dan izin IAM.
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. |
|
Dataform Editor( Edit access to Workspaces and Repositories. |
|
Dataform Viewer( Read-only 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 Scheduler Beta( Access for scheduling workflows and releases. |
|
Code Viewer( Read-only access to all code resources. |
|
Team Folder Commenter Beta( View and comment access to a team folder and its contents. |
|
Team Folder Contributor( Edit access to a team folder and its contents. |
|
Team Folder Creator( Access to create new team folders. |
|
Team Folder Owner( Full access to a team folder and its contents. Can share the team folder and its contents. |
|
Team Folder Viewer( View access to a team folder and its contents. |
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Peran Dataform khusus
Peran khusus dapat mencakup izin apa pun yang Anda tentukan. Anda dapat membuat peran khusus yang mencakup 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 menjalankan kode di BigQuery menggunakan akun layanan kustom dan semua izin yang diberikan ke akun layanan tersebut. Hal ini mencakup eksekusi
alur kerja Dataform
dan kemampuan untuk mengelola metadata di Knowledge Catalog.
Karena mode bertindak sebagai yang ketat diterapkan untuk semua repositori, izin dataform.repositories.create secara implisit mengharuskan pengguna memiliki izin bertindak sebagai di akun layanan kustom untuk eksekusi alur kerja berikutnya. Hal ini memastikan bahwa hanya pengguna dengan hak peniruan identitas eksplisit yang dapat mengeksekusi kode menggunakan identitas akun layanan.
Izin dataform.repositories.create disertakan dalam peran IAM berikut:
- BigQuery Admin (
roles/bigquery.admin) - BigQuery Job User (
roles/bigquery.jobUser) - BigQuery Studio User (
roles/bigquery.studioUser) - Pengguna BigQuery (
roles/bigquery.user) - Pembuat Kode (
roles/dataform.codeCreator) - Editor Kode (
roles/dataform.codeEditor) - Pemilik Kode (
roles/dataform.codeOwner) - Colab Enterprise User (
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 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 kustom serta peran dan izin yang diperlukan, lihat Memberikan akses yang diperlukan ke Dataform.
Akses secret selama penginstalan paket
Jika Anda mengonfigurasi paket NPM pribadi menggunakan secret Secret Manager, secret tersebut berpotensi diakses oleh pengguna yang memiliki izin untuk mengubah kode atau memicu kompilasi kode dari commit Git tertentu di repositori.
Selama penginstalan paket—yang dipicu saat menginstal paket secara manual
di ruang kerja atau saat mengompilasi kode dari commit Git tertentu—klien
NPM membaca kredensial dari file .npmrc dan mengirimkan
token autentikasi ke registry NPM yang dikonfigurasi. Pengguna yang memiliki izin untuk mengubah file .npmrc di ruang kerjanya dapat mengonfigurasi setelan untuk mengakses secret dengan mengalihkan permintaan registry ke server eksternal.
Penginstalan dan potensi eksposur token ini dapat terjadi dalam skenario berikut:
Penginstalan paket Workspace: dipicu secara manual dalam ruang kerja. Hal ini memerlukan izin edit ruang kerja, yang dapat ditemukan dalam peran Dataform Editor (
roles/dataform.editor) atau Dataform Code Editor (roles/dataform.codeEditor).Mengompilasi commitish Git: dipicu secara otomatis saat membuat hasil kompilasi untuk commitish Git, seperti cabang, tag, atau SHA commit, di repositori. Skenario ini memerlukan izin
dataform.compilationResults.create.
Untuk mengamankan kredensial Anda, sebaiknya lakukan hal berikut:
Berikan peran dengan izin pengeditan repositori (seperti Dataform Code Editor) atau izin kompilasi (seperti Dataform Code Viewer) hanya kepada pengguna tepercaya.
Batasi repositori Git jarak jauh yang dapat dihubungkan ke Dataform dengan menggunakan kebijakan organisasi. Untuk mengetahui informasi selengkapnya, lihat Membatasi repositori jarak jauh.
Batasi akses Secret Manager dari agen layanan Dataform hanya ke secret yang diperlukan.
Larang penggunaan kredensial pengguna akhir dengan menggunakan batasan kebijakan organisasi kustom yang menolak setelan
end_user_auth_config. Untuk mengetahui informasi selengkapnya, lihat Membuat batasan kebijakan organisasi kustom.
Melihat peran Dataform
Di dalam konsol Google Cloud , lakukan langkah-langkah berikut:
Buka halaman IAM & Admin > Roles.
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 pada setiap
repositori menggunakan permintaan
repositories.setIamPolicy
Dataform API.
Untuk menetapkan peran IAM Dataform pada setiap repositori Dataform, ikuti langkah-langkah berikut:
Di terminal, teruskan permintaan
repositories.setIamPolicyDataform API dengan kebijakan akses.Dalam kebijakan, ikat pengguna, grup, domain, agen layanan, 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 pada 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 Admin Dataform di semua repositori.
Perintah berikut meneruskan permintaan Dataform API repositories.setIamPolicy
yang memberikan peran Dataform Editor di repositori sales
kepada 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/v1/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 pada repositori ke 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. ID 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 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.setIamPolicyDataform API dengan kebijakan akses.Dalam kebijakan, ikat akun utama
allAuthenticatedUserske peran yang dipilih dalam format berikut:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }Ganti
ROLEdengan 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 di 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/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Mencegah akses publik ke repositori
Untuk memastikan bahwa tidak ada akses yang diberikan kepada publik di repositori Dataform mana pun, Anda dapat membatasi akun utama allAuthenticatedUsers di project Anda.
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,
principal allAuthenticatedUsers tidak dapat digunakan dalam kebijakan IAM
apa pun di project Anda, yang mencegah pemberian akses publik
ke semua resource, termasuk repositori Dataform.
Untuk mengetahui 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 mengautentikasi dan memberi otorisasi kepada pengguna ke layanan Google Cloud 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 tabel dan tampilan individual untuk mengontrol aksesnya di BigQuery setelah eksekusi.
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
.sqlxdari 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:
TABLEatauVIEW.USER_LIST: daftar pengguna yang dipisahkan koma yang diberi peran.
Untuk mengetahui daftar format yang valid, lihat user_list.
Opsional: Klik Format.
Jalankan tabel atau tampilan.
Jika Anda memberikan akses pada tabel inkremental, hapus pernyataan
GRANTdari file definisi tabel setelah eksekusi pertama.
Contoh kode berikut menunjukkan peran BigQuery Viewer yang diberikan pada tabel kepada pengguna:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
Mencabut 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
.sqlxdari tabel atau tampilan yang ingin Anda cabut aksesnya.Di blok
post_operations, masukkan pernyataanREVOKEberikut: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:
TABLEatauVIEW. - USER_LIST: daftar pengguna yang dipisahkan koma yang perannya dicabut. Untuk mengetahui daftar format yang valid, lihat user_list.
Untuk mencabut akses yang diberikan dalam pernyataan
GRANTdalam file, ganti pernyataanGRANTdengan pernyataanREVOKE.Opsional: Klik Format.
Jalankan tabel atau tampilan.
Jika Anda mencabut akses ke tabel inkremental, hapus pernyataan
REVOKEdari file definisi tabel setelah eksekusi pertama.
Contoh kode berikut menunjukkan peran BigQuery Viewer 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 menu
More.Klik Create file.
Di kolom Add a file path, masukkan nama file diikuti dengan
.sqlxsetelahdefinitions/. Contoh,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:
TABLEatauVIEW. - RESOURCE_NAME: nama tabel atau tampilan.
- USER_LIST: daftar pengguna yang dipisahkan koma yang diberi atau dicabut perannya. Untuk mengetahui daftar format yang valid, lihat user_list.
Tambahkan pernyataan
GRANTdanREVOKEsesuai kebutuhan.Untuk mencabut akses yang diberikan dalam pernyataan
GRANTdalam file, ganti pernyataanGRANTdengan pernyataanREVOKE.Menghapus pernyataan
GRANTtanpa menambahkan pernyataanREVOKEtidak akan mencabut akses.
Opsional: Klik Format.
Jalankan file setelah setiap update.
- Jika Anda memberikan atau mencabut akses pada tabel inkremental, hapus pernyataan
GRANTatauREVOKEdari file setelah eksekusi pertama pernyataan tersebut.
- Jika Anda memberikan atau mencabut akses pada tabel inkremental, hapus pernyataan
Menggunakan Config API untuk menyesuaikan perilaku IAM
Anda dapat menggunakan
metode Dataform API projects.locations.updateConfig
untuk menyesuaikan perilaku IAM dan meningkatkan keamanan.
Memberikan peran tertentu saat pembuatan resource
Saat Anda menetapkan kolom setAuthenticatedUserAdmin ke true di
resource projects.locations.repositories,
Dataform akan otomatis memberikan peran
Dataform Admin
(roles/dataform.admin) di repositori tersebut kepada pengguna yang membuat repositori. Selain itu, Dataform memberikan peran Admin Dataform di ruang kerja baru kepada setiap pengguna yang membuat ruang kerja di repositori tersebut.
Anda dapat menggunakan kolom creator_role
(Pratinjau)
dalam
metode projects.locations.updateConfig
untuk mengganti perilaku ini. Jika setAuthenticatedUserAdmin adalah true dan Anda
mengonfigurasi kolom creator_role dengan peran khusus, Dataform
akan memberikan peran khusus, bukan peran dataform.admin default.
Menerapkan izin penjadwalan yang ditingkatkan
Untuk mewajibkan pengguna memiliki izin eksplisit untuk menjadwalkan
alur kerja Dataform, tetapkan kolom enable_project_checks_for_scheduling ke true dalam
metode projects.locations.updateConfig.
Saat Anda mengaktifkan pemeriksaan ini untuk penjadwalan, pengguna memerlukan izin berikut:
Untuk membuat konfigurasi alur kerja:
- Izin
dataform.workflowConfigs.createpada project, yang diberikan oleh peran Code Scheduler (roles/dataform.codeScheduler). - Izin
dataform.repositories.scheduleWorkflowpada repositori, yang diberikan oleh peran Dataform Admin (roles/dataform.admin).
- Izin
Untuk membuat konfigurasi rilis:
- Izin
dataform.releaseConfigs.createpada project, yang diberikan oleh peran Code Scheduler (roles/dataform.codeScheduler). - Izin
dataform.repositories.scheduleReleasepada repositori, yang diberikan oleh peran Dataform Admin (roles/dataform.admin).
- Izin
Mengaktifkan ruang kerja pribadi
Untuk membatasi akses ruang kerja Dataform sehingga hanya pembuat ruang kerja yang dapat membaca dan menulis kode di ruang kerja tersebut, tetapkan kolom enable_private_workspace ke true dalam metode projects.locations.updateConfig.
Batasan ini juga berlaku untuk melihat artefak yang dihasilkan, seperti SQL yang dikompilasi, error kompilasi, dan log operasi untuk kompilasi atau pemanggilan alur kerja ruang kerja.
Setelan ini menggantikan peran IAM standar yang memberikan akses ruang kerja kepada pengguna repositori lain.
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 lebih lanjut konsep utama Workforce Identity Federation, lihat Workforce Identity Federation.
- Untuk mempelajari lebih lanjut peran dan izin IAM BigQuery, lihat Kontrol akses dengan IAM.
- Untuk mempelajari lebih lanjut cara memberikan izin terperinci ke set data BigQuery, lihat Mengontrol akses ke set data.