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.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.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.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.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.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.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.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 menjalankan kode di BigQuery menggunakan akun layanan Dataform default dan semua izin yang diberikan ke akun layanan tersebut. Hal ini mencakup eksekusi alur kerja SQL 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 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.

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

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 Pelihat Dataform 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 kode berikut:

    • ROLE: 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 layanan Google Cloud dengan IAM.

Dataform mendukung workforce identity federation tanpa batasan yang diketahui.

Langkah selanjutnya