Halaman ini menjelaskan cara mengatur hierarki Google Cloud dengan menyusun project dalam folder.
Ringkasan
Dalam hierarki resource Google Cloud , project berfungsi sebagai unit organisasi dan penagihan inti untuk resource Anda. Perimeter ini berada di antara folder (atau resource organisasi) dan resource pokok, seperti instance virtual machine dan bucket penyimpanan.
Meskipun folder adalah mekanisme pengelompokan opsional, mengatur project Anda dalam folder memberikan beberapa keuntungan utama:
Tata kelola yang skalabel: Terapkan kebijakan Identity and Access Management (IAM) dan batasan keamanan secara otomatis ke beberapa project melalui pewarisan berbasis hierarki.
Keselarasan bisnis: Susun lingkungan cloud Anda untuk mencerminkan departemen, pusat biaya, atau siklus proses pengembangan organisasi Anda (seperti Dev, Staging, dan Prod).
Administrasi yang didelegasikan: Berikan otonomi kepada tim tertentu untuk mengelola project dan subfolder mereka sendiri tanpa memerlukan izin yang luas di tingkat organisasi.
Visibilitas biaya: Kelompokkan project terkait untuk menyederhanakan pelacakan pembelanjaan dan meningkatkan analisis penagihan untuk unit bisnis atau aplikasi tertentu.
Isolasi keamanan: Tetapkan batas kepercayaan yang jelas untuk membatasi area yang terpengaruh perubahan konfigurasi dan mengurangi risiko keamanan di berbagai lingkungan.
Membuat project dalam folder
Untuk membuat project di folder, Anda harus memiliki peran Project Creator
(roles/resourcemanager.projectCreator) di folder tersebut. Peran ini mungkin
diwarisi dari folder induk.
Konsol
- Di Konsol Google Cloud , buka halaman Manage resources.
- Buka halaman Kelola Resource.
- Pilih resource organisasi Anda dari drop-down Organisasi di kiri atas halaman.
- Klik Create Project.
- Masukkan Nama project.
- Di kotak Tujuan, klik Jelajahi untuk memilih folder tempat Anda ingin membuat project.
- Klik Create.
gcloud
gcloud projects create PROJECT_ID --folder FOLDER_ID
Ganti kode berikut:
PROJECT_ID: ID project yang akan dibuatFOLDER_ID: ID folder tempat project harus dibuat.
REST
JSON permintaan:
request_json= '{
name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
}'
Permintaan curl:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/projects
Ganti kode berikut:
PROJECT_ID: ID unik project yang sedang dibuat. Contoh,my-awesome-proj-123.DISPLAY_NAME: nama tampilan project yang sedang dibuat.PARENT_ID: ID unik induk yang dibuat di bawahnya. Contoh,123.PARENT_TYPE: jenis induk, sepertifolderatauorganization.
Jangan menyertakan informasi sensitif dalam nama folder atau nama resource lainnya. Setiap referensi ke folder atau resource terkait akan mengekspos nama folder dan nama resource.
Memindahkan project ke dalam folder
Anda harus mempertimbangkan dengan cermat implikasi kebijakan apa pun sebelum memindahkan project ke dalam atau ke luar folder. Kebijakan izinkan yang Anda tentukan di level project akan berpindah bersama project, tetapi kebijakan yang diwarisi dari resource induk tidak akan berpindah.
Saat Anda memindahkan project, kebijakan Identity and Access Management atau kebijakan organisasi yang terlampir langsung akan dipindahkan bersamanya. Namun, project dalam hierarki resource Anda juga terpengaruh oleh kebijakan yang diwarisinya dari resource induk. Jika project mewarisi peran IAM yang memberikan izin kepada pengguna untuk menggunakan layanan tertentu, pengguna tidak akan memiliki akses ke layanan tersebut di tujuan, kecuali jika layanan tersebut juga mewarisi izin di tujuan.
Misalnya, pertimbangkan akun layanan yang memiliki peran Storage Object Creator yang terikat ke pengguna di Folder A. Akun layanan memiliki izin untuk mengupload data ke Cloud Storage di project mana pun dalam Folder A. Jika Anda memindahkan salah satu project tersebut ke Folder B, yang tidak memiliki izin yang sama, akun layanan untuk project tersebut akan kehilangan kemampuan untuk mengupload data, sehingga menyebabkan gangguan layanan.
Pertimbangan yang sama ini berlaku jika kebijakan organisasi ditentukan di folder sumber dan tujuan. Seperti kebijakan IAM, kebijakan organisasi diwariskan. Oleh karena itu, Anda harus memastikan bahwa kebijakan organisasi Anda konsisten antara folder sumber dan tujuan.
Untuk mempelajari lebih lanjut kebijakan organisasi, lihat Pengantar Layanan Kebijakan Organisasi.
Untuk memindahkan project, Anda memerlukan peran IAM Project Mover (roles/resourcemanager.projectMover) di folder sumber dan folder tujuan. Jika resource tidak ada di folder, Anda memerlukan peran ini di resource organisasi.
Peran ini memberi Anda izin yang diperlukan berikut:
resourcemanager.projects.updatepada project- Jika resource berada di folder:
resourcemanager.projects.movedi folder sumber dan tujuan - Jika resource tidak ada di folder:
resourcemanager.projects.movedi resource organisasi
Anda juga bisa mendapatkan izin ini dengan peran khusus, atau peran bawaan lainnya.
Konsol
Untuk memindahkan project:
Di Konsol Google Cloud , buka halaman Manage resources.
Pilih Organisasi Anda dari drop-down Organisasi di kiri atas halaman.
Klik baris project untuk memilih project Anda dari daftar resource. Perhatikan bahwa Anda tidak boleh mengklik nama project, yang akan mengarahkan Anda ke halaman Identity and Access Management (IAM) project.
Klik menu opsi (elipsis vertikal) di baris, lalu klik Pindahkan.
Klik Jelajahi untuk memilih folder tempat Anda ingin memindahkan project.
Klik Pindahkan.
gcloud
Untuk memindahkan project, jalankan perintah
gcloud beta projects move:
gcloud beta projects move PROJECT_ID \ --DESTINATION_TYPE DESTINATION_ID
Ganti kode berikut:
PROJECT_ID: ID atau nomor project yang ingin Anda pindahkan.DESTINATION_TYPE: Jenis tujuan,organizationataufolder.DESTINATION_ID: ID resource organisasi atau folder tempat Anda ingin memindahkan project.
REST
Anda dapat menggunakan metode v3
projects.move
untuk memindahkan project.
Permintaan:
POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
"destinationParent": DESTINATION_PARENT
}
Ganti kode berikut:
PROJECT_NAME: nama project yang ingin Anda perbarui. Misalnya,projects/415104041262DESTINATION_PARENT: resource organisasi induk atau folder baru tempat Anda ingin memindahkan project. Contoh:organizations/12345678901
Jika berhasil, permintaan akan menampilkan Operasi yang dapat digunakan untuk melacak pemindahan project.
Memindahkan folder ke folder lain
Untuk memindahkan folder ke folder lain, Anda harus memiliki izin resourcemanager.folders.move untuk folder sumber dan tujuan.
Konsol
Proses pemindahan folder ke dalam folder lain di konsol mirip dengan pemindahan project.
- Di Konsol Google Cloud , buka halaman Manage resources.
- Pilih resource organisasi Anda dari drop-down Organisasi di kiri atas halaman.
- Klik baris folder Anda untuk memilih folder dari daftar proyek dan folder.
- Klik menu opsi (elipsis vertikal) di baris, lalu klik Pindahkan.
- Klik Jelajahi untuk memilih folder tujuan Anda ingin memindahkan folder.
- Klik Pindahkan.
gcloud
Untuk memindahkan folder di resource organisasi, jalankan perintah berikut:
gcloud resource-manager folders move FOLDER_ID \
--organization=PARENT_ID
Ganti kode berikut:
FOLDER_ID: ID folder yang akan dipindahkanPARENT_ID: ID resource organisasi induk
Untuk memindahkan folder ke dalam folder lain, jalankan perintah berikut:
gcloud resource-manager folders move FOLDER_ID \
--folder=PARENT_ID
Ganti kode berikut:
FOLDER_ID: ID folder yang akan dipindahkanPARENT_ID: ID folder induk
REST
JSON permintaan:
request_json= '{
destinationParent: "folders/DESTINATION_FOLDER_ID"
}'
Permintaan curl Pindahkan Folder:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/DISPLAY_NAME:move
Ganti kode berikut:
- DESTINATION_FOLDER_ID: ID folder yang menjadi tujuan pemindahan folder lain, misalnya
98765. - DISPLAY_NAME: nama tampilan folder yang dipindahkan, misalnya "My Awesome Folder".
Respons Pindahkan Folder:
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
}
}
Permintaan curl Get Operation:
curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890
Respons Get Operation:
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
"name": "folders/12345",
"parent": "folders/98765",
"displayName": "DISPLAY_NAME",
"lifecycleState": "ACTIVE",
"createTime": "2017-07-19T23:29:26.018Z",
"updateTime": "2017-07-20T00:54:44.295Z"
}
}
Melihat atau mencantumkan project dalam folder
Untuk melihat atau mencantumkan project yang merupakan turunan langsung dari folder, Anda harus memiliki peran Folder Viewer (roles/resourcemanager.folderViewer) atau peran Browser (roles/browser) di folder tersebut.
Konsol
Di konsol Google Cloud , buka halaman Manage resources.
Di drop-down Organization, pilih organisasi Anda.
Di daftar resource, klik nama folder untuk meluaskannya dan melihat project di dalamnya.
Opsional: Gunakan panel Filter di bagian atas daftar untuk menelusuri project tertentu berdasarkan nama atau ID.
gcloud
Untuk mencantumkan semua project yang merupakan turunan langsung dari folder tertentu, gunakan perintah
gcloud projects list dengan filter:
gcloud projects list --filter="parent.id:FOLDER_ID AND parent.type:folder"
Ganti FOLDER_ID dengan ID unik folder.
REST
Gunakan metode projects.list dengan parameter kueri yang menentukan folder induk.
Permintaan HTTP: GET https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID
Contoh perintah curl:
Bash
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
"https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID"
Ganti FOLDER_ID dengan ID unik folder.
Memfilter project menurut Tag atau Label (Opsional)
Jika memiliki banyak project dalam folder, Anda dapat menggunakan filter untuk menemukan resource tertentu berdasarkan metadata.
Konsol
- Di panel Filter di halaman Kelola resource, ketik
Labels:key=valueuntuk mempersempit daftar ke project dengan label tertentu. Perhatikan bahwa konsol memberikan dukungan terbatas untuk pemfilteran visual menurut Tag; gunakan Google Cloud CLI untuk kueri Tag lanjutan.
gcloud
Untuk mencantumkan project dalam folder yang memiliki nilai Tag tertentu, gunakan tanda --filter
dengan atribut tag:
gcloud projects list \ --filter="parent.id:FOLDER_ID AND tags.TAG_KEY_PARENT/TAG_KEY_SHORT_NAME:TAG_VALUE_SHORT_NAME"
Ganti kode berikut:
FOLDER_ID: ID unik folder.TAG_KEY_PARENT: ID resource induk kunci tag, seperti organisasi atau project.TAG_KEY_SHORT_NAME: nama pendek kunci tag.TAG_VALUE_SHORT_NAME: nama pendek nilai tag.
Untuk memfilter menurut Label:
gcloud projects list \ --filter="parent.id:FOLDER_ID AND labels.KEY=VALUE"
Ganti kode berikut:
FOLDER_ID: ID unik folder.KEY: kunci label.VALUE: nilai label.
Langkah berikutnya
- Pelajari cara melihat dan memperbarui project.
- Pelajari peran dan izin untuk mengelola project.