Mencantumkan semua project dan folder dalam hierarki Anda

Resource di Google Cloud diatur ke dalam hierarki, dengan setiap node (Organisasi, Folder, Project, dan sebagainya) memiliki referensi ke induknya. Anda dapat menggunakan referensi tersebut sebagai istilah filter utama untuk pemindaian guna meningkatkan konsistensi penelusuran resource.

Anda dapat memberikan izin kepada pengguna menggunakan peran khusus. Peran ini beroperasi berdasarkan prinsip hak istimewa terendah, dan umumnya hanya memberikan izin minimum yang diperlukan untuk melakukan tugas tertentu.

Skema ini dapat berguna untuk mengisolasi berbagai grup pengguna. Contoh:

  • Perusahaan besar dengan departemen yang tidak boleh memeriksa resource rekan mereka.
  • Kontraktor yang diberi izin ke Project tertentu, tetapi tidak ke resource lainnya.

Namun, karena izinnya yang terbatas, peran khusus dapat menyebabkan banyak resource dalam hierarki Anda dihilangkan saat menjalankan operasi daftar. Saat melakukan penelusuran sebagai pengguna yang telah diberi peran kustom, mungkin sulit untuk mengetahui alasan mengapa resource tertentu tidak muncul.

Untuk menghindari skenario ini, halaman ini membahas praktik terbaik untuk mencantumkan semua resource yang dikelola oleh Cloud Resource Manager API dalam hierarki resource Anda. Anda dapat menggunakan panduan ini untuk mengonfigurasi pemeriksaan audit kustom, atau untuk membuat pengalaman pengguna Anda sendiri di atas Cloud Resource Manager API.

Mencantumkan semua node resource

Saat memindai hierarki resource untuk mencantumkan setiap resource, Anda memerlukan hasil yang sangat konsisten. Jika pemindaian Anda tidak menemukan resource atau memberikan hasil yang sudah tidak berlaku, akan sulit untuk mengetahui bahwa ada yang salah. Untuk memastikan Anda selalu mendapatkan hasil yang paling akurat dan lengkap, gunakan akun layanan dan lakukan pemindaian dengan cara berikut:

  1. Beri akun layanan izin list dan get untuk Organisasi, Folder, dan Project di resource Organisasi.
  2. Jika Anda mencantumkan resource Project dan Folder, tentukan resource induk dalam string filter.
  3. Jalankan metode projects.list() dengan akun layanan ini untuk setiap jenis resource yang ingin Anda temukan, dan untuk resource perantara seperti Folder.

Contoh untuk mencantumkan semua node resource

Kode semu berikut menunjukkan cara mencantumkan setiap node resource di Organisasi Anda:

organizations = organizations.search()
projects = emptyList()

parentsToList = queueOf(organizations)
while (parent = parentsToList.pop()) {
  // TODO: Iterate over paginated results as needed.
  // TODO: Handle PERMISSION_DENIED appropriately.
  projects.addAll(projects.list(parent.type, parent.id))
  parentsToList.addAll(folders.list(parent))
}

Saat membuat pengalaman pengguna kustom, Anda juga dapat menggabungkan hasil penelusuran dan memuat resource induk sesuai kebutuhan (sekaligus menangkap pengecualian PERMISSION_DENIED).

Mengurangi latensi pada gcloud projects list

Jika kueri gcloud projects list Anda gagal atau memerlukan waktu terlalu lama, jumlah projectGoogle Cloud yang ditampilkan mungkin terlalu besar. Untuk memperbaikinya, terapkan flag filter dan page-size ke perintah gcloud projects list Anda.

Untuk mempelajari lebih lanjut tanda yang dapat Anda tambahkan ke perintah gcloud projects list, lihat gcloud projects list.

Contoh pengecualian project Apps Script

Penyebab paling umum kegagalan atau latensi kueri adalah banyaknya project Apps Script dalam organisasi. Perintah berikut menunjukkan cara mengecualikan project Apps Script dari daftar project dan membatasi jumlah resource yang ditampilkan per halaman.

gcloud projects list --filter="NOT parent.id: 'APPS_SCRIPT_FOLDER_ID' "--page-size='30'

Mendapatkan ID folder Apps Script

Untuk menemukan ID folder Apps Script Anda, lakukan langkah-langkah berikut.

  1. Di toolbar konsol Google Cloud , klik Search for resources, docs, products, and more, lalu ketik apps-script.

    Buka konsol Google Cloud

  2. Di bagian Resources, pilih folder apps-script.

  3. Di bagian Folder ID, salin ID folder.

Telusuri resource

