Kasus penggunaan untuk memecahkan masalah akses di Google Cloud

Last reviewed 2022-09-29 UTC

Dokumen ini menjelaskan cara menggunakan alat Google Cloud untuk memecahkan kasus penggunaan terkait masalah saat mengakses resource Google Cloud. Dokumen ini tidak menjelaskan cara memecahkan masalah akses pengguna akhir terhadap aplikasi Anda. Dokumen ini mengasumsikan bahwa Anda telah memahami Kebijakan pemecahan masalah dan masalah akses di Google Cloud. Dokumen kebijakan pemecahan masalah dan masalah akses menjelaskan layanan Google Cloud yang dapat menerapkan kebijakan akses dan alat pemecahan masalah yang disediakan oleh Google Cloud.

Pendekatan pemecahan masalah

Langkah pertama dalam memecahkan masalah yang berhubungan dengan akses adalah dengan menentukan cara memecahkan masalah tersebut. Diagram berikut memberikan diagram alir dari salah satu pendekatan untuk memecahkan masalah akses. Diagram alir ini mengasumsikan bahwa Anda memiliki izin yang tepat untuk menyelesaikan langkah-langkah pemecahan masalah atau bahwa Anda dapat bekerja sama dengan seseorang yang memiliki izin yang diperlukan.

Diagram alir dari salah satu pendekatan untuk pemecahan masalah akses.

Diagram sebelumnya menjelaskan langkah-langkah berikut:

  1. Memverifikasi akses pengguna di Konsol Google Cloud dan di Cloud Shell. Jika seluruh akses ditolak, periksa entri tingkat keparahan error di log audit.
    1. Jika terdapat entri tingkat keparahan error, periksa izin yang diperlukan.
      1. Jika Anda dapat memberikan izin untuk menyelesaikan masalah akses, selesaikan masalah tersebut.
      2. Jika Anda tidak dapat menyelesaikan masalah akses, hubungi Cloud Customer Care.
    2. Jika tidak terdapat entri tingkat keparahan error, hubungi Customer Care.
  2. Jika tidak terdapat masalah akses, periksa masalah jaringan. Jika Anda menemukan masalah jaringan, selesaikan masalah tersebut.
  3. Jika tidak terdapat masalah jaringan, periksa alokasi kuota. Jika Anda menemukan masalah alokasi kuota, ikuti proses untuk menambah kuota dan kemudian selesaikan masalah tersebut.
  4. Jika tidak terdapat masalah kuota, periksa log audit untuk entri tingkat keparahan error.
    1. Jika terdapat entri tingkat keparahan error, periksa izin yang diperlukan.
      1. Jika Anda dapat memberikan izin untuk menyelesaikan masalah akses, selesaikan masalah tersebut.
      2. Jika Anda tidak dapat menyelesaikan masalah akses, hubungi Customer Care.
    2. Jika tidak terdapat entri tingkat keparahan error, hubungi Customer Care.

Bagian berikut memberikan informasi detail mengenai cara menyelesaikan setiap langkah pemecahan masalah.

Memverifikasi akses pengguna

Memeriksa apakah akses pengguna ditolak, baik di Konsol Google Cloud maupun di Google Cloud CLI:

  1. Login ke Konsol Google Cloud sebagai pengguna yang terpengaruh.
  2. Mencoba mengakses resource; misalnya, jika pengguna melaporkan bahwa mereka tidak dapat memulai VM, cobalah memulai VM.
  3. Di Konsol Google Cloud, buka Cloud Shell, dan jalankan perintah gcloud CLI berikut dari sesi tempat pengguna login. Perintah ini membantu memverifikasi apakah pengguna login dengan identitas yang benar dan apakah mereka dapat mengakses resource menggunakan gcloud CLI.

    gcloud auth list
    

    Output akan menampilkan akun yang digunakan pengguna untuk login.

  4. Memeriksa apakah perintah sebelumnya menampilkan identitas yang benar.

    • Jika perintah sebelumnya menampilkan identitas yang salah, minta pengguna login dengan identitas yang benar. Kemudian, tentukan apakah akses masih menjadi masalah saat mereka menggunakan identitas yang benar.
    • Jika perintah sebelumnya menampilkan identitas yang benar dan Anda mendapatkan permission denied pesan, jalankan perintah gcloud CLI untuk tindakan yang ingin diselesaikan pengguna. Untuk mendapatkan detail selengkapnya tentang penolakan tersebut, tambahkan flag --log-http dan --verbosity=debug.
  5. Jika Anda mengidentifikasi masalah terkait izin, lanjutkan ke Memeriksa izin yang diperlukan.

