Mengontrol akses dengan IAM

Dokumen ini menunjukkan cara melakukan hal berikut di Dataform:

Sebelum memulai

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the 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:

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:

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:

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka Dataform

  2. Pilih atau buat repositori.

  3. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  4. Klik Grant Access.

  5. Di kolom New principals, masukkan ID akun layanan.

  6. Di daftar Select a role, pilih peran BigQuery Job User.

  7. Klik Add another role, lalu di daftar Select a role, pilih peran BigQuery Data Editor.

  8. Klik Add another role, lalu di daftar Select a role, pilih peran BigQuery Data Viewer.

  9. 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:

  1. Di konsol Google Cloud, buka IAM > Service accounts.

    Buka halaman Service accounts

  2. Pilih project.

  3. Di halaman Akun layanan untuk project "PROJECT_NAME", pilih akun layanan Dataform kustom Anda.

  4. Buka Izin, lalu klik Beri Akses.

  5. 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
    
  6. Dalam daftar Select a role, pilih peran Service Account Token Creator.

  7. 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

(roles/dataform.admin)

Full access to all Dataform resources.

dataform.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update
  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update
  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query
  • dataform.config.get
  • dataform.config.update
  • dataform.locations.get
  • dataform.locations.list
  • dataform.releaseConfigs.create
  • dataform.releaseConfigs.delete
  • dataform.releaseConfigs.get
  • dataform.releaseConfigs.list
  • dataform.releaseConfigs.update
  • dataform.repositories.commit
  • dataform.repositories.computeAccessTokenStatus
  • dataform.repositories.create
  • dataform.repositories.delete
  • dataform.repositories.fetchHistory
  • dataform.repositories.fetchRemoteBranches
  • dataform.repositories.get
  • dataform.repositories.getIamPolicy
  • dataform.repositories.list
  • dataform.repositories.queryDirectoryContents
  • dataform.repositories.readFile
  • dataform.repositories.setIamPolicy
  • dataform.repositories.update
  • dataform.workflowConfigs.create
  • dataform.workflowConfigs.delete
  • dataform.workflowConfigs.get
  • dataform.workflowConfigs.list
  • dataform.workflowConfigs.update
  • dataform.workflowInvocations.cancel
  • dataform.workflowInvocations.create
  • dataform.workflowInvocations.delete
  • dataform.workflowInvocations.get
  • dataform.workflowInvocations.list
  • dataform.workflowInvocations.query
  • dataform.workspaces.commit
  • dataform.workspaces.create
  • dataform.workspaces.delete
  • dataform.workspaces.fetchFileDiff
  • dataform.workspaces.fetchFileGitStatuses
  • dataform.workspaces.fetchGitAheadBehind
  • dataform.workspaces.get
  • dataform.workspaces.getIamPolicy
  • dataform.workspaces.installNpmPackages
  • dataform.workspaces.list
  • dataform.workspaces.makeDirectory
  • dataform.workspaces.moveDirectory
  • dataform.workspaces.moveFile
  • dataform.workspaces.pull
  • dataform.workspaces.push
  • dataform.workspaces.queryDirectoryContents
  • dataform.workspaces.readFile
  • dataform.workspaces.removeDirectory
  • dataform.workspaces.removeFile
  • dataform.workspaces.reset
  • dataform.workspaces.searchFiles
  • dataform.workspaces.setIamPolicy
  • dataform.workspaces.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeCommenter)

Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

(roles/dataform.codeCreator)

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.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.create

dataform.repositories.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeEditor)

Edit access code resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.commit

dataform.repositories.computeAccessTokenStatus

dataform.repositories.create

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workspaces.commit

dataform.workspaces.create

dataform.workspaces.delete

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.installNpmPackages

dataform.workspaces.list

dataform.workspaces.makeDirectory

dataform.workspaces.moveDirectory

dataform.workspaces.moveFile

dataform.workspaces.pull

dataform.workspaces.push

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.removeDirectory

dataform.workspaces.removeFile

dataform.workspaces.reset

dataform.workspaces.searchFiles

dataform.workspaces.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeOwner)

Full access to code resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.*

  • dataform.repositories.commit
  • dataform.repositories.computeAccessTokenStatus
  • dataform.repositories.create
  • dataform.repositories.delete
  • dataform.repositories.fetchHistory
  • dataform.repositories.fetchRemoteBranches
  • dataform.repositories.get
  • dataform.repositories.getIamPolicy
  • dataform.repositories.list
  • dataform.repositories.queryDirectoryContents
  • dataform.repositories.readFile
  • dataform.repositories.setIamPolicy
  • dataform.repositories.update

dataform.workspaces.*

  • dataform.workspaces.commit
  • dataform.workspaces.create
  • dataform.workspaces.delete
  • dataform.workspaces.fetchFileDiff
  • dataform.workspaces.fetchFileGitStatuses
  • dataform.workspaces.fetchGitAheadBehind
  • dataform.workspaces.get
  • dataform.workspaces.getIamPolicy
  • dataform.workspaces.installNpmPackages
  • dataform.workspaces.list
  • dataform.workspaces.makeDirectory
  • dataform.workspaces.moveDirectory
  • dataform.workspaces.moveFile
  • dataform.workspaces.pull
  • dataform.workspaces.push
  • dataform.workspaces.queryDirectoryContents
  • dataform.workspaces.readFile
  • dataform.workspaces.removeDirectory
  • dataform.workspaces.removeFile
  • dataform.workspaces.reset
  • dataform.workspaces.searchFiles
  • dataform.workspaces.setIamPolicy
  • dataform.workspaces.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeViewer)

