Google Cloud 資源階層可將資源整理成樹狀結構。這個階層架構可協助您大規模管理資源,但只能模擬少數業務維度,包括機構架構、區域、工作負載類型和成本中心。階層結構缺乏彈性,無法將多個業務維度分層組合。
標記可用於建立資源的註解,在某些情況下,還可將資源是否具備特定標記設為條件,並按照這項條件允許或拒絕政策。只要使用標記並依據條件強制執行政策,即可精細控管資源階層結構。
標記和標籤
標籤是建立資源註解的另一種方式。 下表列出標記和標籤的一些差異:
| 標記 | 標籤 | |
|---|---|---|
| 資源結構 | 標記鍵、標記值和標記繫結都是個別資源 | 本身不是資源,而是資源的中繼資料 |
| 定義 | 在機構或專案層級定義 | 由各個資源定義 |
| 存取控管 | 管理及附加標記需要 Identity and Access Management (IAM) 角色 | 附加標籤需要 IAM 角色,這會因服務資源而異 |
| 附件的必要條件 | 必須先定義標記鍵和標記值,才能將標記附加至資源 | 附件沒有先決條件 |
| 是否沿用設定 | 資源的子項會繼承 Google Cloud 階層中的標記繫結 | 資源的子項不會繼承這項設定 |
| 刪除規定 | 如要刪除標記,必須先移除該標記的所有繫結 | 隨時可從資源中移除 |
| 命名規定 | 代碼值和代碼鍵的規定 | 標籤規定 |
| 鍵/值名稱長度 | 最多可輸入 256 個半形字元 | 最多 63 個半形字元 |
| 支援允許和拒絕政策 | 標記可供允許政策條件和拒絕政策條件參照 | 不支援允許和拒絕政策 |
| 組織政策支援 | 機構政策條件限制可參照部分資源的標記 | 不支援機構政策 |
| Cloud Billing 整合 | 執行退款、稽核和其他費用分配分析,將 Cloud Billing 費用資料匯出至 BigQuery | 在 Cloud Billing 中依標籤篩選資源,將 Cloud Billing 資料匯出至 BigQuery |
如要進一步瞭解標籤,請參閱「建立及管理標籤」。
語意標記
語意標記是鍵/值組合,可為資源提供有意義的中繼資料,並採用 OpenTelemetry (OTel) 慣例支援的強大標準化語意。
您可以在 App Hub 資源中使用語意標記。在 App Hub 中為服務和工作負載設定屬性時,App Hub 會自動將這些屬性複製為直接基礎資源上的唯讀系統語意標記。
系統語意標記為唯讀,您無法直接使用 Tags API 或 Google Cloud 控制台編輯或移除這些系統標記。標記管理作業會在 App Hub 中進行。
App Hub 複製的語意標記
如果您使用 App Hub,系統會自動將服務或工作負載上設定的「環境」和「重要性」屬性,複製為專用命名空間 google:AppHub 下的唯讀系統語意標記。
支援的系統標記包括:
google:AppHub/environment:從應用程式中心取得的值,例如PRODUCTION或STAGING。google:AppHub/criticality:從應用程式中心取得的值,例如MISSION_CRITICAL或HIGH。
將 App Hub 內容顯示為系統標記,可確保下游服務 (例如 Google Cloud 控制台) 使用權威中繼資料來強制執行控管和安全政策,避免手動設定相關風險。
如要進一步瞭解如何管理語意標記,請參閱「查看及管理語意標記」。
語意目錄
語意目錄會列出可用的語意,以及這些語意對應的 OpenTelemetry (OTel) 支援屬性。您可以在 Google Cloud 控制台中瀏覽這個目錄,或使用 API 查看詳細資料。
如要進一步瞭解如何存取目錄,請參閱「查看語意目錄」。
| 元件資訊鍵 | OTel 屬性鍵 | 語意值 | OTel 屬性值 |
|---|---|---|---|
ENVIRONMENT |
deployment.environment.name |
PRODUCTION |
production |
STAGING |
staging |
||
TEST |
test |
||
DEVELOPMENT |
development |
||
CRITICALITY |
service.criticality |
MISSION_CRITICAL |
critical |
HIGH |
high |
||
MEDIUM |
medium |
||
LOW |
low |
語意標記的限制
語意標記有下列限制:
- 自訂繫結:您無法透過 Tags API,直接將
ENVIRONMENT或CRITICALITY語意標記繫結至資源或 Resource Manager 節點 (專案、資料夾或機構)。 - 使用者定義的語意:系統不支援將現有標記升級為語意標記。
- 僅限直接資源:同步處理僅適用於在應用程式中心註冊的直接資源。不會傳播至服務或工作負載中的巢狀或間接資源 (例如 MIG 中的個別 VM)。
建立代碼
標記的結構為鍵/值組合。您可以在機構或專案資源下建立標記鍵資源,而標記值是附加至鍵的資源,例如標記鍵 environment 具有 production 和 development 值。
標記管理
管理員可以限制哪些使用者可建立、更新、刪除及將標記附加至資源,藉此控管標記的使用情形。他們可以選取個別標記進行編輯,例如新增或移除值,以及更新說明。這樣一來,您就能精細控管代碼。
代碼可選擇性提供說明,在擷取代碼相關資訊時顯示。說明可協助將代碼附加至資源的使用者瞭解代碼的用途。
在父項專案或機構中,每個標籤鍵不得重複。這可確保每個標籤值繫結至資源時,都會與標籤鍵建立不重複的配對。
政策和標記
您可以同時使用標記和 IAM 條件,達到下列目的:
建立標記值後,即可將標記值繫結至資源。接著,您可以建立含有條件的 IAM 政策,根據標記鍵是否已繫結至資源來識別資源。如要瞭解如何使用標記和 IAM 條件,請參閱「標記和條件式存取權」一文。
標記異動的影響
如果您使用標記有條件地授予或拒絕存取權,或是設定機構單位政策的範圍,則將標記繫結至資源或從資源取消繫結,可能會改變這些政策的影響。
舉例來說,假設您有一群開發人員需要管理 Compute Engine 執行個體,但僅限於用於開發的執行個體:
- 標記定義:您有一個標記鍵
123456789012/env,值為dev和prod。 - 條件式存取權:將 Compute 執行個體管理員角色 (
roles/compute.instanceAdmin) 授予開發人員群組。在角色繫結中新增條件,只有當資源具有env: dev標記時,才允許存取。 - 變更的影響:
- 繫結標記:將
env: dev標記附加至執行個體。 條件式角色繫結現在可授予開發人員管理執行個體的權限。 - 取消繫結標記:稍後,同一個執行個體會升級為正式環境。你取消繫結
env: dev標記,並繫結env: prod標記。條件式角色繫結不再授予開發人員管理這個執行個體的存取權。
- 繫結標記:將
一般來說,代碼變更會在 2 分鐘內生效,不過,變更最多可能需要 7 分鐘,系統才會全面套用變更。這項傳播延遲時間適用於授予或撤銷存取權的速度,或是標記繫結或取消繫結後,機構政策生效的速度。
使用機構政策強制執行必要標記
您可以使用自訂機構政策,強制在資源上使用標記。強制執行必要標記後,您只能建立符合機構標記政策的資源,也就是資源會繫結至政策中指定必要標記鍵的標記值。詳情請參閱「設定自訂限制來強制執行標記」。
強制執行標記功能適用於下列資源類型:
- Resource Manager 專案和資料夾
- Filestore 執行個體
- AlloyDB for PostgreSQL 叢集和備份資源
- 工作流程
- Compute Engine 資源:
- 執行個體
- 磁碟
- 外部 VPN 閘道
- VPN 閘道
- 目標 VPN 閘道
- VPN 通道
- 互連網路
- 互連網路連結
- 後端服務
- 區域後端服務
- 後端值區
- 虛擬私有雲資源:
- 網路
- 子網路
- 防火牆規則
- 路由
標記繼承
將標記值附加至資源後,資源的所有子系預設都會繼承相同的標記值。您可以在後代資源中覆寫繼承的標記值。如要覆寫沿用的標記值,請將不同的標記值繫結至子項資源。不同標記值必須使用與沿用標記值相同的標記鍵。
舉例來說,假設您將 environment: development 標記套用至資料夾,而該資料夾有兩個名為 team-a 和 team-b 的子資料夾。您也可以將其他標記 environment: test 套用至 team-b 資料夾。因此,team-a 資料夾中的專案和其他資源會繼承 environment: development 標記,而 team-b 資料夾中的專案和其他資源則會繼承 environment: test 標記:
如果從 team-b 資料夾中移除 environment: test 標記,該資料夾及其資源就會沿用 environment: development 標記。
附加至資源並由資源繼承的所有標記,統稱為「有效標記」。資源的有效標記是直接附加至資源的標記,以及附加至整個階層中所有資源上層項目的標記。
使用含有 IAM 條件的標記時,建議您為 IAM 條件使用的每個標記鍵建立安全預設標記值。將安全預設標記值繫結至機構,讓機構內的所有資源都可沿用該標記值,藉此套用安全預設標記值。如要變更標記值,請明確覆寫相關資源的繼承繫結。
舉例來說,假設您有 IAM 條件,該條件取決於 enforcement 標記鍵的 on 標記值,而該標記鍵也有 off 標記值。將標記值 enforcement: off 繫結至機構,建立安全預設值,供機構內的所有資源沿用。只將標記值 enforcement: on 繫結至組織內選取的資源。
接著,您可以編寫政策來處理 enforcement 標記鍵,並根據資源是否為 enforcement: on 或 enforcement: off,以及是否為 enforcement: default,設定影響資源的條件。如果從資源中移除 enforcement 標記鍵,資源就會從父項資源繼承 enforcement 的標記值。如果沒有父項資源具有 enforcement 標記鍵,資源就會從機構資源繼承 enforcement: default。
使用安全預設標記有助於避免非預期行為,但建議您先檢查標記和政策是否設有條件,再移動資源或移除標記。
刪除標籤鍵和值
如要刪除標記值,請先刪除使用該標記值的所有資源繫結。
防止刪除標記值
您可以將代碼保留附加至代碼值,為代碼值建立額外保護層。標記保留與標記繫結類似,可防止使用者刪除標記值。
部分資源會自動為附加至資源的每個標籤值建立標籤保留。必須先移除這項標記保留,才能刪除標記值。
後續步驟
- 如要進一步瞭解如何使用標記,請參閱「建立及管理標記」頁面。
- 如要瞭解如何搭配使用標記與 Compute Engine,請參閱「管理資源的標記」。
- 如要瞭解如何使用安全標記設定防火牆政策,請參閱「建立及管理安全標記」。