Memeriksa masalah jaringan

  1. Memeriksa masalah jaringan dengan menggunakan panduan pemecahan masalah Kontrol Layanan VPC . Jika Anda melihat pesan error penolakan Kontrol Layanan VPC, selesaikan masalah tersebut.
  2. Memeriksa jalur jaringan dari sumber ke tujuan dengan menggunakan Uji Konektivitas. Untuk mengetahui informasi terkait cara menguji konektivitas antara dua instance VM di jaringan yang sama atau di-peering, lihat Menguji di dalam jaringan VPC.
  3. Memeriksa konfigurasi firewall dengan menggunakan Analisis Firewall untuk menampilkan aturan firewall yang dibayangi dan aturan penolakan yang mungkin memengaruhi jalur akses.

Memeriksa alokasi kuota

  • Jika Anda tidak menemukan masalah terkait jaringan, periksa alokasi kuota Anda. Jika tampaknya ada masalah terkait kuota, ikuti proses yang telah Anda tentukan untuk meningkatkan kuota, jika sesuai.

Memeriksa log audit

  • Memeriksa file log audit dengan menggunakan Logs Explorer. Logs Explorer memberikan ringkasan mengenai tingkat keparahan entri log. Tingkat keparahan log error dicatat saat panggilan API gagal, misalnya, error dicatat jika pengguna mencoba membuat bucket Cloud Storage, tetapi tidak memiliki izin untuk melakukan panggilan storage.buckets.create.

    Ringkasan entri log memberikan detail sebagai berikut:

    • Nama resource target
    • Akun utama (yang mencoba mengakses resource)
    • Akun utama mencoba untuk menyetujui panggilan API

Memeriksa izin yang diperlukan

Untuk men-debug alasan akun utama tidak memiliki izin yang diperlukan, Anda dapat menggunakan Pemecah Masalah Kebijakan:

  1. Jika pemeriksaan menunjukkan akses tidak diizinkan, tinjau peran mana yang ditunjukkan oleh Pemecah Masalah Kebijakan yang berisi izin.
  2. Menggunakan Penganalisis Kebijakan untuk melihat akun utama lain yang memiliki akses ke resource yang aksesnya ditolak oleh akun utama.
  3. Menambahkan identitas akun utama ke Google Grup yang memiliki binding ke peran yang sesuai.

Menghubungi Customer Care

Jika Anda telah menyelesaikan bagian pemecahan masalah sebelumnya tetapi tidak dapat menyelesaikan masalah, hubungi Customer Care untuk mendapatkan bantuan. Memberikan informasi sebanyak mungkin, seperti yang dijelaskan di bagian panduan pemecahan masalah Melakukan eskalasi ke Customer Care.

Contoh kasus penggunaan untuk pemecahan masalah

Bagian ini memberikan panduan mendalam cara memecahkan masalah kasus penggunaan tertentu menggunakan langkah-langkah pemecahan masalah sebelumnya. Untuk seluruh kasus penggunaan, Anda harus memiliki izin yang sesuai untuk menggunakan alat pemecahan masalah seperti yang telah dijelaskan dalam Kebijakan pemecahan masalah dan masalah akses di Google Cloud.

Kasus penggunaan berikut mengasumsikan bahwa Anda menggunakan Google Grup untuk mengelola akses pengguna. Menggunakan Google Grup untuk memberikan izin memungkinkan Anda mengelola akses dalam skala besar. Setiap anggota Google Grup mewarisi peran Identity and Access Management (IAM) yang diberikan ke grup tersebut. Pewarisan ini berarti Anda dapat menggunakan keanggotaan grup untuk mengelola peran pengguna, bukan memberikan peran IAM kepada masing-masing pengguna.

Pendelegasi peran memecahkan masalah akses developer ke peran Compute Admin

Sebagai pendelegasi peran, saya perlu memahami alasan saya tidak dapat memberikan peran tertentu kepada developer. Saya secara rutin memberikan peran Compute Admin ke para developer baru saat mereka bergabung dengan tim saya. Hari ini, saya mencoba memberikan peran Compute Instance Admin dan ditolak.

Dengan mengikuti diagram alir untuk memverifikasi akses pengguna dan memeriksa log audit, Anda dapat mengonfirmasi bahwa hal ini adalah tentang masalah izin.

