管理資料夾中的專案

本頁說明如何將專案巢狀結構內嵌於資料夾中,藉此整理 Google Cloud 階層。

總覽

在 Google Cloud 資源階層中,專案是資源的核心組織和帳單單位。專案介於資料夾 (或機構資源) 和基礎資源之間,例如虛擬機器執行個體和儲存空間值區。

資料夾是選用的分組機制,但將專案整理到資料夾中可帶來幾項重要優勢:

  • 可擴充的控管機制:透過階層式繼承,自動將 Identity and Access Management (IAM) 政策和安全限制套用至多個專案。

  • 業務一致性:建構雲端環境,反映貴機構的部門、成本中心或開發生命週期 (例如開發、測試和正式環境)。

  • 委派管理:授予特定團隊自主權,讓他們管理自己的專案和子資料夾,不必具備機構層級的廣泛權限。

  • 費用可視性:將相關專案分組,簡化支出追蹤作業,並針對特定業務單位或應用程式,提升帳單分析成效。

  • 安全隔離:建立明確的信任邊界,限制設定變更的影響範圍,並降低不同環境的安全風險。

在資料夾中建立專案

如要在資料夾中建立專案,您必須具有資料夾的「專案建立者」角色 (roles/resourcemanager.projectCreator)。這個角色可以從父項資料夾沿用。

控制台

  1. 在 Google Cloud 控制台中,開啟「Manage resources」(管理資源) 頁面。

    開啟 Google Cloud 控制台

  2. 前往「管理資源」頁面
  3. 在頁面左上角的「機構」下拉式選單中,選取您的機構資源。
  4. 按一下 [Create Project] (建立專案)
  5. 輸入專案名稱
  6. 在 [目的地] 方塊中,按一下 [瀏覽],選取要在其中建立專案的資料夾。
  7. 按一下 [建立]。

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

更改下列內容:

  • PROJECT_ID:要建立的專案 ID
  • FOLDER_ID:要在其中建立專案的資料夾 ID。

REST

要求 JSON:

   request_json= '{
      name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
   }'

curl 要求:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/projects

更改下列內容:

  • PROJECT_ID:要建立的專案專屬 ID。例如:my-awesome-proj-123
  • DISPLAY_NAME:要建立的專案顯示名稱。
  • PARENT_ID:要建立父項的專屬 ID。例如:123
  • PARENT_TYPE:父項類型,例如 folderorganization

請勿在資料夾名稱或其他資源名稱中加入機密資訊。任何對資料夾或相關資源的參照都會公開資料夾名稱和資源名稱。

將專案移入資料夾

將專案移入或移出資料夾之前,請務必仔細思考此舉會對政策產生哪些影響。您在「專案」層級定義的允許政策會隨著專案轉移,但從父項資源沿用的政策則不會。

遷移專案時,直接附加的 Identity and Access Management 政策或組織政策也會一併遷移。不過,資源階層中的專案也會受到從父項資源繼承的政策影響。如果專案繼承的 IAM 角色可授權使用者使用特定服務,除非目的地也繼承了該權限,否則使用者無法在目的地存取該服務。

舉例來說,假設服務帳戶在資料夾 A 中,已繫結至具有「Storage 物件建立者」角色的使用者。服務帳戶有權將資料上傳至資料夾 A 中任何專案的 Cloud Storage。如果您將其中一個專案移至沒有相同沿用權限的資料夾 B,該專案的服務帳戶將會失去上傳資料的能力,導致服務中斷。

如果您是在來源資料夾及目的地資料夾中定義組織政策,也需考慮同樣的事項。和 IAM 政策相似,機構政策也來自於繼承。因此,您必須確保來源資料夾和目的地資料夾有相同的機構政策。

如要進一步瞭解組織政策,請參閱「機構政策服務簡介」。

如要移動專案,您必須在來源資料夾和目的地資料夾中,都具備專案移動者 IAM 角色 (roles/resourcemanager.projectMover)。如果資源不在資料夾中,您就需要在機構資源擁有此角色。

這些角色會授予下列必要權限:

  • 專案的 resourcemanager.projects.update 權限
  • 如果資源位於資料夾中:按一下來源資料夾和目的地資料夾的 resourcemanager.projects.move
  • 如果資源不在資料夾中:在機構資源上按一下 resourcemanager.projects.move

您也可以透過自訂角色或其他預先定義的角色取得這些權限。

控制台

如要移動專案,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在頁面左上角的「機構」下拉式選單中,選取您的機構。

  3. 在資源清單中,按一下專案列以選取專案。請注意,您「不可以」點選專案名稱,這麼做會前往專案的 Identity and Access Management (IAM) 頁面。

  4. 按一下資料列中的選項選單 (垂直的刪節號圖示),再按一下「移動」

  5. 按一下 [瀏覽],選取要移入專案的資料夾。

  6. 按一下 [移動]

gcloud

如要移動專案,請執行 gcloud beta projects move 指令:

gcloud beta projects move PROJECT_ID \
   --DESTINATION_TYPE DESTINATION_ID

