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:
- 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
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.
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 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:
- Gunakan akun layanan yang memiliki izin
getuntuk resource yang Anda cari. - 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.
Dalam contoh ini, semua izin yang diperlukan diberikan di resource Organisasi. Oleh karena itu, seluruh hierarki terlihat saat melakukan daftar atau penelusuran.
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.
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.
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.
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 .
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.