Agar dapat memberikan peran, Anda memerlukan resourcemanager.projects.setIamPolicy izin. Izin ini dapat diberikan sebagai bagian dari peran berikut:

  • Peran Administrator Organisasi(roles/resourcemanager.organizationAdmin)
  • Peran Folder IAM Admin (roles/resourcemanager.folderIamAdmin)
  • Peran Project IAM Admin (roles/resourcemanager.projectIamAdmin)

Untuk menentukan apakah pendelegasi peran memiliki resourcemanager.projects.setIamPolicyizin yang ditetapkan, Anda dapat menggunakan Pemecah Masalah Kebijakan. Jika izin tidak lagi ditetapkan, periksa hal berikut:

  1. Memeriksa apakah rekomendasi IAM telah diterapkan yang mungkin telah membatalkan kebijakan.
  2. Jika Anda mengetahui kapan terakhir kali Anda dapat memberikan peran, periksa log antara waktu itu dan waktu sekarang untuk melihat setIam apakah ada panggilan yang mungkin telah mengubah kebijakan yang diterapkan.
  3. Menggunakan Penganalisis Kebijakan untuk memeriksa akun utama yang memiliki resourcemanager.projects.setIamPolicy. Penganalisis Kebijakan dapat membantu memverifikasi apakah pendelegasi peran telah dihapus dari grup.

Administrator cloud memecahkan masalah akses developer ke BigQuery

Sebagai administrator cloud, saya perlu memahami mengapa salah satu developer tidak dapat lagi menjalankan kueri terhadap set data BigQuery.

Untuk memecahkan masalah kasus penggunaan ini, Anda harus memverifikasi akses pengguna dan menyelesaikan masalah terkait lebih dulu. Kemudian, Anda memeriksa masalah jaringan. Contoh ini mengasumsikan jika Anda telah menentukan bahwa tidak terdapat masalah identitas atau jaringan, tetapi terdapat masalah izin.

Untuk memecahkan masalah izin, periksa izin anggota tim terlebih dahulu. Jika Anda tidak menemukan perbedaan, periksa log untuk mengidentifikasi potensi masalah. Jika Anda tidak menemukan masalah apa pun dari log, Anda dapat menghubungi Customer Care untuk meminta bantuan.

Memeriksa izin anggota tim

Untuk memeriksa izin anggota tim, tanyakan kepada developer kapan mereka terakhir kali berhasil menjalankan kueri. Kemudian tentukan apakah terdapat orang di tim developer yang sebelumnya dapat menjalankan kueri, dan apakah orang itu masih dapat menjalankan kueri tersebut. Jika tidak ada anggota tim yang dapat menjalankan kueri, lanjutkan ke bagian Memeriksa log

Jika anggota tim masih dapat menjalankan kueri, selesaikan langkah-langkah berikut:

  1. Memeriksa izin IAM yang diberikan kepada kedua developer dan tentukan apakah izin tersebut berbeda. Saat Anda meninjau izin, cari hal-hal berikut:
  2. Jika izin tidak berbeda, lanjutkan ke bagian berikutnya, Memeriksa log. Jika izinnya berbeda, selesaikan langkah-langkah berikut:
    1. Memeriksa apakah kedua anggota tim berada di grup Google yang sama.
      • Jika mereka tidak berada dalam grup Google yang sama, tentukan apakah mereka seharusnya berada di grup tersebut.
      • Jika mereka sebelumnya berada di grup Google yang sama, hubungi administrator grup untuk mengetahui alasan perubahan dilakukan.
  3. Setelah Anda mengatasi masalah izin, periksa apakah developer dapat menjalankan kueri.
    • Jika developer dapat menjalankan kueri, selesaikan masalah tersebut.
    • Jika developer tidak dapat menjalankan kueri, lanjutkan ke bagian berikutnya, Memeriksa log.

Memeriksa log

Jika tidak ada anggota tim yang dapat menyelesaikan kueri, atau jika penanganan masalah izin tidak menyelesaikan masalah, Anda dapat memeriksa log untuk menentukan hal yang mungkin berubah sejak developer terakhir kali dapat menyelesaikan kueri.

  1. Menentukan tempat guna melihat log untuk tugas terakhir yang berhasil diselesaikan. Dalam contoh ini, log diekspor ke BigQuery.
  2. Menjalankan kueri terhadap log yang diekspor di BigQuery:
    1. Menjalankan satu kueri yang menyertakan tanggal terakhir developer berhasil memiliki akses, sehingga Anda dapat melihat seperti apa kesuksesan itu.
    2. Menjalankan kueri yang sama saat permintaan gagal.
  3. Jika terdapat sesuatu yang dapat diidentifikasi di dalam log, selesaikan masalah tersebut menggunakan Pemecah Masalah Kebijakan dan Penganalisis Kebijakan seperti yang dijelaskan di bagian Memeriksa izin yang diperlukan .
  4. Jika Anda masih tidak dapat menyelesaikan masalah, Hubungi Customer Care.

