Mengontrol akses dengan IAM

Dokumen ini menunjukkan cara melakukan hal berikut di Dataform:

Sebelum memulai

    Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

    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

    • 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    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.

    Enable the APIs

    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

    • 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    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.

    Enable the APIs

Memberikan akses yang diperlukan ke Dataform

Bagian ini menunjukkan cara memberikan peran Identity and Access Management (IAM) yang diperlukan oleh 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:

Saat membuat konfigurasi alur kerja atau repositori Dataform, Anda dapat memilih akun layanan apa pun yang memiliki izin bertindak sebagai untuk akun tersebut. Anda harus mengonfigurasi izin bertindak sebagai 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.iam.gserviceaccount.com

Ganti PROJECT_NUMBER dengan ID angka project Google Cloud Anda. Anda dapat menemukan ID project di dasbor konsol Google Cloud .Google 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 (Pratinjau) yang digunakan untuk mengautentikasi di Dataform memerlukan peran IAM BigQuery berikut agar dapat menjalankan alur kerja di BigQuery:

Selain itu, berikan peran berikut kepada agen layanan Dataform di akun layanan efektif untuk konfigurasi alur kerja. Peran ini diperlukan agar mode berperan sebagai (act-as) ketat berfungsi.

Untuk rilis repositori otomatis dan eksekusi alur kerja otomatis, berikan izin iam.serviceAccounts.actAs kepada agen layanan Dataform di akun layanan efektif.

Pertimbangan keamanan

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

  • Akun layanan kustom 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. Saat Dataform menggunakan akun layanan kustom untuk mengeksekusi 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 lain, seperti BigQuery atau Secret Manager, 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 pengikatan 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 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 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 mereferensikan konfigurasi rilis yang memiliki kredensial pengguna Akun Google lain yang terlampir.
  • 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

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 (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 agen layanan, ID akun layanan, atau email Akun Google pengguna (Pratinjau).

  6. Pada 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 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 Anda, bukan di akun agen layanan.

Untuk memberikan akses ini, Anda perlu memberikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) kepada agen layanan Dataform sebagai akun utama. Hal ini memungkinkan agen layanan Dataform meniru identitas akun layanan dengan membuat kredensial berjangka pendek yang dikenal sebagai token. Token ini diperlukan agar Dataform dapat menjalankan alur kerja menggunakan identitas akun layanan kustom.

Anda juga perlu memberikan peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) kepada agen layanan Dataform. Hal ini memungkinkan agen layanan Dataform memulai jalankan alur kerja otomatis baru untuk konfigurasi alur kerja yang dijalankan oleh akun layanan kustom.

Untuk memberikan akses agen layanan Dataform ke akun layanan kustom, ikuti langkah-langkah berikut:

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

    Buka halaman Service accounts

  2. Pilih project Google Cloud tempat akun layanan kustom Anda berada.

  3. Di halaman Service accounts for project "PROJECT_NAME", pilih akun layanan kustom Anda.

  4. Buka Principals with access, lalu klik Grant Access.

  5. Di kolom New principals, masukkan ID agen layanan Dataform Anda.

    ID agen layanan Dataform Anda dalam format berikut:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. Di daftar Select a role, pilih peran Service Account Token Creator dan peran Service Account User.

  7. 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 tertentu agar agen layanan Dataform dapat beroperasi.

Saat menggunakan akun layanan kustom untuk konfigurasi repositori atau alur kerja Dataform, Anda harus memverifikasi bahwa agen layanan Dataform memiliki peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) di akun layanan kustom. Peran ini memberikan izin iam.serviceAccounts.actAs, yang memungkinkan eksekusi 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 berlaku.

Memverifikasi akun layanan repositori

Pertama, identifikasi aset dataform.Repository yang termasuk dalam cakupan penjadwalan dan eksekusi Dataform. Kemudian, verifikasi konfigurasi akun layanan untuk repositori dalam cakupan tersebut.

  1. Gunakan Inventaris Aset Cloud untuk mencantumkan semua resource jenis dataform.Repository. Untuk mengetahui informasi selengkapnya, lihat artikel Melihat aset Anda.

  2. Untuk setiap repositori dalam output Inventaris Aset Cloud, periksa kolom resource.data.labels untuk menentukan apakah repositori tersebut termasuk dalam cakupan. Jalur yang tepat mungkin sedikit berbeda berdasarkan format ekspor Anda.

  3. 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 adalah sql atau data_canvas, repositori dapat dikecualikan dari pemeriksaan izin akun layanan.

    Repositori yang tersisa yang tidak memiliki kunci atau nilai ini berada dalam cakupan pemeriksaan izin akun layanan.

  4. Untuk setiap repositori dalam cakupan, periksa kolom resource.data.serviceAccount dalam output Inventaris Aset Cloud untuk menentukan apakah akun layanan kustom dikonfigurasi:

    • Jika kolom resource.data.serviceAccount ada dan nilainya berbeda dengan alamat email agen layanan Dataform project, repositori akan menggunakan akun layanan kustom.
    • Jika kolom resource.data.serviceAccount tidak ada, atau jika nilai kolom cocok dengan agen layanan Dataform project, repositori akan menggunakan agen layanan.

  5. 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 selaras dengan prinsip hak istimewa terendah.

Untuk memverifikasi penggunaan akun layanan untuk dataform.WorkflowConfig resources, lakukan hal berikut:

  1. Gunakan Inventaris Aset Cloud untuk mencantumkan semua resource jenis dataform.WorkflowConfig.

  2. Untuk setiap konfigurasi alur kerja, periksa output Inventaris Aset Cloud untuk menentukan akun layanan yang efektif:

    • Jika kolom resource.data.serviceAccount ada, nilai ini adalah alamat email akun layanan yang ditetapkan secara eksplisit pada konfigurasi alur kerja.
    • Jika kolom resource.data.serviceAccount tidak ada, konfigurasi alur kerja akan mewarisi akun layanan dari repositori induknya. Periksa konfigurasi repositori induk untuk menemukan akun layanan yang efektif.
  3. Identifikasi apakah akun layanan kustom sedang digunakan dengan membandingkan alamat email akun layanan efektif dengan alamat email agen layanan Dataform project. Jika berbeda, akun layanan kustom sedang digunakan.

  4. Jika akun layanan kustom sedang digunakan, pastikan agen layanan Dataform memiliki peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) dan peran Pembuat Token Akun Layanan (roles/iam.serviceAccountTokenCreator) yang diberikan di akun layanan kustom tersebut. Dengan izin ini, agen layanan Dataform dapat memulai eksekusi alur kerja dengan meniru identitas 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 berlebih.

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 memperbaiki 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 dicakup ke resource tertentu. Misalnya, berikan peran Service Account User (roles/iam.serviceAccountUser) pada akun layanan tertentu.

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 indeks peran dan izin IAM.

Peran Dataform bawaan

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.folders.addContents
  • dataform.folders.create
  • dataform.folders.delete
  • dataform.folders.deleteTree
  • dataform.folders.get
  • dataform.folders.getIamPolicy
  • dataform.folders.move
  • dataform.folders.queryContents
  • dataform.folders.setIamPolicy
  • dataform.folders.update
  • dataform.locations.get
  • dataform.locations.list
  • dataform.operations.cancel
  • dataform.operations.delete
  • dataform.operations.get
  • dataform.operations.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.move
  • dataform.repositories.queryDirectoryContents
  • dataform.repositories.readFile
  • dataform.repositories.scheduleRelease
  • dataform.repositories.scheduleWorkflow