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

  8. Memberikan akses yang diperlukan 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 angka project Anda.Google Cloud Anda dapat menemukan Google Cloud project ID di dasbor konsolGoogle 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 konfigurasi repositori atau alur kerja Dataform, Anda dapat memilih akun layanan apa pun yang terkait dengan project Google Cloud Anda yang dapat Anda 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 dan Akun Google

    Akun layanan default dan kustom serta kredensial pengguna Akun Google (Pratinjau) yang digunakan untuk mengautentikasi di Dataform memerlukan peran IAM BigQuery berikut agar dapat menjalankan alur kerja di BigQuery:

    Selain itu, Anda perlu memberikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) kepada akun layanan Dataform default agar akun tersebut dapat mengakses akun layanan kustom yang ingin Anda gunakan di Dataform.

    Jika Anda mengaktifkan mode bertindak sebagai yang ketat (Pratinjau) dan mengonfigurasi setelan Frekuensi untuk konfigurasi alur kerja, berikan peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) kepada akun layanan Dataform default di akun layanan yang berlaku untuk konfigurasi alur kerja.

    Pertimbangan keamanan untuk akun layanan Dataform dan Akun Google

    Memberikan peran yang diperlukan oleh Dataform ke akun layanan atau Akun Google pengguna (Pratinjau) disertai pertimbangan keamanan berikut:

    • Akun layanan yang diberi peran yang diperlukan dapat memperoleh akses ke BigQuery atau Secret Manager di 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 mengetahui 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 terperinci ke set data atau tabel BigQuery tertentu. 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 Akun Google milik pengguna lain, batasan berikut diberlakukan:

    • Untuk mengubah konfigurasi alur kerja dengan kredensial pengguna Akun Google lain yang terlampir, Anda harus melampirkan kredensial pengguna Akun Google Anda sendiri ke konfigurasi alur kerja atau mengubah konfigurasi alur kerja untuk melakukan autentikasi dengan akun layanan.
    • Anda tidak dapat mengubah hasil kompilasi untuk konfigurasi rilis jika ada konfigurasi alur kerja yang mereferensikan konfigurasi rilis yang memiliki kredensial pengguna Akun Google lain yang dilampirkan.
    • Anda tidak dapat menyetel 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 mereferensikan 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.

    Memberikan peran BigQuery yang diperlukan ke akun layanan atau Akun Google yang digunakan di Dataform

    Untuk memberikan peran IAM BigQuery yang diperlukan ke akun layanan Dataform default, akun layanan kustom yang ingin Anda gunakan di Dataform, atau Akun Google pengguna yang ingin Anda gunakan untuk melakukan autentikasi di Dataform (Pratinjau), 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 atau email Akun Google pengguna (Pratinjau).

    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 Service Account Token Creator.

    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 Service accounts for project "PROJECT_NAME", pilih akun layanan Dataform kustom Anda.

    4. Buka Izin, lalu klik Berikan 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

    Bagian 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 bawaan 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

    dataform.locations.get

    dataform.repositories.get

    dataform.repositories.readFile

    resourcemanager.projects.get

    resourcemanager.projects.list

    (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.compilationResults.*

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

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

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

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

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

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

    Gives permission for the Dataform API to access a secret from Secret Manager

    dataform.compilationResults.create

    dataform.workflowInvocations.create

    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 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 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 terperinci ke set data atau tabel BigQuery tertentu. 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 serta peran dan 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 > Roles.

      Buka Peran

    2. Di kolom Filter, pilih Digunakan di, ketik Dataform, lalu tekan Enter.

    3. Klik salah satu peran yang tercantum untuk melihat izin peran di panel kanan.

      Misalnya, peran Admin Dataform 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 repositori tertentu

    Untuk mengontrol akses ke Dataform dengan izin terperinci, Anda dapat menetapkan peran IAM Dataform di setiap repositori menggunakan permintaan Dataform API repositories.setIamPolicy.

    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, ikat 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 repositories.setIamPolicy Dataform API yang memberikan peran Editor Dataform 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/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 Pelihat Dataform kepada 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:

    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 repositories.setIamPolicy Dataform API yang memberikan peran Dataform Viewer di repositori sales kepada 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 mana pun, Anda dapat membatasi prinsipal allAuthenticatedUsers di project Anda.

    Untuk membatasi allAuthenticatedUsers di project Anda, 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 di project Anda, yang mencegah pemberian akses publik ke semua resource, termasuk repositori Dataform.

    Untuk mengetahui informasi selengkapnya tentang kebijakan iam.allowedPolicyMemberDomains dan petunjuk untuk menyetelnya, 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 untuk 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 tabel dan tampilan tertentu 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:

    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 dari 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 mengetahui 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"
    }
    

    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:

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

    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 batalkan.
      • RESOURCE_TYPE: TABLE atau VIEW.
      • USER_LIST: daftar pengguna yang dipisahkan koma yang perannya dicabut. Untuk mengetahui 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 pada tabel:

    config { type: "table" }
    
    SELECT ...
    
    post_operations {
      REVOKE `roles/bigquery.dataViewer`
      ON TABLE ${self()}
      FROM "user:222larabrown@gmail.com"
    }
    

    Mengelola peran BigQuery untuk tabel dan tampilan secara kolektif

    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 Tambahkan jalur file, masukkan nama file yang 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 batalkan.
      • RESOURCE_TYPE: TABLE atau VIEW.
      • 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.
    9. Tambahkan pernyataan GRANT dan REVOKE sesuai kebutuhan.

      1. Untuk mencabut akses yang diberikan dalam pernyataan GRANT di 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