Cloud Resource Manager API memungkinkan Anda menemukan dan membuat katalog setiap folder dan project di seluruh Google Cloud hierarki resource Anda. Visibilitas ini membantu Anda melakukan pemeriksaan audit dan membuat alat pengelolaan kustom. Operasi daftar standar dapat menghilangkan resource saat pengguna memiliki peran khusus yang dibatasi. Anda dapat memfilter kueri berdasarkan referensi induk untuk mendapatkan hasil penelusuran yang konsisten dan mengidentifikasi node yang mungkin disembunyikan oleh izin hak istimewa terendah.
Mencantumkan semua node resource
Saat memindai hierarki resource untuk mencantumkan setiap resource, Anda memerlukan hasil yang sangat konsisten. Jika pemindaian Anda melewatkan resource atau memberikan hasil yang sudah tidak berlaku, mungkin 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:
- Beri akun layanan izin
listdangetuntuk Organisasi, Folder, dan Project di resource Organisasi. - Jika Anda mencantumkan resource Project dan Folder, tentukan resource induk dalam string filter.
- 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
Pseudocode 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 membangun pengalaman pengguna kustom, Anda mungkin juga ingin 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 akan ditampilkan mungkin terlalu besar. Untuk memperbaikinya, terapkan flag filter dan page-size ke perintah gcloud projects list Anda.
Untuk mempelajari lebih lanjut flag 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, lakukan langkah-langkah berikut.
Di toolbar konsol Google Cloud , klik Search for resources, docs, products, and more, lalu ketik
apps-script.Di bagian Resources, pilih folder apps-script.
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 tertunda, bukan konsistensi kuat. Perhatikan bahwa metode penelusuran ini dapat menghilangkan beberapa resource dari hasil penelusuran, terutama resource yang baru saja diubah. Untuk menelusuri referensi:
- Gunakan akun layanan yang memiliki izin
getuntuk resource yang Anda telusuri. - Jalankan metode
projects.search()dengan akun layanan ini.
Memecahkan masalah resource yang dihilangkan
Jika Anda mengembangkan alat pemindaian, sebaiknya gunakan izin list dan
get yang diberikan di level Organisasi. Hal ini menghindari masalah yang disebabkan oleh pengguna yang memiliki izin parsial, yang mengakibatkan beberapa resource dihilangkan dari daftar.
Jika Anda mendesain pengalaman pengguna kustom yang memeriksa izin pengguna, tidak ada solusi yang mudah. Jika pengguna tidak memiliki izin level Organisasi, mereka akan memerlukan izin tertentu pada 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 Google Cloud dan metode lainnya ini adalah sumber kebingungan yang umum saat mencoba memindai hierarki resource.
Diagram berikut menunjukkan beberapa konfigurasi izin umum, dan bagaimana konfigurasi tersebut mengubah resource yang dapat dilihat oleh pengguna yang menjalankan penelusuran.
Dalam contoh ini, semua izin yang diperlukan diberikan di resource Organisasi. Oleh karena itu, seluruh hierarki akan terlihat saat melakukan daftar atau penelusuran.
Pengguna dalam contoh ini memiliki semua izin yang diperlukan kecuali untuk
resourcemanager.organizations.get, tetapi mereka diberi izin tersebut di
level Folder. Kesenjangan izin ini memberi mereka visibilitas penuh pada daftar atau
penelusuran bagian hierarki tersebut, tetapi tidak pada bagian lainnya.
Contoh ini menunjukkan pengalaman pengguna yang hanya memiliki
izin resourcemanager.projects.get yang diberikan di level 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.
Contoh ini menggambarkan skenario serupa saat izin yang diberikan hanya memungkinkan Anda menemukan resource Folder dengan menelusuri. Operasi daftar tidak menampilkan hasil apa pun.
Pengguna dalam contoh ini memiliki kombinasi izin di seluruh Organisasinya.
Mereka dapat mencantumkan folder dari level Organisasi, sehingga dapat 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.
Hasilnya, 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 .
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 apa pun. Project Anda dapat ditelusuri jika Anda mengetahui ID Folder induknya. Folder tidak dapat dilihat oleh Anda, sehingga Anda tidak dapat menemukan ID jika belum memilikinya. Satu-satunya resource yang muncul di konsol Google Cloud adalah Organisasi.
Saat mendesain pengalaman pengguna kustom, penting untuk mengetahui situasi yang mirip dengan situasi ini. Anda dapat menggunakan kombinasi listingan dan penelusuran untuk merender hierarki resource. Anda juga harus mempertimbangkan cara menyampaikan kepada pengguna bahwa mereka tidak memiliki izin yang memungkinkan mereka melihat seluruh hierarki resource.