管理資料夾中的專案

您可以在資料夾中建立、移動及查看專案,以便整理Google Cloud 資源階層。

總覽

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

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

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

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

  • 委派管理:授予特定團隊自主管理專案和子資料夾的權限,不需在組織層級授予廣泛權限。

  • 成本可見度:將相關專案分組,簡化支出追蹤,並強化特定業務單位或應用程式的帳單分析。

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

在資料夾中建立專案

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

控制台

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

    開啟 Google Cloud 控制台

  2. 前往「管理資源」頁面。
  3. 從頁面左上方的「Organization」(組織) 下拉式選單中,選取組織資源。
  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:父項類型,例如 folder 或 organization。

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

將專案移至資料夾

將專案移入或移出資料夾前,請務必仔細考量任何政策影響。在專案層級定義的允許政策會隨專案移動,但從父項資源繼承的政策不會移動。

移動專案時,任何直接附加的身分與存取權管理政策或組織政策都會一併移動。不過,資源階層中的專案也會受到從父項資源繼承的政策影響。如果專案繼承了 IAM 角色,而該角色授予使用者特定服務的使用權限,則使用者在目的地將無法存取該服務,除非該權限也會在目的地繼承。

舉例來說,假設某個服務帳戶的 Storage 物件建立者角色繫結至資料夾 A 的使用者。服務帳戶有權將資料上傳到資料夾 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. 按一下資料列中的選項選單 (垂直刪節號),然後點選「Move」(移動)。

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

  6. 按一下 [移動]。

gcloud

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

gcloud beta projects move PROJECT_ID \
   --DESTINATION_TYPE DESTINATION_ID

更改下列內容:

  • PROJECT_ID::要移動的專案 ID 或編號。
  • DESTINATION_TYPE:目的地類型,可為 organization 或 folder。
  • 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

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

將資料夾移至其他資料夾

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

控制台

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

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

    開啟 Google Cloud 控制台

  2. 從頁面左上方的「Organization」(組織) 下拉式選單中,選取組織資源。
  3. 在專案和資料夾清單中,按一下資料夾所在的列,選取資料夾。
  4. 按一下資料列中的選項選單 (垂直刪節號),然後點選「Move」(移動)。
  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

English: 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 旗標和 tags 屬性:

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:標籤的值。

後續步驟