本指南說明如何建立及管理代碼。標記是可附加至 Google Cloud 資源的鍵/值組合。您可以根據支援的資源是否具備特定標記,有條件地允許或拒絕政策。
事前準備
如要進一步瞭解標記及其運作方式,請參閱「標記總覽」。
所需權限
如要取得管理標記所需的權限,請要求管理員授予您下列 IAM 角色:
-
標記檢視者 (
roles/resourcemanager.tagViewer) 標記附加至的資源 -
在機構層級查看及管理標記:
機構檢視者 (
roles/resourcemanager.organizationViewer) 機構 -
建立、更新及刪除代碼定義:
代碼管理員 (
roles/resourcemanager.tagAdmin) 適用於您要建立、更新或刪除代碼的資源 -
在資源中附加及移除標記:
標記使用者 (
roles/resourcemanager.tagUser) 在標記值和您要附加或移除標記值的資源上
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立及定義新代碼
標記是鍵/值組合,會附加至Google Cloud 階層中的資源。如要建立新標記,請先建立標記鍵,說明要建立的標記。舉例來說,您可能想為資源階層中的資源指定正式版、測試版和開發環境,方法是建立名為 environment 的鍵。
接著,您可以建立金鑰可擁有的不同值。如果您建立名為 environment 的標記鍵,可能想指定有三種潛在環境,並為每個環境建立值:production、development 和 test。
最後,您可以將這些標記附加至資源,並連帶附加鍵/值組合關聯。將標記鍵和值附加至資源,也稱為建立標記繫結。舉例來說,您可以在整個機構中,將 test 附加至多個測試環境資料夾,每個資料夾都會攜帶 environment: test 鍵/值組合。
您也可以建立標記鍵,讓使用者在將標記繫結新增至資源時,動態指定值。這些值稱為動態代碼值 (預覽)。 您可以為動態代碼值設定驗證規則,在使用者附加資源時,對建立的代碼強制執行特定格式、值或限制。
如果無法預先定義所有可能的標記值,動態標記值就非常實用。舉例來說,擁有者、應用程式 ID、服務 ID 或成本中心等屬性可能有數千個不同的值。手動預先定義及維護如此龐大的標記值清單,會造成龐大的管理負擔。
標記鍵和值的限制
在特定機構或專案中,最多可建立 1,000 個標記鍵。這些限制互不影響。舉例來說,在專案下建立的標記鍵不會計入機構節點的限制。如需超過預設值,請提交支援要求,將每個機構或專案的標記鍵上限調高至 10,000 個。
預設情況下,每個預先定義的標記鍵最多可關聯 1000 個值。您也可以提出支援要求,將每個鍵的標記值上限提高至 10,000 個。不過,如果您使用動態代碼值,每個代碼鍵可用的不同代碼值數量就沒有上限。
- 大多數接受標記的資源類型都支援動態標記值,但 Google Cloud 儲存空間資源和 Google Compute Engine 代管執行個體 (MIG) 除外。
- 動態標記值無法用於 Identity and Access Management (IAM) 條件或 Organization Policy Service 限制。
- 您只能使用 Google Cloud CLI 和 API,建立及更新具有動態值的標記鍵和標記繫結。
建立標記
首先,您需要建立標記鍵。
標記鍵的 shortName 長度上限為 256 個半形字元。shortName 的允許字元集包括 UTF-8 編碼的 Unicode 字元,但單引號 (')、雙引號 (")、反斜線 (\) 和正斜線 (/) 除外。
shortName 建立後就無法變更,且在相同命名空間內不得重複。
控制台
如要建立標記鍵,請執行下列步驟:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的「範圍選擇器」中,選取要建立標記鍵的機構或專案。
點選 「Create」(建立)。
在「標籤鍵」方塊中,輸入標籤鍵的顯示名稱。這會成為代碼命名空間名稱的一部分。
在「標記鍵說明」方塊中,輸入標記鍵的說明。
如要為這個鍵新增代碼值,請為要建立的每個代碼值點選「新增值」。
在「標記值」方塊中,輸入標記值的顯示名稱。這會成為代碼命名空間名稱的一部分。
在「標記值說明」方塊中,輸入標記值的說明。
新增完標記值後,請按一下「建立標記鍵」。
gcloud
如要建立標記鍵,請使用 gcloud resource-manager tags keys create 指令:
gcloud resource-manager tags keys create SHORT_NAME \
--parent=RESOURCE_ID
其中:
SHORT_NAME是標記鍵的顯示名稱,例如:environment。RESOURCE_ID是這個標記鍵的父項機構或專案資源 ID,例如:organizations/123456789012、projects/test-project123或projects/234567890123。如要瞭解如何取得機構 ID,請參閱建立及管理機構。 如要瞭解如何取得專案 ID,請參閱「建立及管理專案」。
您應該會收到類似以下的回覆:
Creating tag key environment in organization 1234567890... <blocking wait until creation completes> name: tagKeys/123456789012 short_name: environment namespaced_name: 123456789012/environment parent: organizations/123456789012
Terraform
使用 Terraform 建立標籤鍵之前,請先啟用 Cloud Resource Manager API。
您可以使用 google_tags_tag_key 資源建立標記鍵。
resource "google_tags_tag_key" "key" {
parent = "<var>RESOURCE</var>"
short_name = "<var>KEY_SHORT_NAME</var>"
description = "<var>DESCRIPTION</var>"
}
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
API
如要建立標記鍵,請建立鍵的 JSON 表示法。如要進一步瞭解標記鍵的格式,請參閱「TagKey 參考資料」。
然後使用 tagKeys.create 方法:
POST https://cloudresourcemanager.googleapis.com/v3/tagKeys/ -d
JSON 要求主體:
{
"parent": RESOURCE_ID,
"shortName": SHORT_NAME,
"description": DESCRIPTION,
}
其中:
建立金鑰後,您會看到可供人閱讀的專屬顯示名稱 (稱為 namespacedName),該名稱位於父項資源的命名空間中,以及全域不重複的永久 ID (稱為 name)。
使用動態鍵值建立標記鍵
如要建立支援動態值的標記鍵,請使用下列其中一種方法:
gcloud
gcloud alpha resource-manager tags keys create SHORT_NAME \
--parent=RESOURCE_ID \
--allowed-values-regex=VALID_REGEX
更改下列內容:
SHORT_NAME:標記鍵的顯示名稱,例如:environment。RESOURCE_ID:這個標記鍵的父項機構或專案資源 ID,例如:organizations/123456789012、projects/test-project123或projects/234567890123。如要瞭解如何取得機構 ID,請參閱建立及管理機構。 如要瞭解如何取得專案 ID,請參閱「建立及管理專案」。VALID_REGEX:RE2 語法的規則運算式,用於定義與新建立的標記鍵相關聯的標記值允許格式 (僅用於驗證動態值)。如要允許指定任何值,請使用規則運算式.*。
您應該會收到類似以下的回覆:
allowedValuesRegex: '[abc]' name: tagKeys/123456789012 shortName: environment namespacedName: 123456789012/environment parent: organizations/123456789012
Terraform
使用 Terraform 建立標籤鍵之前,請先啟用 Cloud Resource Manager API。
您可以使用 google_tags_tag_key 資源建立支援動態值的代碼鍵。
resource "google_tags_tag_key" "key" {
parent = "organizations/123456789"
short_name = "keyname"
description = "For keyname resources."
allowed_values_regex = "^[a-z]+$"
}
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
更改下列內容:API
如要建立支援動態標記值的標記鍵,請建立鍵的 JSON 表示法。如要進一步瞭解標記鍵的格式,請參閱「TagKey 參考資料」。
然後使用 tagKeys.create 方法:
POST https://cloudresourcemanager.googleapis.com/v3/tagKeys/
JSON 要求主體:
{
"parent": RESOURCE_ID,
"shortName": SHORT_NAME,
"description": DESCRIPTION,
"allowedValuesRegex": VALID_REGEX
}
更改下列內容:
建立金鑰後,您會看到稱為 namespacedName 的唯一可讀顯示名稱 (位於父項資源的命名空間內),以及稱為 name 的全域不重複永久 ID。
查看標記鍵
您可以使用永久 ID 或建立時顯示的命名空間名稱,找出特定標記鍵的相關資訊。
控制台
如要查看已建立的標記,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍挑選器中,選取包含代碼的機構或專案。
所選機構或專案中的所有標記都會顯示在清單中。 按一下要查看標記金鑰的標記。
gcloud
如要顯示與特定標記鍵相關的資訊,請使用 gcloud resource-manager tags keys describe 指令:
gcloud resource-manager tags keys describe TAGKEY_NAME
TAGKEY_NAME 是您要顯示資訊的標記鍵永久 ID 或命名空間名稱,例如:tagKeys/123456789012 或 project-id/environment。
您應該會收到類似以下的回覆:
name: tagKeys/123456789012 short_name: environment namespaced_name: 123456789012/environment parent: organizations/123456789012
如果是含有動態值的標記,回應也會包含 allowedValuesRegex 欄位,顯示用於驗證標記套用至資源時輸入的任何動態標記值的 RE2 規則運算式。
API
如要顯示與特定標記鍵相關的資訊,請使用 tagKeys.get 方法:
GET https://cloudresourcemanager.googleapis.com/v3/{name=TAGKEY_NAME}
TAGKEY_NAME 是您要顯示資訊的標記鍵永久 ID,例如:tagKeys/123456789012。
如要使用命名空間名稱顯示特定標記鍵的相關資訊,請使用 tagKeys.getNamespaced 方法:
GET https://cloudresourcemanager.googleapis.com/v3/tagKeys/namespaced?name={TAGKEY_NAMESPACED_NAME}
TAGKEY_NAMESPACED_NAME 是標記鍵的命名空間名稱,格式為 parentNamespace/tagKeyShortName。
如果是含有動態值的標記,回應也會包含 allowedValuesRegex 欄位,顯示用於驗證標記套用至資源時輸入的任何動態標記值的 RE2 規則運算式。
新增標記值
建立標記鍵後,即可為該鍵新增可接受的值。
代碼值的 shortName 必須符合下列規定:
shortName長度上限為 256 個半形字元。shortName開頭必須是英數字元。shortName可以包含 UTF-8 編碼的 Unicode 字元,但不能包含單引號 (')、雙引號 (")、反斜線 (\) 和正斜線 (/)。shortName一經建立即無法變更,且在相同命名空間內不得重複。
控制台
如要建立標記值,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的「範圍選擇器」中,選取要建立標記值的機構或專案。
在標記清單中,按一下要新增值的標記。
按一下 「新增值」。
在「標記值」方塊中,輸入標記值的顯示名稱。這會成為代碼命名空間名稱的一部分。
在「標記值說明」方塊中,輸入標記值的說明。
按一下 [儲存]。
gcloud
如要建立標記值,請使用 gcloud resource-manager tags values
create 指令。您必須指定建立這個值的金鑰:
gcloud resource-manager tags values create TAGVALUE_SHORTNAME \
--parent=TAGKEY_NAME
其中:
TAGVALUE_SHORTNAME是新標記值的簡短名稱,例如:production。TAGKEY_NAME是父項標記鍵的永久 ID 或命名空間名稱,例如:tagKeys/4567890123。
您應該會收到類似以下的回覆:
Creating tag value production in tag key 123456789012/environment... <blocking wait until creation completes> name: tagValues/7890123456 short_name: production namespaced_name: 123456789012/environment/production parent: tagKeys/123456789012
Terraform
使用 google_tags_tag_value 資源。
使用 Terraform 建立標記值之前,請先啟用 Cloud Resource Manager API。
下列範例會建立名為 prod 和 sales 的標記值:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
每個專案只需要執行一次這個指令,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。
將範例程式碼複製到新建立的
main.tf中。視需要從 GitHub 複製程式碼。如果 Terraform 代码片段是端對端解決方案的一部分,建議您使用這個方法。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade選項:terraform init -upgrade
套用變更
-
檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
API
如要建立標記值,請建立值的 JSON 表示法。 如要進一步瞭解標記值的格式,請參閱「TagValue 參考資料」。
然後使用 tagValues.create 方法:
POST https://cloudresourcemanager.googleapis.com/v3/tagValues/ -d
JSON 要求主體:
{
"parent": TAGKEY_NAME,
"shortName": SHORT_NAME,
"description": DESCRIPTION,
}
其中:
TAGKEY_NAME是父項標記鍵的永久 ID,例如:tagKeys/4567890123。SHORT_NAME是標記值的顯示名稱,例如:environment。DESCRIPTION是值的說明,長度不得超過 256 個字元。
建立值後,您會看到可供人閱讀的專屬顯示名稱 (稱為 namespacedName),該名稱位於父項資源的命名空間中,以及稱為 name 的全域專屬永久 ID。
將代碼值新增至動態代碼鍵
如果標記鍵支援動態標記值,請在將標記附加至資源時提供標記值。系統會根據為該標記鍵定義的規則運算式,驗證動態值。如果提供的值與設定的規則運算式不符,系統會顯示驗證錯誤。
資源會繼承父項資源的動態代碼值繫結。
請注意,支援動態標記值的標記鍵「無法」同時擁有預先定義的標記值。
擷取標記值
您可以使用永久 ID 或建立時顯示的命名空間名稱,尋找特定標記值的相關資訊。這僅適用於預先定義的代碼值,不適用於動態代碼值。
控制台
如要查看已建立的標記,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍挑選器中,選取包含代碼的機構或專案。
您在這個機構或專案下建立的所有標記都會顯示在清單中。按一下要查看標記值的標記。
gcloud
如要顯示與特定標記值相關的資訊,請使用 gcloud resource-manager tags values describe 指令:
gcloud resource-manager tags values describe TAGVALUE_NAME
TAGVALUE_NAME 是標記值的永久 ID 或命名空間名稱,例如:tagValues/4567890123 或 123456789012/environment/production。
您應該會收到類似以下的回覆:
name: tagValues/456789012345 short_name: production namespaced_name: 123456789012/environment/production parent: tagKeys/123456789012
API
如要顯示特定標記值相關資訊,請使用 tagValues.get 方法:
GET https://cloudresourcemanager.googleapis.com/v3/{name=TAGVALUE_NAME}
TAGVALUE_NAME 是標記值的永久 ID,例如:tagValues/4567890123。
如要使用命名空間名稱顯示特定標記值相關資訊,請使用 tagValues.getNamespaced 方法:
GET https://cloudresourcemanager.googleapis.com/v3/tagValues/namespaced?name={TAGVALUE_NAMESPACED_NAME}
TAGVALUE_NAMESPACED_NAME 是標記值的命名空間名稱,格式為 parentNamespace/tagKeyShortName/tagValueShortName。
使用 Google Cloud CLI 參照標記時,可以對標記鍵和值使用命名空間名稱或永久 ID。除了 getNamespaced 以外,對 API 的呼叫都應只使用永久 ID。如要進一步瞭解代碼使用的 ID 類型,請參閱「代碼定義和 ID」。
更新現有標記
如要修改現有標記,請更新與該標記相關聯的鍵或值。
您可以更新標記說明,但無法更新簡短名稱。如果是動態值標記,您可以更新說明和 allowed_values_regex 欄位,定義與標記鍵相關聯的標記值允許格式。對「allowed_values_regex」欄位所做的變更不會溯及既往,也不會影響代碼鍵的現有代碼繫結。
控制台
如要更新標記鍵的說明,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍選擇工具中,選取含有標記鍵的機構或專案。
找出要更新的代碼鍵,然後按一下旁邊的「動作」,再點選「查看詳細資料」。
按一下畫面頂端「說明」旁的「編輯」圖示 。
更新標記鍵的說明。
按一下 [儲存]。
gcloud
如要修改標記鍵說明,請使用 gcloud resource-manager tags keys update 指令:
gcloud resource-manager tags keys update TAGKEY_NAME \
--description=NEW_DESCRIPTION
其中:
TAGKEY_NAME是要更新的金鑰永久 ID 或命名空間名稱,例如:tagKeys/123456789012。NEW_DESCRIPTION是長度上限為 256 個半形字元的字串,用做新的說明。
您應該會收到類似以下的回覆:
name: tagKeys/123456789012 short_name: environment namespaced_name: 123456789012/environment description: "new description" parent: organizations/123456789012
API
如要修改標記鍵說明,請使用 tagKeys.patch 方法:
PATCH https://cloudresourcemanager.googleapis.com/v3/{tagKey.name=TAGKEY_NAME} -d
JSON 要求主體:
{
"description": DESCRIPTION,
}
其中:
TAGKEY_NAME是標記鍵的永久 ID,例如:tagKeys/123456789012。「
DESCRIPTION」是金鑰的說明,長度不得超過 256 個字元。
您也可以變更標記值的說明。
控制台
如要更新標記值的說明,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍選擇工具中,選取包含標記值的機構或專案。
按一下要更新值的代碼鍵旁的「動作」,然後點選「查看詳細資料」。
找出要更新的代碼值,然後按一下旁邊的「動作」,再點選「查看詳細資料」。
按一下畫面頂端「說明」旁的「編輯」圖示 。
更新標記值的說明。
按一下 [儲存]。
gcloud
如要修改標記值說明,請使用 gcloud resource-manager tags values update 指令:
gcloud resource-manager tags values update TAGVALUE_NAME \
--description="NEW_DESCRIPTION"
其中:
TAGVALUE_NAME是要更新的標記值的永久 ID 或命名空間名稱,例如:tagValues/4567890123。NEW_DESCRIPTION是長度上限為 256 個半形字元的字串,用做新的說明。
您應該會收到類似以下的回覆:
short_name: production namespaced_name: 123456789012/environment/production parent: tagKeys/123456789012 description: "new description"
API
如要修改標記值說明,請使用 tagValues.patch 指令:
PATCH https://cloudresourcemanager.googleapis.com/v3/{tagKey.name=TAGVALUE_NAME} -d
JSON 要求主體:
{
"description": DESCRIPTION,
}
其中:
TAGVALUE_NAME是標記值的永久 ID 名稱,例如:tagValues/4567890123。「
DESCRIPTION」是金鑰的說明,長度不得超過 256 個字元。
列出標記鍵
您可以使用 Google Cloud 控制台、gcloud CLI 或呼叫 API,列出與特定機構或專案資源相關聯的所有標記鍵。
控制台
如要查看所有標記:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍選擇工具中,選取含有標記的機構或專案。
您在這個機構或專案下建立的所有標記都會顯示在清單中。
gcloud
如要傳回機構或專案資源下建立的所有標記鍵清單,請使用 gcloud resource-manager tags keys list 指令:
gcloud resource-manager tags keys list --parent=RESOURCE_ID
RESOURCE_ID 是要尋找附加標記鍵的機構或專案資源 ID。
- 請以
organizations/ORGANIZATION_ID或projects/PROJECT_NAME格式提供機構或專案 ID,例如:organizations/123456789012和projects/test-project123。如要瞭解如何取得機構 ID,請參閱建立及管理機構。如要瞭解如何取得專案 ID,請參閱「建立及管理專案」。您應該會收到類似以下的回覆:
NAME SHORT_NAME DESCRIPTION tagKeys/123456789012 environment description of tag key
API
如要傳回特定資源的所有標籤鍵清單,請使用 tagKeys.list 方法,並在查詢中指定父項資源:
GET https://cloudresourcemanager.googleapis.com/v3/tagKeys
{
"parent": "RESOURCE_ID"
}
RESOURCE_ID 是要尋找附加標記鍵的機構或專案資源 ID,例如:organizations/123456789012 和 projects/test-project123。
列出標記值
您可以使用Google Cloud 控制台、gcloud CLI 或呼叫 API,列出與特定標記鍵相關聯的所有標記值。
這項指令只會擷取預先定義的標記值,不會擷取動態標記值。
控制台
如要查看附加至標記鍵的所有標記值,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的「範圍選擇器」中,選取包含標記鍵的機構或專案。
找出含有要尋找代碼值的代碼鍵,然後按一下旁邊的 「動作」,再點選「查看詳細資料」。
您在這個代碼鍵下建立的所有代碼值都會顯示在清單中。
gcloud
如要傳回附加至鍵的所有標記值清單,請使用 gcloud resource-manager tags values list 指令:
gcloud resource-manager tags values list --parent=TAGKEY_NAME
TAGKEY_NAME 是要尋找附加值的標記鍵的永久 ID 或命名空間限定名稱,例如:tagKeys/123456789012 或 1234567/environment。
您應該會收到類似以下的回覆:
NAME SHORT_NAME tagValues/123456789012 production
API
如要傳回附加至鍵的所有標籤值清單,請使用 tagValues.list 方法,並在查詢中指定父項標籤鍵:
GET https://cloudresourcemanager.googleapis.com/v3/tagValues
{
"parent": "TAGKEY_NAME"
}
TAGKEY_NAME 是標記鍵的永久 ID 名稱,例如:tagKeys/123456789012。
管理標記存取權
您可以使用 Google Cloud 控制台,授予使用者管理標記及附加標記值至資源的特定權限。如需與代碼相關的角色清單及其包含的權限,請參閱「必要權限」。
標記鍵
如要管理標記鍵的使用者存取權,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍選擇工具中,選取要管理存取權的標記鍵所屬的機構或專案。
找出要管理存取權的代碼,然後勾選旁邊的核取方塊。
按一下「管理存取權」。
如要為主體新增角色,請按一下 「新增主體」。
在「New principals」(新增主體) 文字方塊中,輸入要授予新角色的主體電子郵件地址。
從「Select a role」(選取角色) 下拉式選單中選取角色。如要新增多個角色,請按一下 「Add another role」(新增其他角色)。
按一下 [儲存]。
如要編輯主體的角色,請找到要編輯的主體,然後按一下旁邊的「編輯」。
如要變更指派給這個標記主體的任何角色,請點選「角色」下拉式選單,然後選擇新角色。
如要新增更多角色,請按一下 「Add another role」(新增其他角色)。
如要從這個標籤中刪除主體的角色,請按一下要刪除角色旁的 「刪除角色」。
按一下 [儲存]。
如要刪除主體的角色,請按一下要刪除角色旁的 「刪除角色」。
- 按一下「移除」。
標記值
如要管理標記值的存取權,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍選擇工具中,選取要管理存取權的標記鍵所屬的機構或專案。
按一下要管理存取權的值的代碼鍵旁的「動作」,然後按一下「查看詳細資料」。
按一下「管理存取權」。
如要為主體新增角色,請按一下 「新增主體」。
在「New principals」(新增主體) 文字方塊中,輸入要授予新角色的主體電子郵件地址。
從「Select a role」(選取角色) 下拉式選單中選取角色。如要新增多個角色,請按一下 「Add another role」(新增其他角色)。
按一下 [儲存]。
如要編輯主體的角色,請找到要編輯的主體,然後按一下旁邊的「編輯」。
如要變更指派給這個標記主體的任何角色,請點選「角色」下拉式選單,然後選擇新角色。
如要新增更多角色,請按一下 「Add another role」(新增其他角色)。
如要從這個標籤中刪除主體的角色,請按一下要刪除角色旁的 「刪除角色」。
按一下 [儲存]。
如要刪除主體的角色,請按一下要刪除角色旁的 「刪除角色」。
- 按一下「移除」。
將標記附加至資源
建立標記並授予標記和資源的適當存取權後,即可將標記以鍵/值組合的形式附加至 Google Cloud 資源。針對特定鍵,資源只能附加一個值。舉例來說,如果附加 environment: development,就無法附加 environment: production 或 environment: test。每項資源最多可附加 50 組鍵/值組合。
如要將標記附加至資源,請建立標記繫結資源,將值連結至 Google Cloud 資源。以下工作流程說明如何將標記附加至機構、資料夾或專案資源。如要瞭解如何將標記附加至其他類型的資源,請參閱「支援標記的服務」中該資源的說明文件。
控制台
如要將標記附加至機構、資料夾或專案資源,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Manage resources」(管理資源) 頁面。
按一下要附加標記的機構、資料夾或專案。
按一下「代碼」。
在「標記」面板中,按一下「選取範圍」。
選取包含標記的機構或專案,然後按一下「開啟」。
在「標記」面板中,選取「新增標記」。
在「鍵」欄位中,從清單選取要附加的代碼鍵。輸入關鍵字即可篩選清單。
在「值」欄位中,從清單選取要附加的標記值。輸入關鍵字即可篩選清單。
如要附加更多標記,請按一下「新增標記」,然後選取每個標記的鍵和值。
按一下 [儲存]。
在「確認」對話方塊中,按一下「確認」即可附加代碼。
系統會發送通知,確認代碼已更新。新標記會顯示在「管理資源」頁面的「標記」欄下方。
gcloud
如要將標記附加至資源,請使用 gcloud resource-manager tags bindings create 指令建立標記繫結資源:
gcloud resource-manager tags bindings create \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
其中:
TAGVALUE_NAME是要附加的標記值永久 ID 或命名空間名稱,例如:tagValues/4567890123或12345678/environment/production。如果是含有動態值的標記,請只提供命名空間名稱,因為動態標記值沒有 ID。RESOURCE_ID是資源的完整 ID,包括用於識別資源類型的 API 網域名稱 (//cloudresourcemanager.googleapis.com/)。舉例來說,如要將標記附加至projects/7890123456,完整 ID 會是//cloudresourcemanager.googleapis.com/projects/7890123456。LOCATION是資源的位置。如果將標記附加至全域資源 (例如資料夾或專案),則應省略這個旗標。如要將標記附加至區域資源 (例如 Compute Engine 執行個體),請務必指定位置,例如:us-central1。
API
如要將標記附加至資源,請先建立標記繫結的 JSON 表示法,其中包含標記值的永久 ID 或命名空間名稱,以及資源的永久 ID。如要進一步瞭解標記繫結的格式,請參閱「TagBinding 參考資料」。
如要將標記附加至機構等全域資源,請使用 tagBindings.create 方法和全域端點主機名稱:
POST https://cloudresourcemanager.googleapis.com/v3/tagBindings
如要將標記附加至地區性資源 (例如 Compute Engine 執行個體),請使用 tagBindings.create 方法,並搭配資源所在的地區端點。
POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
JSON 要求主體:
{
"parent": RESOURCE_ID,
"tagValue": TAGVALUE_NAME,
}
或
{
"parent": RESOURCE_ID,
"tagValueNamespacedName": TAGVALUE_NAMESPACED_NAME,
}
其中:
RESOURCE_ID是資源的完整 ID,包括用於識別資源類型的 API 網域名稱 (//cloudresourcemanager.googleapis.com/)。舉例來說,如要將標記附加至projects/7890123456,完整 ID 會是//cloudresourcemanager.googleapis.com/projects/7890123456。TAGVALUE_NAME是附加標記值的永久 ID,例如:tagValues/4567890123。TAGVALUE_NAMESPACED_NAME是附加的標記值命名空間名稱,格式為:parentNamespace/tagKeyShortName/tagValueShortName。含有動態值的標記只能使用命名空間名稱附加,因為動態標記值沒有 ID。
列出附加至資源的所有標記
您可以取得附加至資源的所有標記清單,包括沿用或直接附加的標記。
控制台
如要查看附加至資源或由資源繼承的所有標記,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Manage resources」(管理資源) 頁面。
在資源清單中找出您的機構、資料夾或專案。
資源附加的標記會顯示在「標記」欄下方。沿用的標籤會標示為「已沿用」。
gcloud
如要取得直接附加至資源的標記繫結清單,請使用 gcloud resource-manager tags bindings list 指令。如果您新增 --effective 旗標,系統也會傳回這個資源繼承的標記清單。
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=LOCATION
其中:
RESOURCE_ID是資源的完整 ID,例如://cloudresourcemanager.googleapis.com/projects/7890123456LOCATION是資源的位置。如要列出附加至全域資源 (例如資料夾或專案) 的標記,請省略這個旗標。如要將標記附加至區域資源 (例如 Compute Engine 執行個體),您必須指定位置,例如:us-central1。
您應該會收到類似以下的回覆:
預先定義的代碼:
tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Flocations%2FLOCATION%2Fresources%2FRESOURCE_ID/tagValues/TAG_VALUE_ID parent: //cloudresourcemanager.googleapis.com/projects/123456789012/locations/us-central1/example-resource/res-01 tagValue: tagValues/987654321098 tagValueNamespacedName: 961309089256/environment/production
含有動態值的代碼:
tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Flocations%2FLOCATION%2Fresources%2FRESOURCE_ID/tagKeys/TAG_KEY_ID parent: //cloudresourcemanager.googleapis.com/projects/123456789012/locations/us-central1/example-resource/res-01 tagValueNamespacedName: your-org-id/environment/staging
如果是含有動態值的標記,回應中不會出現 tagValue 欄位,只會填入 tagValueNamespacedName。
如果您在 tags bindings list 指令中加入 --effective 標記,系統也會傳回這個資源繼承的所有標記清單。您應該會收到類似以下的回覆:
預先定義的代碼:
inherited: true namespacedTagKey: 433637338589/environment namespacedTagValue: 433637338589/environment/production tagKey: tagKeys/162008917964 tagKeyParentName: organizations/433637338589 tagValue: tagValues/281482214193975
含有動態值的代碼:
inherited: true namespacedTagKey: my-sample-org/dynamic-key namespacedTagValue: my-sample-org/dynamic-key/staging tagKey: tagKeys/281476834141096 tagKeyParentName: projects/357710452272
如果資源上評估的所有標記都是直接附加,則 inherited 欄位為 false,且會省略。
API
如要取得直接附加至全域資源 (例如機構) 的標記繫結清單,請使用 tagBindings.list 方法,並在查詢中指定父項資源:
GET https://cloudresourcemanager.googleapis.com/v3/tagBindings
{
"parent": "RESOURCE_ID"
}
如要列出附加至地區資源 (例如 Compute Engine 執行個體) 的標記繫結,請使用 tagBindings.list 方法,並搭配資源所在的地區端點。
GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
{
"parent": "RESOURCE_ID"
}
其中:
RESOURCE_ID是資源的完整 ID,例如://cloudresourcemanager.googleapis.com/projects/7890123456。LOCATION是資源的區域端點,例如:us-central1。
如果成功,回應主體應包含 TagBinding 物件清單。例如:
name: tagBindings/cloudresourcemanager.googleapis.com/projects/7890123456/567890123456 tagValue: tagValues/567890123456 tagValueNamespacedName: example-org/cost-center/1000 resource: //cloudresourcemanager.googleapis.com/projects/7890123456
如果是含有動態值的標記,回應中不會出現 tagValue 欄位,只會填入 tagValueNamespacedName。
從資源中卸離標記
如要從資源卸離標籤,請刪除標籤繫結資源。
控制台
如要從機構、資料夾或專案資源中分離標記,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Manage resources」(管理資源) 頁面。
按一下要取消附加標記的機構、資料夾或專案。
按一下「代碼」。
在「標籤」面板中,找出要取消連結的標籤,然後按一下旁邊的「刪除項目」圖示 。
按一下 [儲存]。
在「確認」對話方塊中,按一下「確認」即可卸除標籤。
系統會發送通知,確認代碼已更新。更新後的標記清單會顯示在「管理資源」頁面的「標記」欄下方。
gcloud
如要刪除標記繫結,請使用 gcloud resource-manager tags bindings delete 指令:
gcloud resource-manager tags bindings delete \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
其中:
TAGVALUE_NAME是所附加標記值的永久 ID 或命名空間名稱,例如:tagValues/567890123456。如果是含有動態值的標記,請只提供命名空間名稱,因為動態標記值沒有 ID。RESOURCE_ID是資源的完整 ID。例如://cloudresourcemanager.googleapis.com/projects/7890123456LOCATION是資源的位置。如要刪除附加至全域資源 (例如資料夾或專案) 的標記繫結,請省略這個標記。如果您要刪除附加至區域資源 (例如 Compute Engine 執行個體) 的標籤繫結,則必須指定位置,例如:us-central1。
API
如要刪除附加至全域資源 (例如機構) 的標記繫結,請使用 tagBindings.delete 方法:
DELETE https://cloudresourcemanager.googleapis.com/v3/{name=TAGBINDINGS_NAME}
如要刪除附加至地區資源 (例如 Compute Engine 執行個體) 的標記繫結,請使用 tagBindings.delete 方法,並搭配資源所在的地區端點。
DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/{name=TAGBINDINGS_NAME}
其中:
TAGBINDINGS_NAME是 TagBinding 的永久 ID。預先定義的標記格式為tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagValues/567890123456。如果是含有動態值的代碼,格式為tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagKeys/12345678。LOCATION是資源的區域端點,例如:us-central1。
對資源強制執行必要標記
如要強制在資源上使用標記,請建立自訂機構政策,並在機構、資料夾或專案資源上設定政策,強制執行自訂限制。
如要進一步瞭解如何強制執行標記,請參閱「使用組織政策強制執行必要標記」。
設定自訂限制來強制執行標記
控制台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
選取頁面頂端的專案挑選器。
在專案選擇工具中,選取要強制執行自訂限制的機構。
設定自訂限制,並使用下列參數:
- 強制執行方式:
Govern tags - 資源類型:要強制執行必要標記的 Google CloudREST 資源完整名稱,例如
file.googleapis.com/Instance - 條件:一般運算語言 (CEL) 條件,用於指定要在資源上強制執行的標記鍵,例如
resource.hasDirectTagKey("1234567890/owner"),用於強制執行標記鍵1234567890/owner的標記繫結。resource.hasDirectTagKeyCEL 函式只會比對直接套用至資源的標記,不會考量從資源階層中上層資源繼承的標記。 - 動作:
Allow或Deny。- 允許:如果符合指定條件,系統會允許建立或更新資源的動作。
- 拒絕:如果符合指定條件,系統會封鎖建立或更新資源的動作。
- 強制執行方式:
按一下「建立限制」。
gcloud
為自訂限制建立 YAML 檔案:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- GOVERN_TAGS
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
更改下列內容:
ORGANIZATION_ID:組織 ID,例如1234567890。CONSTRAINT_NAME:新自訂限制的名稱。自訂限制必須以custom.開頭,且只能包含大/小寫英文字母或數字,例如custom.enforceMandatoryTags。RESOURCE_NAME:要強制執行必要標記的Google Cloud REST 資源完整名稱,例如file.googleapis.com/Instance。CONDITION:一般運算語言 (CEL) 條件,用於指定要在資源上強制執行的標記鍵,例如resource.hasDirectTagKey("1234567890/owner")可強制執行標記鍵1234567890/owner的標記繫結。ACTION:符合condition時採取動作。可以是ALLOW或DENY。如果符合指定條件,系統就會封鎖建立或更新資源的操作。
「允許」動作是指如果符合指定條件,系統就會允許建立或更新資源的作業。這也表示系統會封鎖條件中明確列出的案例以外的所有其他案例。
DISPLAY_NAME:容易記得的限制名稱。這個欄位的長度上限為 200 個字元。DESCRIPTION:違反政策時,會以錯誤訊息形式顯示且易於理解的限制說明。這個欄位的長度上限為 2,000 個字元。
設定自訂限制,以便用於貴機構的組織政策。
定義自訂限制後,您可以測試及分析組織政策變更,並強制執行限制。
使用標記保留功能保護標記值
標記保留是您建立的資源,可防止標記值遭到刪除。如果標記值有標記保留,使用者必須先刪除標記保留,才能刪除標記值。
標記保留無法套用至動態標記值。
建立標記保留項目
您可以使用 gcloud CLI 或 API 手動建立標記保留。
gcloud
如要建立標記保留,請使用 gcloud resource-manager tags holds create gcloud CLI 指令:
gcloud resource-manager tags holds create TAGVALUE_NAME \ --holder=HOLDER_NAME \ --location=LOCATION
其中:
TAGVALUE_NAME是要建立標記保留項目的標記值永久 ID 或命名空間名稱,例如:tagValues/567890123456。HOLDER_NAME是要附加標記值的資源名稱。不得超過 200 個字元。LOCATION是資源的位置。如果您要為全域資源 (例如Google Cloud 專案) 建立標記保留,則應省略這個標記。如要為區域或地區資源建立標記保留項目,請務必指定位置,例如:us-central1。
API
如要為標記值建立標記保留,您必須先建立標記保留的 JSON 表示法。這個 JSON 參照必須包含代碼值所附加資源的參照。如要進一步瞭解標記保留的格式,請參閱TagHolds 參考資料。
如要為附加至機構等全域資源的標籤值建立標籤保留項目,請使用 tagHolds.create 方法和全域端點主機名稱:
POST https://cloudresourcemanager.googleapis.com/v3/tagValues/TAGVALUE_NAME/tagHolds
如要為附加至地區性資源 (例如 Compute Engine 執行個體) 的標籤值建立標籤保留項目,請使用 tagHolds.create 方法,並搭配資源所在的地區端點。
POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAGVALUE_NAME/tagHolds
JSON 要求主體:
{
"holder":HOLDER_NAME,
"origin":ORIGIN_NAME
}
其中:
TAGVALUE_NAME是附加標記值的永久 ID,例如:tagValues/4567890123。HOLDER_NAME是要附加標記值的資源名稱。不得超過 200 個字元。ORIGIN_NAME是選用字串,代表這項要求的來源。這個欄位應包含人類可理解的資訊,用來區分不同來源。不得超過 200 個字元。
列出標記保留項目
您可以使用 gcloud CLI 或 API,列出特定標記值下的所有標記保留項目。
gcloud
如要列出標記值下的標記保留項目,請使用 gcloud resource-manager tags holds list gcloud CLI 指令:
gcloud resource-manager tags holds list TAGVALUE_NAME \ --location=LOCATION
其中:
TAGVALUE_NAME是標記值的永久 ID 或命名空間名稱,例如:tagValues/567890123456。LOCATION是資源的位置。如要尋找全域建立的標記保留項目,請省略這個旗標。如要尋找區域或區域資源下的標記保留項目,請務必指定位置,例如:us-central1。
API
如要取得特定標記值下的標記保留清單,請使用 tagHolds
GET 方法,並在網址中指定父項標記值:
GET https://cloudresourcemanager.googleapis.com/v3/{TAGVALUE_NAME}/tagHolds
其中:
TAGVALUE_NAME是標記值的永久 ID 或命名空間名稱,例如:tagValues/567890123456。
移除標記保留項目
您可以使用 gcloud CLI 或 API,移除特定標記值建立的標記保留。
部分資源會將標記保留附加至該資源的標記值。 如果將標記附加至這類資源,資源會建立標記保留,防止使用者刪除附加的標記值。
您可以使用 gcloud CLI 或 API 刪除標記保留。
gcloud
如要刪除標記保留項目,請使用 gcloud resource-manager tags holds delete gcloud CLI 指令:
gcloud resource-manager tags holds delete TAGHOLD_NAME \ --location=LOCATION
其中:
TAGHOLD_NAME是標記保留的命名空間名稱,可使用list指令找到。例如:tagValues/1012910994523/tagHolds/d1c8f5e2-2954-43d6-8f46-5f812ab48c37。LOCATION是資源的位置。如要刪除附加至全域資源 (例如資料夾或專案) 的標記值底下的標記保留項目,請省略這個標記。如要刪除透過區域或地帶程序建立的標記保留項目,必須指定位置,例如:us-central1。
API
如要刪除標記值,請使用 tagHolds.delete 方法:
DELETE https://cloudresourcemanager.googleapis.com/v3/{TAGVALUE_NAME}/tagHolds/{TAGHOLD_NAME}
其中:
TAGVALUE_NAME是要刪除暫緩標記的標記值的永久 ID,例如:tagValues/567890123456。TAGHOLD_NAME是要刪除的標記保留項的命名空間名稱,可使用list指令尋找。例如:tagValues/1012910994523/tagHolds/d1c8f5e2-2954-43d6-8f46-5f812ab48c37。
刪除標記
如要刪除標記,必須刪除每個定義元件。首先,您必須刪除將這個標記附加至階層中資源的所有標記繫結。如需刪除標記繫結的操作說明,請參閱「從資源卸離標記」。
如果標記由其他資源使用,或是使用者手動建立標記保留項目,您可能需要移除標記保留項目並刪除標記繫結,才能刪除標記值。如要瞭解如何移除代碼保留,請參閱「移除代碼保留」。
刪除標記值後,如果沒有任何標記繫結,您就可以刪除這些值。
控制台
如要刪除標記值,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍選擇工具中,選取包含標記值的機構或專案。
找出含有要刪除標記值的標記鍵,然後按一下旁邊的 「Actions」(動作),再點選「View details」(查看詳細資料)。
在與這個標記鍵相關聯的標記值清單中,按一下要刪除的標記值。
找出要刪除的標記值並勾選旁邊的核取方塊,然後按一下 「刪除值」。
按一下「確認」。
gcloud
如要刪除標記值,請使用 gcloud resource-manager tag values delete 指令:
gcloud resource-manager tags values delete TAGVALUE_NAME
TAGVALUE_NAME 是要刪除的標記值永久 ID 或命名空間名稱,例如:tagValues/567890123456。
API
如要刪除標籤值,請使用 tagValues.delete 方法:
DELETE https://cloudresourcemanager.googleapis.com/v3/{name=TAGVALUE_NAME}
TAGVALUE_NAME 是您要刪除的標記值的永久 ID,例如:tagValues/567890123456。
刪除與索引鍵相關聯的所有標記值後,即可刪除索引鍵。如要刪除含有動態值的標記,必須先刪除所有相關聯的繫結,才能刪除標記鍵。
控制台
如要刪除標記鍵,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Tags」(標記) 頁面。
在頁面頂端的範圍選擇工具中,選取含有標記鍵的機構或專案。
勾選要刪除的標記鍵旁的核取方塊。
按一下 「刪除代碼」。
按一下「確認」。
gcloud
如要刪除標記鍵,請使用 gcloud resource-manager tags keys delete 指令:
gcloud resource-manager tags keys delete TAGKEYS_NAME
TAGKEYS_NAME 是您要刪除的標記鍵永久 ID 或命名空間名稱,例如:tagKeys/123456789012。
API
如要刪除標記鍵,請使用 tagKeys.delete 方法:
DELETE https://cloudresourcemanager.googleapis.com/v3/{name=TAGKEYS_NAME}
TAGKEYS_NAME 是要刪除的標記鍵永久 ID,例如:tagKeys/123456789012。
政策和標記
您可以在支援標記的政策中使用標記,有條件地強制執行這些政策。您可以將標記值是否存在設為該政策的條件。
舉例來說,您可以根據資源是否具備特定標記,有條件地授予 Identity and Access Management (IAM) 角色。
身分與存取權管理條件和標記
您可以使用標記和 Identity and Access Management 條件,根據條件授予階層中的使用者角色。在這個程序完成前,使用者無法存取資源,直到附加與條件式政策相關聯的標記為止。舉例來說,您可能想要求開發人員先為資源指派成本中心,才能使用資源。
建立標記,用於將資源與某個項目建立關聯,以判斷資源是否已套用適當的控管措施。舉例來說,您可以建立索引鍵為
costCenter的標記,並將值設為0001、0002等等,將資源與貴公司的各個成本中心建立關聯。建立機構層級的自訂角色,允許使用者在需要標記的資源上新增標記。這會將這些權限授予機構中任何位置的指定主體。
舉例來說,如果自訂角色允許使用者在專案中新增標記,則應包含下列權限:
resourcemanager.projects.getresourcemanager.hierarchyNodes.createresourcemanager.hierarchyNodes.deleteresourcemanager.hierarchyNodes.list
為開發人員建立專案時,請在專案中指派這個自訂角色。
為開發人員指派任何其他角色,讓他們在該專案中執行任何所需動作。在專案中授予使用者角色時,應一律有條件地授予角色,要求附加
costCenter標記。resource.hasTagKey('123456789012/costCenter')
現在,每當建立專案時,開發人員都必須先附加 costCenter 標記,才能在專案中執行允許政策授予的動作。
機構政策和標記
您可以使用標記並依條件強制執行機構政策,集中控管階層中的資源。詳情請參閱「使用標記設定組織政策」。
系統標記
系統標記是 Google 管理的標記, Google Cloud 服務可以繫結至資源
。您可以查看及使用這些系統標記,就像資源上的任何其他標記繫結一樣,但無法編輯或從資源中移除。系統標記鍵的簡稱會以前置字串「system:」開頭,並在以「google」前置字串開頭的標記命名空間中管理。
| 標記鍵 (命名空間名稱) | 標記值 | 說明 |
|---|---|---|
google/system:sdp-data-sensitivity |
HIGH, MODERATE, LOW, UNKNOWN |
您可以設定 Sensitive Data Protection 服務,自動將標記附加至剖析的資源,指出資源中發現的資料機密程度。詳情請參閱「在探索設定中啟用自動標記」。 |
支援的服務
如需支援標記的服務清單,請參閱「支援標記的服務」。