Mengelola project dalam folder

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

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

    Buka Google Cloud konsol

  2. Buka halaman Kelola Resource.
  3. Pilih resource organisasi Anda dari drop-down Organisasi di kiri atas halaman.
  4. Klik Create Project.
  5. Masukkan Nama project.
  6. Di kotak Tujuan, klik Jelajahi 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 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 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.update pada project
  • Jika resource berada di folder: resourcemanager.projects.move di folder sumber dan tujuan
  • Jika resource tidak ada di folder: resourcemanager.projects.move di 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 Organisasi 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 (elipsis vertikal) di baris, lalu klik Pindahkan.

  5. Klik Jelajahi 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 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/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 pemindahan folder ke dalam folder lain di konsol mirip dengan pemindahan project.

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

    Buka Google Cloud konsol

  2. Pilih resource organisasi Anda dari drop-down Organisasi di kiri atas halaman.
  3. Klik baris folder Anda untuk memilih folder dari daftar proyek dan folder.
  4. Klik menu opsi (elipsis vertikal) di baris, lalu klik Pindahkan.
  5. Klik Jelajahi untuk memilih folder tujuan Anda ingin memindahkan folder.
  6. 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 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 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

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

    Buka halaman Kelola resource

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

  3. 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=value untuk 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