Jika pemindaian Anda dimaksudkan untuk menelusuri resource yang dibuat beberapa waktu lalu, Anda dapat melakukan pemindaian yang lebih cepat yang memiliki konsistensi pada akhirnya, bukan konsistensi yang kuat. Perhatikan bahwa metode penelusuran ini dapat menghilangkan beberapa resource dari hasil penelusuran, terutama resource yang baru-baru ini diubah. Untuk menelusuri referensi:

  1. Gunakan akun layanan yang memiliki izin get untuk resource yang Anda cari.
  2. Jalankan metode projects.search() dengan akun layanan ini.

Memecahkan masalah resource yang dihilangkan

Jika Anda sedang mengembangkan alat pemindaian, sebaiknya gunakan izin list dan get yang diberikan di tingkat Organisasi. Tindakan ini menghindari masalah yang disebabkan oleh pengguna yang memiliki izin sebagian, yang mengakibatkan beberapa resource tidak disertakan dalam daftar.

Jika Anda mendesain pengalaman pengguna kustom yang memeriksa izin pengguna, tidak ada solusi yang mudah. Jika pengguna tidak memiliki izin tingkat Organisasi, mereka akan memerlukan izin tertentu di setiap resource agar resource tersebut muncul. Jika pengguna tidak memiliki izin pada resource di suatu tempat dalam hierarki, beberapa resource mungkin tidak muncul.

Jika pengguna memiliki izin list, tetapi tidak memiliki izin get untuk resource tertentu, resource tersebut tidak akan terlihat sama sekali di konsolGoogle Cloud . Namun, resource akan ditampilkan dalam penelusuran menggunakan API atau Google Cloud CLI yang menentukan induk resource. Perbedaan antara konsol dan metode lainnya ini sering kali menimbulkan kebingungan saat mencoba memindai hierarki resource. Google Cloud

Diagram berikut menunjukkan beberapa konfigurasi izin umum, dan cara izin tersebut mengubah resource yang terlihat oleh pengguna yang menjalankan penelusuran.

Mencantumkan semua resource

Dalam contoh ini, semua izin yang diperlukan diberikan di resource Organisasi. Oleh karena itu, seluruh hierarki terlihat saat melakukan daftar atau penelusuran.

Izin organisasi tidak ada

Pengguna dalam contoh ini memiliki semua izin yang diperlukan, kecuali resourcemanager.organizations.get, tetapi izin tersebut diberikan kepada pengguna di tingkat Folder. Kesenjangan izin ini memberi mereka visibilitas penuh pada daftar atau penelusuran bagian hierarki tersebut, tetapi tidak pada bagian lainnya.

Hanya mendapatkan izin project

Contoh ini menunjukkan pengalaman pengguna yang hanya diberi izin resourcemanager.projects.get di tingkat resource Folder. Mereka dapat melihat Project di bawah Folder tersebut dalam hierarki, tetapi hanya dengan menelusuri. Menggunakan fungsi daftar tidak akan menampilkan hasil apa pun.

Hanya mendapatkan izin folder

Contoh ini menggambarkan skenario serupa di mana izin yang diberikan hanya memungkinkan Anda menemukan resource Folder dengan melakukan penelusuran. Operasi daftar tidak menampilkan hasil apa pun.

Izin campuran

Pengguna dalam contoh ini memiliki campuran izin di seluruh Organisasinya. Mereka dapat mencantumkan folder dari tingkat Organisasi, yang memungkinkan mereka menemukannya dengan penelusuran yang menentukan resource induk di seluruh hierarki. Mereka dapat mencantumkan resource Project untuk satu Folder, tetapi tidak untuk Folder lainnya, dan mereka memiliki izin resourcemanager.projects.get di satu Project di bagian bawah hierarki.

Akibatnya, mereka tidak dapat menampilkan Project di sisi kiri hierarki resource ini. Mereka dapat mencantumkan Project di sisi kanan hanya dengan menggunakan penelusuran yang menentukan resource induk, dan hanya satu Project yang terlihat saat dilihat di konsol Google Cloud .

Resource yang tidak dapat ditemukan

Dalam contoh ini, Anda bisa mendapatkan resource Organisasi dan mencantumkan resource Project dengan menentukan induk di seluruh hierarki. Namun, Anda tidak memiliki izin untuk mencantumkan atau menelusuri Folder perantara. Project Anda dapat ditelusuri jika Anda mengetahui ID Folder induknya. Folder tidak terlihat oleh Anda, sehingga Anda tidak dapat menemukan ID-nya jika belum memilikinya. Satu-satunya resource yang muncul di konsol Google Cloud adalah Organisasi.

Saat mendesain pengalaman pengguna kustom, penting untuk menyadari situasi yang serupa dengan situasi ini. Anda dapat menggunakan kombinasi pencantuman dan penelusuran untuk merender hierarki resource. Anda juga harus mempertimbangkan cara mengomunikasikan kepada pengguna bahwa mereka tidak memiliki izin yang akan memungkinkan mereka melihat seluruh hierarki resource.