更改下列內容:

  • PROJECT_ID:要移動的專案 ID 或編號。
  • DESTINATION_TYPE:目的地類型,可為 organizationfolder
  • DESTINATION_ID:要將專案移至的機構資源或資料夾 ID。

REST

您可以使用 v3 projects.move 方法遷移專案。

要求:

POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
  "destinationParent": DESTINATION_PARENT
}

更改下列內容:

  • PROJECT_NAME:要更新的專案名稱。例如:projects/415104041262

  • DESTINATION_PARENT:您要將專案移至的新上層機構資源或資料夾。例如:organizations/12345678901

如果成功,要求會傳回 Operation,可用於追蹤專案遷移作業。

將資料夾移入其他資料夾

如要將資料夾移入其他資料夾,您在來源資料夾及目的地資料夾都必須具備 resourcemanager.folders.move 權限。

控制台

將資料夾移至主控台其他資料夾的程序與移動專案相似。

  1. 在 Google Cloud 控制台中,開啟「Manage resources」(管理資源) 頁面。

    開啟 Google Cloud 控制台

  2. 在頁面左上角的「機構」下拉式選單中,選取您的機構資源。
  3. 在專案和資料夾清單中,按一下資料夾資料列以選取資料夾。
  4. 按一下資料列中的選項選單 (垂直的刪節號圖示),再按一下「移動」
  5. 按一下 [瀏覽],選取資料夾要移入的資料夾。
  6. 按一下 [移動]

gcloud

如要移動機構資源下的資料夾,請執行下列指令:

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

更改下列內容:

  • FOLDER_ID:要移動的資料夾 ID
  • PARENT_ID:父項機構資源的 ID

如要將資料夾移至其他資料夾下,請執行下列指令:

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

更改下列內容:

  • FOLDER_ID:要移動的資料夾 ID
  • PARENT_ID:父項資料夾的 ID

REST

要求 JSON:

request_json= '{
   destinationParent: "folders/DESTINATION_FOLDER_ID"
}'

「移動資料夾」curl 要求:

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

更改下列內容:

  • DESTINATION_FOLDER_ID:其他資料夾要移入的資料夾的 ID,例如 98765
  • DISPLAY_NAME:要移動的資料夾的顯示名稱,例如「我的百寶箱」。

「移動資料夾」回應:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "DISPLAY_NAME",
    "operationType": "MOVE"
  }
}

「取得作業」curl 要求:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890

「取得作業」回應:

{
  "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"
  }
}

查看或列出資料夾中的專案

如要查看或列出資料夾的直接子項專案,您必須擁有資料夾的「資料夾檢視者」角色 (roles/resourcemanager.folderViewer) 或「瀏覽者」角色 (roles/browser)。

控制台

  1. 在 Google Cloud 控制台中,開啟「Manage resources」(管理資源) 頁面。

    開啟「管理資源」頁面

  2. 在「Organization」(機構) 下拉式選單中,選取您的機構。

  3. 在資源清單中,按一下資料夾名稱即可展開並查看專案。

    選用:使用清單頂端的「篩選」列,依名稱或 ID 搜尋特定專案。

gcloud

如要列出特定資料夾的所有直接子項專案,請使用 gcloud projects list 指令和篩選條件:

gcloud projects list --filter="parent.id:FOLDER_ID AND parent.type:folder"

FOLDER_ID 替換為資料夾的專屬 ID。

REST

使用 projects.list 方法,並透過查詢參數定義父項資料夾。

HTTP 要求:GET https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID

curl 指令範例:

Bash

curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
"https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID"

FOLDER_ID 替換為資料夾的專屬 ID。

依標記或標籤篩選專案 (選用)

如果資料夾內有大量專案,可以使用篩選器根據中繼資料尋找特定資源。

控制台

  • 在「管理資源」頁面的「篩選器」列中輸入 Labels:key=value,將清單範圍縮小至具有特定標籤的專案。請注意,控制台對依標記進行視覺化篩選的支援有限,如要執行進階標記查詢,請使用 Google Cloud CLI。

gcloud

如要列出資料夾中具有特定標記值的專案,請使用 --filter 標記和標記屬性:

gcloud projects list \
  --filter="parent.id:FOLDER_ID AND tags.TAG_KEY_PARENT/TAG_KEY_SHORT_NAME:TAG_VALUE_SHORT_NAME"

更改下列內容:

  • FOLDER_ID:資料夾的專屬 ID。
  • TAG_KEY_PARENT:標記鍵父項資源的 ID,例如機構或專案。
  • TAG_KEY_SHORT_NAME:標記鍵的簡稱。
  • TAG_VALUE_SHORT_NAME:標記值的簡稱。

如要依標籤篩選:

gcloud projects list \
  --filter="parent.id:FOLDER_ID AND labels.KEY=VALUE"

更改下列內容:

  • FOLDER_ID:資料夾的專屬 ID。
  • KEY:標籤的鍵。
  • VALUE:標籤的值。

後續步驟