Read-only access to all code resources.

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.editor)

Edit access to Workspaces and Read-only access to Repositories.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.config.get

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.releaseConfigs.get

dataform.releaseConfigs.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workflowConfigs.get

dataform.workflowConfigs.list

dataform.workflowInvocations.*

  • dataform.workflowInvocations.cancel
  • dataform.workflowInvocations.create
  • dataform.workflowInvocations.delete
  • dataform.workflowInvocations.get
  • dataform.workflowInvocations.list
  • dataform.workflowInvocations.query

dataform.workspaces.commit

dataform.workspaces.create

dataform.workspaces.delete

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.installNpmPackages

dataform.workspaces.list

dataform.workspaces.makeDirectory

dataform.workspaces.moveDirectory

dataform.workspaces.moveFile

dataform.workspaces.pull

dataform.workspaces.push

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.removeDirectory

dataform.workspaces.removeFile

dataform.workspaces.reset

dataform.workspaces.searchFiles

dataform.workspaces.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.viewer)

Read-only access to all Dataform resources.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.compilationResults.get

dataform.compilationResults.list

dataform.compilationResults.query

dataform.config.get

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.releaseConfigs.get

dataform.releaseConfigs.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workflowConfigs.get

dataform.workflowConfigs.list

dataform.workflowInvocations.get

dataform.workflowInvocations.list

dataform.workflowInvocations.query

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

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:

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:

  1. Buka halaman IAM & Admin > Peran.

    Buka Peran

  2. Di kolom Filter, pilih Used in, ketik Dataform, lalu tekan Enter.

  3. 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:

  1. Di terminal, teruskan permintaan repositories.setIamPolicy Dataform API dengan kebijakan akses.

  2. 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, atau serviceAccount.
    • IDENTIFIER: pengguna, grup, domain, atau akun layanan yang ingin Anda beri peran.
  3. Di halaman IAM, pastikan semua pengguna dapat melihat daftar lengkap repositori Dataform melalui peran Dataform dengan izin dataform.repositories.list.

  4. 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:

  1. Di terminal, teruskan permintaan repositories.setIamPolicy Dataform API dengan kebijakan akses.

  2. 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:

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka Dataform

  2. Pilih repositori, lalu pilih ruang kerja.

  3. Di panel Files, luaskan direktori definitions/.

  4. Pilih file definisi .sqlx tabel atau tampilan yang ingin Anda beri akses.

  5. 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 atau VIEW.

    • USER_LIST: daftar pengguna yang dipisahkan koma yang diberi peran.

      Untuk daftar format yang valid, lihat user_list.

  6. Opsional: Klik Format.

  7. Jalankan tabel atau tampilan.

  8. 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:

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka Dataform

  2. Pilih repositori, lalu pilih ruang kerja.

  3. Di panel Files, luaskan direktori definitions/.

  4. Pilih file definisi .sqlx tabel atau tampilan yang aksesnya ingin Anda cabut.

  5. Di blok post_operations, masukkan pernyataan REVOKE 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 atau VIEW.
    • USER_LIST: daftar pengguna yang dipisahkan koma yang perannya dicabut. Untuk daftar format yang valid, lihat user_list.
  6. Untuk mencabut akses yang diberikan dalam pernyataan GRANT dalam file, ganti pernyataan GRANT dengan pernyataan REVOKE.

  7. Opsional: Klik Format.

  8. Jalankan tabel atau tampilan.

  9. 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:

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka Dataform

  2. Pilih repositori, lalu pilih ruang kerja.

  3. Di panel Files, di samping definitions/, klik menu More.

  4. Klik Create file.

  5. Di kolom Add a file path, masukkan nama file diikuti dengan .sqlx setelah definitions/. Contohnya, definitions/table-access.sqlx

    Nama file hanya boleh berisi angka, huruf, tanda hubung, dan garis bawah.

  6. Klik Create file.

  7. Di panel Files, luaskan direktori definitions/, lalu pilih file yang baru dibuat.

  8. 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 atau VIEW.
    • 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.
  9. Tambahkan pernyataan GRANT dan REVOKE sesuai kebutuhan.

    1. Untuk mencabut akses yang diberikan dalam pernyataan GRANT dalam file, ganti pernyataan GRANT dengan pernyataan REVOKE.

      Menghapus pernyataan GRANT tanpa menambahkan pernyataan REVOKE tidak akan mencabut akses.

  10. Opsional: Klik Format.

  11. Jalankan file setelah setiap update.

    1. Jika Anda memberikan atau mencabut akses pada tabel inkremental, hapus pernyataan GRANT atau REVOKE dari file setelah eksekusi pertama pernyataan.

Langkah berikutnya