Developer memerlukan izin ke GKE

Sebagai developer, saya perlu memahami alasan saya tidak dapat memulai, menghapus, atau memperbarui Pod atau membuat deployment di cluste Google Kubernetes Engine (GKE) yang dapat saya akses. Saya tidak yakin akun utama mana yang saya gunakan saat melakukan panggilan dengan kubectl alat command line, atau izin apa yang saya miliki.

Peran IAM yang memungkinkan developer memulai, menghapus, atau memperbarui Pod atau membuat deployment di cluster GKE adalah peran Google Kubernetes Engine Developer (roles/container.developer). Peran tersebut harus diberikan dalam project tempat cluster GKE berada.

Untuk memecahkan masalah kasus penggunaan ini, Anda harus memverifikasi akses pengguna dan menyelesaikan masalah terkait lebih dulu. Setelah memvalidasi identitas, pastikan kubectl alat telah dikonfigurasi untuk mengarah ke cluster yang tepat. Untuk informasi terkait cara memastikan identitas yang digunakan oleh kubectl alat sudah benar dan kubectl alat mengarah ke cluster yang tepat, lihat Mengonfigurasi akses cluster untuk kubectl. Contoh ini mengasumsikan bahwa Anda tidak memiliki masalah jaringan atau masalah yang terkait dengan kuota, tetapi Anda memiliki masalah izin.

Untuk mulai memecahkan masalah izin, periksa log audit guna melihat perubahan antara tindakan terakhir yang berhasil dari developer dan waktu saat masalah pertama kali dilaporkan.

  1. Jika developer sebelumnya memiliki akses, periksa apakah anggota tim yang juga memiliki izin untuk melakukan tindakan yang sama masih dapat menyelesaikan tindakan tersebut. Jika anggota tim memiliki akses, gunakan Penganalisis Kebijakan untuk membantu menentukan akses yang dimiliki oleh anggota tim. Jika Anda mengikuti praktik terbaik, kedua developer harus memiliki keanggotaan dan izin grup yang sama.

    1. Jika izin mereka sama dan tidak ada developer yang dapat melakukan tindakan terhadap resource, periksa apakah rekomendasi IAM yang telah diterapkan yang dapat memengaruhi akses.
    2. Jika izin kedua developer berbeda, selidiki mengapa perbedaan tersebut dapat terjadi:
      1. Memeriksa log audit untuk terakhir kali developer berhasil melakukan tugas. Membandingkan log dengan saat terakhir mereka mencoba dan tidak dapat menyelesaikan tugas.
      2. Memeriksa rekomendasi IAM dan menerapkan rekomendasi apa pun.
  2. Jika tidak ada anggota tim lain untuk divalidasi, gunakan Pemecah Masalah Kebijakan dan Penganalisis Kebijakan seperti yang dijelaskan di Memeriksa izin yang diperlukan. Untuk informasi selengkapnya, lihat resource berikut:

  3. Jika Anda masih tidak dapat menyelesaikan masalah, hubungi Customer Care.

Administrator keamanan memecahkan masalah akses developer

Sebagai administrator keamanan, saya perlu memahami alasan developer tidak dapat melakukan tindakan. Apa peran terbaik dan lokasi untuk ditetapkan ke peran tersebut, sehingga tidak memberikan akses yang lebih banyak daripada yang dibutuhkan pengguna?

Dalam skenario ini, developer harus dapat melakukan hal-hal berikut:

  • Mengupload project ke bucket Cloud Storage. Developer tidak akan dapat melihat, menghapus, atau menimpa objek yang sudah ada di dalam bucket.
  • Memulai instance dalam project pengembangannya.

Anda dapat menggunakan Pemecah Masalah Kebijakan dan halaman referensi peran pemahaman IAM untuk memahami izin apa yang diperlukan guna melaksanakan tugas yang perlu dilakukan oleh developer. Dalam contoh ini, Anda perlu memberi developer peran yang mencakup izin berikut:

  • Untuk mengizinkan developer menghentikan dan memulai instance: compute.instances.start dan compute.instances.stop
  • Untuk mengizinkan developer mengupload objek ke bucket Cloud Storage: storage.objects.create

