Mengelola project dalam folder

Anda dapat membuat, memindahkan, mencantumkan, dan memfilter project dalam folder menggunakan konsolGoogle Cloud , Google Cloud CLI, atau Cloud Resource Manager API. Dengan mengatur project ke dalam folder, Anda dapat menerapkan kebijakan turunan, mendelegasikan administrasi, dan menyelaraskan hierarki resource Google Cloud dengan tim dan lingkungan Anda.

Ringkasan

Dalam hierarki resource Google Cloud , project berfungsi sebagai unit organisasi dan penagihan inti untuk resource Anda. Project berada di antara folder (atau resource organisasi) dan resource yang mendasarinya, 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: Menerapkan kebijakan Identity and Access Management (IAM) dan batasan keamanan secara otomatis ke beberapa project melalui pewarisan berbasis hierarki.

  • Penyelarasan bisnis: Buat struktur lingkungan cloud Anda untuk mencerminkan departemen, pusat biaya, atau siklus proses pengembangan organisasi Anda (seperti Dev, Staging, dan Prod).

  • Administrasi yang didelegasikan: Memberikan otonomi kepada tim tertentu untuk mengelola project dan sub-folder mereka sendiri tanpa memerlukan izin yang luas di tingkat organisasi.

  • Visibilitas biaya: Kelompokkan project terkait untuk menyederhanakan pelacakan pengeluaran dan meningkatkan analisis penagihan untuk unit bisnis atau aplikasi tertentu.

  • Isolasi keamanan: Tetapkan batas kepercayaan yang jelas untuk membatasi area yang terpengaruh oleh perubahan konfigurasi dan mengurangi risiko keamanan di berbagai lingkungan.

Membuat project dalam folder

Untuk membuat project dalam folder, Anda harus memiliki peran Project Creator (roles/resourcemanager.projectCreator) di folder tersebut. Peran ini mungkin diwarisi dari folder induk.

Konsol

  1. Di konsol Google Cloud , buka halaman Manage resources.

    Buka konsol Google Cloud

  2. Buka halaman Kelola Resource.
  3. Pilih resource organisasi Anda dari drop-down Organization di kiri atas halaman.
  4. Klik Create Project.
  5. Masukkan Project name.
  6. Di kotak Destination, klik Browse untuk memilih folder tempat Anda ingin membuat project.
  7. Klik Create.

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

Ganti kode berikut:

  • PROJECT_ID: ID project ID yang akan dibuat
  • FOLDER_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, seperti folder atau organization.

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 folder

Anda harus mempertimbangkan dengan cermat implikasi kebijakan apa pun sebelum memindahkan project ke dalam atau ke luar folder. Kebijakan izin yang Anda tentukan di level project akan dipindahkan bersama project, tetapi kebijakan yang diwarisi dari resource induk tidak akan dipindahkan.

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 dipengaruhi oleh kebijakan yang diwarisi dari resource induk. Jika project mewarisi peran IAM yang memberi pengguna izin untuk menggunakan layanan tertentu, pengguna tidak akan memiliki akses ke layanan tersebut di tujuan, kecuali jika pengguna juga akan 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 ini ke Folder B, yang tidak memiliki izin turunan yang sama, akun layanan untuk project tersebut akan kehilangan kemampuan untuk mengupload data, sehingga mengakibatkan pemadaman 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 berada dalam folder, Anda memerlukan peran ini pada resource organisasi.

Peran ini memberi Anda izin yang diperlukan berikut:

  • resourcemanager.projects.update pada project
  • Jika resource berada dalam folder: resourcemanager.projects.move di folder sumber dan tujuan
  • Jika resource tidak berada dalam folder: resourcemanager.projects.move pada resource organisasi

Anda juga bisa mendapatkan izin ini dengan peran khusus, atau peran bawaan lainnya.

Konsol

Untuk memindahkan project:

  1. Di konsol Google Cloud , buka halaman Manage resources.

    Buka Kelola resource

  2. Pilih Organisasi Anda dari drop-down Organization di kiri atas halaman.

  3. 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.

  4. Klik menu opsi (ellipsis vertikal) di baris, lalu klik Move.

  5. Klik Browse untuk memilih folder tempat Anda ingin memindahkan project.

  6. 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, organization atau folder.
  • DESTINATION_ID: ID resource atau folder organisasi tempat Anda ingin memindahkan project.

REST

Anda dapat menggunakan metode projects.move v3 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/415104041262

  • DESTINATION_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 memindahkan folder ke folder lain di konsol mirip dengan memindahkan project.

  1. Di konsol Google Cloud , buka halaman Manage resources.

    Buka konsol Google Cloud

  2. Pilih resource organisasi Anda dari drop-down Organization di kiri atas halaman.
  3. Klik baris folder untuk memilih folder dari daftar project dan folder.
  4. Klik menu opsi (ellipsis vertikal) di baris, lalu klik Move.
  5. Klik Browse untuk memilih folder tujuan pemindahan folder.
  6. Klik Pindahkan.

gcloud

Untuk memindahkan folder di bawah resource organisasi, jalankan perintah berikut:

gcloud resource-manager folders move FOLDER_ID \
    --organization=PARENT_ID

Ganti kode berikut:

  • FOLDER_ID: ID folder yang akan dipindahkan
  • PARENT_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 dipindahkan
  • PARENT_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 tempat Anda memindahkan 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) pada folder tersebut.

Konsol

  1. Di konsol Google Cloud , buka halaman Manage resources.

    Buka halaman Kelola resource

  2. Di menu drop-down Organization, pilih organisasi Anda.

  3. Dalam daftar resource, klik nama folder untuk meluaskannya dan melihat project-nya.

    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 pada halaman Manage resources, ketik Labels:key=value untuk mempersempit daftar ke project dengan label tertentu. Perhatikan bahwa konsol ini 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 flag --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