您可以在資料夾中建立、移動及查看專案,以便整理Google Cloud 資源階層。
總覽
在 Google Cloud 資源階層中,專案是資源的核心組織和計費單位。專案位於資料夾 (或組織資源) 與基礎資源 (例如虛擬機器執行個體和儲存空間 bucket) 之間。
雖然資料夾是選用的分組機制,但將專案整理到資料夾中,可帶來幾項主要優勢:
可擴充的管理機制:透過階層式繼承,自動將 Identity and Access Management (IAM) 政策和安全限制套用至多項專案。
業務一致性:建構雲端環境,反映組織的部門、成本中心或開發生命週期 (例如開發、測試和正式環境)。
委派管理:授予特定團隊自主管理專案和子資料夾的權限,不需在組織層級授予廣泛權限。
成本可見度:將相關專案分組,簡化支出追蹤,並強化特定業務單位或應用程式的帳單分析。
安全隔離:建立明確的信任邊界,限制設定變更的影響範圍,並降低不同環境的安全風險。
在資料夾中建立專案
如要在資料夾中建立專案,您必須具備該資料夾的專案建立者角色 (roles/resourcemanager.projectCreator)。這個角色可以從父項資料夾沿用。
控制台
- 在 Google Cloud 控制台中,開啟「管理資源」頁面。
- 前往「管理資源」頁面。
- 從頁面左上方的「Organization」(組織) 下拉式選單中,選取組織資源。
- 按一下 [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。
請勿在資料夾名稱或其他資源名稱中加入機密資訊。任何對資料夾或相關資源的參照,都會公開資料夾名稱和資源名稱。
將專案移至資料夾
將專案移入或移出資料夾前,請務必仔細考量任何政策影響。在專案層級定義的允許政策會隨專案移動,但從父項資源繼承的政策不會移動。
移動專案時,任何直接附加的身分與存取權管理政策或組織政策都會一併移動。不過,資源階層中的專案也會受到從父項資源繼承的政策影響。如果專案繼承了 IAM 角色,而該角色授予使用者特定服務的使用權限,則使用者在目的地將無法存取該服務,除非該權限也會在目的地繼承。
舉例來說,假設某個服務帳戶的 Storage 物件建立者角色繫結至資料夾 A 的使用者。服務帳戶有權將資料上傳到資料夾 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) 頁面。
按一下資料列中的選項選單 (垂直刪節號),然後點選「Move」(移動)。
按一下 [瀏覽],選取要移入專案的資料夾。
按一下 [移動]。
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
如果成功,要求會傳回作業,可用於追蹤專案移動。
將資料夾移至其他資料夾
如要將資料夾移至其他資料夾,您必須具備來源和目的地資料夾的 resourcemanager.folders.move 權限。
控制台
將資料夾移至主控台其他資料夾的程序與移動專案相似。
- 在 Google Cloud 控制台中,開啟「管理資源」頁面。
- 從頁面左上方的「Organization」(組織) 下拉式選單中,選取組織資源。
- 在專案和資料夾清單中,按一下資料夾所在的列,選取資料夾。
- 按一下資料列中的選項選單 (垂直刪節號),然後點選「Move」(移動)。
- 按一下 [瀏覽],選取資料夾要移入的資料夾。
- 按一下 [移動]。
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
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:標籤的值。
後續步驟
- 瞭解如何查看及更新專案。
- 瞭解管理專案的角色和權限。