Peran-peran berikut mencakup izin sebelumnya dan mematuhi prinsip hak istimewa terendah:

  • Pada level bucket untuk bucket tempat developer diizinkan untuk mengupload objek, berikan peran sebagai Storage Object Creator (roles/storage.objectCreator).
  • Pada level project dari project yang ditetapkan oleh developer atau pada instance tempat developer harus dapat memulai ulang, berikan peran Compute Instance Admin (roles/compute.instanceAdmin).

Biasanya, pengelolaan instance mungkin juga memerlukan tindakan seperti menambahkan disk. Dalam hal ini, peran roles/compute.instanceAdmin mungkin merupakan cara yang tepat untuk memberikan izin yang diperlukan sekaligus tetap mematuhi prinsip hak istimewa terendah.

Administrator cloud memecahkan masalah terkait alasan aplikasi tidak dapat menulis ke Cloud Storage

Sebagai administrator cloud, saya perlu memahami alasan aplikasi yang berjalan di GKE tidak dapat menulis lagi di Cloud Storage.

Dalam skenario ini, aplikasi yang berjalan di GKE perlu dikonfigurasi seperti berikut:

  • Pada bucket yang ditentukan, aplikasi dapat menambahkan, memperbarui, dan menghapus objek.
  • Aplikasi tidak dapat memiliki akses ke bucket lain di dalam organisasi.

Pendekatan pemecahan masalah berikut mengasumsikan bahwa Anda menggunakan Workload Identity, yang kami rekomendasikan. Dengan menggunakan Workload Identity, Anda dapat mengonfigurasi akun layanan Kubernetes untuk bertindak sebagai akun layanan Google. Pod yang berjalan sebagai akun layanan Kubernetes akan otomatis melakukan autentikasi sebagai akun layanan Google saat mengakses Google Cloud API.

Dalam contoh ini, Anda memvalidasi bahwa Anda telah memberikan izin yang sesuai ke akun layanan Google yang digunakan untuk Workload Identity untuk cluster Anda. Anda dapat menggunakan Pemecah Masalah Kebijakan dan halaman referensi peran pemahaman IAM untuk memahami izin yang diperlukan guna menyelesaikan tugas aplikasi Anda . Untuk mengonfigurasi dan memverifikasi izin, lakukan hal-hal berikut:

  1. Tetapkan izin berikut ke akun layanan Google yang Anda gunakan untuk Workload Identity:

    1. Pada bucket tempat aplikasi diizinkan untuk memiliki kontrol penuh atas objek, termasuk mencantumkan, membuat, melihat, dan menghapus objek, berikan peran Storage Object Admin (roles/storage.objectAdmin).
    2. Untuk mengonfigurasi akun layanan Kubernetes agar meniru identitas akun layanan Google, tetapkan binding kebijakan IAM:

      gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]" \
        GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
      

      Mengganti nilai berikut:

      • PROJECT_ID: project ID Anda.
      • KSA_NAME: akun layanan Kubernetes yang membuat permintaan
      • KUBERNETES_NAMESPACE: namespace Kubernetes tempat akun layanan Kubernetes ditentukan
      • GSA_NAME: akun layanan Google
  2. Menetapkan iam.serviceAccounts.setIamPolicy izin pada project:

    • Menambahkan anotasi berikut ke akun layanan Kubernetes:

      iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID
      
  3. Memastikan akun layanan Google memiliki izin yang tepat dan bahwa Workload Identity dikonfigurasi dengan benar:

    1. Pada bucket tempat aplikasi diizinkan untuk memiliki kontrol penuh atas objek, lihat kebijakan IAM untuk objek dan pastikan akun layanan Google memiliki roles/storage.objectAdmin peran.
    2. Jika izin tidak benar, ubah kebijakan untuk memberikan izin yang diperlukan kepada akun layanan Google.
  4. Memastikan Workload Identity sudah dikonfigurasi secara benar dengan memeriksa apakah ada binding ke akun layanan Kubernetes:

    gcloud iam service-accounts get-iam-policy \
      GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Outputnya akan terlihat sebagai berikut:

    - members:
      - serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]
      role: roles/iam.workloadIdentityUser
    

    Jika binding salah, ulangi langkah-langkah sebelumnya untuk menetapkan izin ke akun layanan.

Langkah berikutnya