本頁說明如何將專案巢狀結構內嵌於資料夾中,藉此整理 Google Cloud 階層。
總覽
在 Google Cloud 資源階層中,專案是資源的核心組織和帳單單位。專案介於資料夾 (或機構資源) 和基礎資源之間,例如虛擬機器執行個體和儲存空間值區。
資料夾是選用的分組機制,但將專案整理到資料夾中可帶來幾項重要優勢:
可擴充的控管機制:透過階層式繼承,自動將 Identity and Access Management (IAM) 政策和安全限制套用至多個專案。
業務一致性:建構雲端環境,反映貴機構的部門、成本中心或開發生命週期 (例如開發、測試和正式環境)。
委派管理:授予特定團隊自主權,讓他們管理自己的專案和子資料夾,不必具備機構層級的廣泛權限。
費用可視性:將相關專案分組,簡化支出追蹤作業,並針對特定業務單位或應用程式,提升帳單分析成效。
安全隔離:建立明確的信任邊界,限制設定變更的影響範圍,並降低不同環境的安全風險。
在資料夾中建立專案
如要在資料夾中建立專案,您必須具有資料夾的「專案建立者」角色 (roles/resourcemanager.projectCreator)。這個角色可以從父項資料夾沿用。
控制台
- 在 Google Cloud 控制台中,開啟「Manage resources」(管理資源) 頁面。
- 前往「管理資源」頁面。
- 在頁面左上角的「機構」下拉式選單中,選取您的機構資源。
- 按一下 [Create Project] (建立專案)。
- 輸入專案名稱。
- 在 [目的地] 方塊中,按一下 [瀏覽],選取要在其中建立專案的資料夾。
- 按一下 [建立]。
gcloud
gcloud projects create PROJECT_ID --folder FOLDER_ID
更改下列內容:
PROJECT_ID:要建立的專案 IDFOLDER_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。
請勿在資料夾名稱或其他資源名稱中加入機密資訊。任何對資料夾或相關資源的參照都會公開資料夾名稱和資源名稱。
將專案移入資料夾
將專案移入或移出資料夾之前,請務必仔細思考此舉會對政策產生哪些影響。您在「專案」層級定義的允許政策會隨著專案轉移,但從父項資源沿用的政策則不會。
遷移專案時,直接附加的 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
您也可以透過自訂角色或其他預先定義的角色取得這些權限。
控制台
如要移動專案,請按照下列步驟操作:
前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
在頁面左上角的「機構」下拉式選單中,選取您的機構。
在資源清單中,按一下專案列以選取專案。請注意,您「不可以」點選專案名稱,這麼做會前往專案的 Identity and Access Management (IAM) 頁面。
按一下資料列中的選項選單 (垂直的刪節號圖示),再按一下「移動」。
按一下 [瀏覽],選取要移入專案的資料夾。
按一下 [移動]。
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/415104041262DESTINATION_PARENT:您要將專案移至的新上層機構資源或資料夾。例如:organizations/12345678901
如果成功,要求會傳回 Operation,可用於追蹤專案遷移作業。
將資料夾移入其他資料夾
如要將資料夾移入其他資料夾,您在來源資料夾及目的地資料夾都必須具備 resourcemanager.folders.move 權限。
控制台
將資料夾移至主控台其他資料夾的程序與移動專案相似。
- 在 Google Cloud 控制台中,開啟「Manage resources」(管理資源) 頁面。
- 在頁面左上角的「機構」下拉式選單中,選取您的機構資源。
- 在專案和資料夾清單中,按一下資料夾資料列以選取資料夾。
- 按一下資料列中的選項選單 (垂直的刪節號圖示),再按一下「移動」。
- 按一下 [瀏覽],選取資料夾要移入的資料夾。
- 按一下 [移動]。
gcloud
如要移動機構資源下的資料夾,請執行下列指令:
gcloud resource-manager folders move FOLDER_ID \
--organization=PARENT_ID
更改下列內容:
FOLDER_ID:要移動的資料夾 IDPARENT_ID:父項機構資源的 ID
如要將資料夾移至其他資料夾下,請執行下列指令:
gcloud resource-manager folders move FOLDER_ID \
--folder=PARENT_ID
更改下列內容:
FOLDER_ID:要移動的資料夾 IDPARENT_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)。
控制台
在 Google Cloud 控制台中,開啟「Manage resources」(管理資源) 頁面。
在「Organization」(機構) 下拉式選單中,選取您的機構。
在資源清單中,按一下資料夾名稱即可展開並查看專案。
選用:使用清單頂端的「篩選」列,依名稱或 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:標籤的值。
後續步驟
- 瞭解如何查看及更新專案。
- 瞭解管理專案的角色和權限。