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 menyediakan izin minimum yang diperlukan yang diperlukan untuk melakukan tugas tertentu.
Skema ini dapat berguna untuk mengisolasi grup pengguna yang berbeda. Contoh:
- Perusahaan besar dengan departemen yang seharusnya tidak dapat memeriksa resource rekan-rekan mereka.
- Kontraktor yang diberi izin ke Project tertentu, tetapi tidak memiliki sumber daya lain.
Namun, karena izinnya dibatasi, peran khusus dapat menyebabkan banyak resource dalam hierarki Anda dihilangkan saat menjalankan operasi daftar. Saat melakukan penelusuran sebagai pengguna yang telah diberi peran khusus, mungkin sulit untuk mengetahui alasan resource tertentu tidak muncul.
Untuk menghindari skenario tersebut, 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 membuat pengalaman pengguna sendiri di atas Cloud Resource Manager API.
Mencantumkan semua resource
Saat memindai hierarki resource untuk mencantumkan setiap resource, Anda memerlukan hasil yang sangat konsisten. Jika pemindaian Anda melewatkan resource atau memberikan hasil yang usang, mungkin sulit untuk mengetahui bahwa ada sesuatu 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
list
danget
untuk 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 apa pun seperti Folder.
Contoh daftar semua resource
Kode semu berikut menunjukkan cara menampilkan setiap node resource dalam 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 (sambil juga menangkap
pengecualian PERMISSION_DENIED
).
Mengurangi latensi pada daftar project gcloud
Jika kueri gcloud projects list
Anda gagal atau memakan waktu terlalu lama, jumlah project Google Cloud yang akan ditampilkan mungkin terlalu besar. Untuk memperbaikinya, terapkan flag filter
dan page-size
ke perintah gcloud projects list
Anda.
Untuk mempelajari flag yang dapat ditambahkan ke perintah gcloud projects list
lebih lanjut, lihat daftar project gcloud.
Contoh Kecualikan project Apps Script
Penyebab paling umum kegagalan kueri atau latensi adalah banyaknya project Apps Script dalam suatu organisasi. Contoh di bawah ini 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 ID Folder, salin ID folder.
Telusuri resource
Jika pemindaian Anda ditujukan untuk menelusuri resource yang dibuat beberapa waktu lalu, Anda dapat melakukan pemindaian lebih cepat yang memiliki konsistensi tertunda, bukan konsistensi kuat. Perhatikan, metode penelusuran ini mungkin menghilangkan beberapa resource dari hasil penelusuran, terutama resource yang telah diubah baru-baru ini. Untuk menelusuri referensi:
- Gunakan akun layanan yang memiliki izin
get
untuk resource yang sedang 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 tingkat Organisasi. Hal ini menghindari masalah yang disebabkan
oleh pengguna memiliki izin parsial, yang menyebabkan beberapa resource
dihapus dari daftar.
Jika Anda mendesain pengalaman pengguna kustom yang memeriksa izin pengguna, tidak ada solusi yang mudah. Jika pengguna tidak memiliki izin tingkat Organisasi, mereka memerlukan izin tertentu di setiap resource agar izin dapat muncul. Jika pengguna tidak memiliki izin pada resource di suatu tempat dalam hierarki, beberapa resource mungkin tidak akan muncul.
Jika pengguna memiliki izin list
, tetapi tidak memiliki izin get
untuk resource tertentu, resource tersebut tidak akan terlihat sama sekali di Konsol Google 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 menjadi sumber kebingungan yang umum saat mencoba memindai hierarki resource.
Diagram berikut menunjukkan beberapa konfigurasi umum untuk izin, dan cara mengubah resource yang terlihat oleh pengguna yang melakukan 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
tingkat Folder. Kesenjangan izin ini memberi mereka visibilitas penuh pada daftar atau
penelusuran bagian hierarki tersebut, tetapi tidak setengah lainnya.
Contoh ini menunjukkan pengalaman pengguna hanya dengan
izin resourcemanager.projects.get
yang diberikan 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.
Contoh ini menunjukkan masalah yang sama seperti di atas, dengan izin yang diberikan hanya memungkinkan pengguna menemukan resource Folder-nya dengan menelusuri. Penggunaan fungsi daftar tidak akan menampilkan hasil apa pun.
Pengguna dalam contoh ini memiliki campuran izin di seluruh Organisasi.
Mereka dapat membuat daftar folder dari level 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 memiliki izin resourcemanager.projects.get
pada satu Project di bagian bawah hierarki.
Akibatnya, instance tersebut 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, pengguna bisa mendapatkan resource Organisasi dan mencantumkan resource Project dengan menentukan induk di seluruh hierarki. Namun, mereka tidak memiliki izin untuk mencantumkan atau menelusuri salah satu Folder perantara. Project ini dapat ditelusuri jika pengguna mengetahui ID Folder induknya. Folder tidak terlihat sama sekali oleh pengguna ini, sehingga mereka tidak akan dapat menemukan ID jika belum memilikinya. Satu-satunya resource yang akan muncul di Google Cloud Console adalah Organisasi.
Saat mendesain pengalaman pengguna kustom, penting untuk mengetahui situasi yang serupa dengan yang di atas. Anda dapat menggunakan kombinasi listingan dan penelusuran untuk merender hierarki resource. Anda juga harus mempertimbangkan cara memberi tahu pengguna bahwa mereka tidak memiliki izin yang memungkinkan mereka melihat seluruh hierarki resource.