IAM Conditions 的屬性參考資料

本文說明條件運算式中支援的屬性。

支援的條件屬性

下列各節會摘要說明支援的屬性,並指出哪些Google Cloud 服務可辨識各項屬性。

資源屬性

下列屬性與要求主體的資源相關。

屬性 使用摘要 支援的 Google Cloud 服務
資源服務 屬性

根據 Google Cloud 使用的服務管理存取權。

您可以在允許政策角色繫結中使用這項屬性。

  • Apigee
  • Application Integration
  • Apigee API Hub
  • 備份和災難復原服務
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • 二進位授權
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Cloud DNS
  • Google Kubernetes Engine
  • Firestore
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • 網路安全整合服務
  • Parameter Manager
  • Cloud NGFW
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
資源類型屬性

根據資源類型管理存取權。

您可以在允許政策角色繫結中使用這項屬性。

  • Apigee
  • Application Integration
  • Apigee API Hub
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • 二進位授權
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Cloud DNS
  • Google Kubernetes Engine
  • Firestore
  • Cloud NGFW
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • 網路安全整合服務
  • Parameter Manager
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
資源名稱屬性

根據資源名稱管理存取權。

您可以在允許政策角色繫結中使用這項屬性。

  • Apigee
  • Application Integration
  • Apigee API Hub
  • 備份和災難復原服務
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • 二進位授權
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Cloud DNS
  • Google Kubernetes Engine
  • Firestore
  • Cloud NGFW
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • 網路安全整合服務
  • Parameter Manager
  • Pub/Sub Lite
  • Secret Manager
  • Spanner
資源標記

根據附加至資源的標記管理存取權。

你可以在下列位置使用這項屬性:

  • 允許政策角色繫結
  • 拒絕政策拒絕規則

所有 Google Cloud 服務 (請參閱「支援繼承的條件」)

如要進一步瞭解資源屬性,請參閱本頁的「資源屬性」一節。

主要屬性

下列屬性與提出要求的主體有關。

屬性 使用摘要 支援的主體類型

主體類型屬性

根據要求中的主體類型套用政策。

您可以在主體存取邊界政策的政策繫結中使用這項屬性。

  • Google 帳戶
  • 工作團隊身分集區身分
  • Workload Identity Pool 身分
  • 服務帳戶

主要主題屬性

根據要求中主體的 ID 套用政策。

您可以在主體存取邊界政策的政策繫結中使用這項屬性。

  • Google 帳戶
  • 工作團隊身分集區身分
  • Workload Identity Pool 身分
  • 服務帳戶

如要進一步瞭解主體屬性,請參閱本頁面的「主體屬性」。

要求屬性

下列屬性與要求的詳細資料相關。

屬性 使用摘要 支援的 Google Cloud 服務

存取層級屬性

根據特定存取層級管理存取權。

存取層級是一種計算屬性,以要求和要求者的原始屬性為依據,例如原始 IP 位址、裝置屬性和時段。舉例來說,onNetwork 存取層級可能會規定提出要求的裝置須來自特定的 IP 位址範圍。存取層級由機構的管理員定義。

您可以在允許政策角色繫結中使用這項屬性。

Identity-Aware Proxy

API 屬性

根據特定 Google CloudAPI 或服務提供的資料管理存取權。

您可以在允許政策角色繫結中使用這項屬性。

並非所有服務都能辨識所有 API 屬性。如要查看可辨識各項屬性的服務清單,請參閱 API 屬性

日期/時間屬性

為 Google Cloud 資源設定有期限、排程或限時等存取方式。

您可以在允許政策角色繫結中使用這些屬性。

所有 Google Cloud 服務 (請參閱「支援繼承的條件」)

目的地 IP/通訊埠屬性

根據要求的目的地 IP 位址和/或通訊埠管理存取權。舉例來說,Compute Engine 虛擬機器 (VM) 執行個體可能會公開外部 IP (如 10.0.0.2),但通訊埠 22 可能僅供管理用途。

用於 Identity-Aware Proxy TCP 轉送功能

您可以在允許政策角色繫結中使用這些屬性。

Identity-Aware Proxy

轉送規則屬性

指定主體可建立的轉送規則類型。舉例來說,您可以允許主體為內部 Google Cloud 負載平衡器建立轉送規則,處理源自 Google Cloud 網路內部的流量,但不允許為外部 Google Cloud 負載平衡器建立轉送規則,處理源自網際網路的流量。

您可以在允許政策角色繫結中使用這些屬性。

網址路徑/主機屬性

根據要求的網址路徑和/或主機管理存取權。舉例來說,條件可以指定 https://example.com 是使用者一般網域可存取的主要應用程式,而 https://hr.example.com/admin 則是用來存取應用程式中的頁面,只有人力資源管理員可以存取。

您可以在允許政策角色繫結中使用這些屬性。

  • Identity-Aware Proxy
  • Cloud Run

如要進一步瞭解要求屬性,請參閱本頁面的「要求屬性」一節。

支援繼承條件

除了為某些服務專屬資源的允許政策新增條件,您也可以在機構、資料夾或專案層級,為資源新增條件式角色繫結。在容器資源層級新增條件式角色繫結時,其他資源會透過資源階層沿用這些繫結。如果資源不允許允許政策中的條件,或沒有允許政策,繼承的條件就很有用。

在組織、資料夾或專案層級使用屬性時,請注意大多數屬性僅適用於特定資源類型。如果條件的一部分使用資源無法使用的屬性,則該部分條件永遠不會解讀為授予存取權。舉例來說,條件 resource.name.endsWith == devResource 永遠不會授予任何 IAM 資源的存取權,因為 IAM 資源不會提供資源名稱。

如要避免這個問題,請使用 resource typeresource service 屬性,限制條件的範圍。舉例來說,下列條件會針對 Compute Engine 執行個體以外的所有資源類型評估為 true;相反地,對於 Compute Engine 執行個體,條件會檢查資源名稱:

resource.type != 'compute.googleapis.com/Disk' ||
    resource.name.endsWith('devResource')

資源屬性

資源服務、資源類型和資源名稱屬性通常用於變更角色繫結提供的存取授權範圍。當角色包含適用於不同資源特定屬性的權限時,資源型條件可用於授予特定類型或特定服務類型之角色權限的子集。

resource.service 屬性

resource.service 屬性可讓您根據使用的Google Cloud 服務設定條件。舉例來說,您可以設定條件,限制使用者存取使用 cloudresourcemanager.googleapis.com 服務的資源。如需支援的值清單,請參閱「資源服務值」。

您可以在允許政策角色繫結中使用 resource.service 屬性。

屬性變數 resource.service
屬性類型

string

如需支援的值清單,請參閱資源服務值

支援的運算子 ,
詳細資料 在條件中使用 resource.type 屬性時,請檢查屬性是否完全相等 () 或完全不相等 ()。其他比較作業 (例如檢查前置字元或後置字元) 可能會產生非預期的結果。
範例

傳回 Compute Engine 資源的 true

resource.service == "compute.googleapis.com"
支援的服務
  • Apigee
  • Application Integration
  • Apigee API Hub
  • 備份和災難復原服務
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • 二進位授權
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Cloud DNS
  • Google Kubernetes Engine
  • Firestore
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • 網路安全整合服務
  • Parameter Manager
  • Cloud NGFW
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner

resource.type 屬性

resource.type 屬性可讓您根據資源類型設定條件。舉例來說,您可以設定條件,限制使用者存取 storage.googleapis.com/Object 類型的資源。如需支援的值清單,請參閱「資源類型值」。

如果條件使用 resource.name 屬性,強烈建議您使用 resource.type 屬性,控管條件適用的資源類型。詳情請參閱本頁的resource.name 屬性

您可以在允許政策角色繫結中使用 resource.type 屬性。

屬性變數 resource.type
屬性類型

string

如需支援的值清單,請參閱資源類型值

支援的運算子 ,
詳細資料 在條件中使用 resource.type 屬性時,請檢查屬性是否完全相等 () 或完全不相等 ()。其他比較方式 (例如檢查前置字元或後置字元) 可能會產生非預期的結果。
範例

除非資源是 Compute Engine 映像檔,否則會傳回 true

resource.type != "compute.googleapis.com/Image"

只有在資源是 Compute Engine 映像檔或永久磁碟時,才會傳回 true

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
支援的資源類型
Apigee
  • API 產品屬性
  • API 產品
  • API Proxy
  • API Proxy 鍵/值對應項目
  • API Proxy 鍵值對應
  • API Proxy 修訂版本
  • 快取
  • 開發人員應用程式屬性
  • 開發人員應用程式
  • 開發人員屬性
  • 開發人員
  • 環境鍵/值對應項目
  • 環境鍵/值對應
  • 匯出項目
  • 流程掛鉤
  • 金鑰儲存庫別名
  • 金鑰儲存庫
  • 查詢
  • 費率方案
  • 參考資料
  • 共用流程修訂版本
  • 共用流程
  • 目標伺服器
  • 追蹤 (偵錯) 工作階段
Application Integration
  • 驗證設定
  • 執行作業
  • 整合版本
  • 整合
  • 位置
  • 停權
Apigee API Hub
  • API
  • API 作業
  • 定義
  • 部署作業
  • 規格
  • 版本
備份和災難復原服務
  • backup vault
BigQuery
  • 資料集
  • 模型
  • 處理常式
  • 資料表
BigQuery Reservation API
  • 作業
  • 商業智慧預留項目
  • 容量承諾
  • 位置
  • 預留項目
Bigtable
  • 叢集
  • 執行個體
  • 資料表
二進位授權
  • 驗證者
  • 持續驗證設定
  • 政策
Cloud Key Management Service
  • 加密編譯金鑰版本
  • 加密編譯金鑰
  • 金鑰環
  • 位置
Cloud Logging
  • 記錄檔值區
  • 記錄檢視
Cloud NGFW
  • 位址群組
  • 防火牆端點關聯
  • 防火牆端點
  • 安全性設定檔群組
  • 安全性設定檔
Cloud SQL
  • 備份執行作業
  • 執行個體
Cloud Storage
  • 值區
  • 代管資料夾
  • 物件
Compute Engine
  • 後端服務 (全域和區域)
  • 防火牆
  • 轉送規則 (通用和區域)
  • 圖片
  • 執行個體範本
  • 執行個體
  • 永久磁碟 (區域和區域)
  • 快照
  • 目標 HTTP(S) Proxy (全域和區域)
  • 目標安全資料傳輸層 (SSL) Proxy
  • 目標 TCP Proxy
Dataform
  • 編譯結果
  • 位置
  • 版本設定
  • 存放區
  • 工作流程設定
  • 工作流程叫用
  • 工作區
Cloud DNS
  • 資源記錄集
Google Cloud
  • 地點1
Google Kubernetes Engine
  • 叢集
Firestore
  • 資料庫
Identity-Aware Proxy
  • 所有後端服務和 App Engine 應用程式
  • 所有通道資源
  • 所有通道區域
  • 所有 Web 服務
  • App Engine 應用程式服務版本
  • App Engine 應用程式服務
  • Compute Engine 後端服務
  • 通道執行個體
Integration Connectors
  • 連線
  • 連線結構定義中繼資料
  • 端點連結
  • 訂閱的事件
  • 代管可用區
Google Cloud Managed Service for Apache Kafka
  • 叢集
  • 用戶群組
  • 作業
  • 主題
Parameter Manager
  • 參數版本
  • 參數
Pub/Sub Lite
  • 位置
  • 訂閱
  • 主題
網路安全整合服務
  • 攔截部署項目群組
  • 攔截部署項目
  • 攔截端點群組
  • 攔截端點群組關聯
  • 鏡像流量部署項目群組
  • 鏡像部署項目
  • 鏡像端點群組
  • 鏡像端點群組關聯
Resource Manager
  • 專案
Secret Manager
  • 密鑰版本
  • 密鑰
Spanner
  • 備份
  • 資料庫
  • 執行個體

1 Cloud Key Management Service 會將這個資源類型做為金鑰環資源的父項。

resource.name 屬性

resource.name 屬性可讓您根據資源名稱的全部或部分內容設定條件。如需資源名稱格式清單,請參閱「資源名稱格式」。

resource.name 屬性僅適用於特定資源類型,詳情請參閱本節的表格。強烈建議您將條件的適用性限制在預期資源類型。如果角色包含不提供 resource.name 屬性的資源類型權限,請確保這些權限不受條件中檢查 resource.name 的部分限制。

以下範例說明如何確保這種行為。在本例中,條件允許存取所有資源類型,但 Cloud Storage bucket 和物件除外。相較之下,對於值區和物件,條件只允許存取值區 example-bucket 和其中包含的物件:

(resource.type != 'storage.googleapis.com/Bucket' &&
 resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')

請注意,條件的第一部分會檢查資源是否既不是值區也不是物件。如果資源類型不同,則無論資源名稱為何,整個條件都會評估為 true

此外,請注意條件會檢查 resource.type 屬性,而非 resource.service 屬性。檢查 resource.type 屬性有幾項優點:

  • 這項功能會將 resource.name 檢查範圍限制在適當的資源組合。舉例來說,如果您想授予特定名稱的 Compute Engine 執行個體存取權,排除 Compute Engine 執行個體以外的所有資源類型,就是合理的做法。
  • 如果服務日後新增資源類型,這項做法可防止條件範圍變更。

最後請注意,條件會使用 startsWith() 函式評估資源名稱,而不是使用 運算子檢查是否相等。由於條件會檢查資源名稱的開頭,因此會比對值區和該值區中的物件。如果勾選「相等」,則只會比對 bucket。

您無法使用萬用字元 (例如 *) 比對多個資源名稱。請考慮下列替代方案:

  • 使用 extract() 函式從資源名稱擷取值。舉例來說,您可以從 Compute Engine VM 執行個體的資源名稱中擷取專案 ID,然後編寫參照該專案 ID 的條件運算式。

    詳情請參閱本頁的「從屬性擷取值」。

  • 使用 startsWith()endsWith() 函式編寫條件,評估資源名稱的開頭或結尾。

您可以在允許政策角色繫結中使用 resource.name 屬性。

屬性變數 resource.name
屬性類型

string

每種資源類型都有專屬的資源名稱格式。如需格式清單,請參閱資源名稱格式

支援的函式與運算子 startsWith(), endsWith(), extract(), ,
詳細資料

resource.name 包含要求中目標資源的相對資源名稱。相對資源名稱是 URI 路徑,開頭沒有正斜線 (/)。

startsWith() 函式會根據 resource.name 評估前置字串常值。

endsWith() 函式會依據 resource.name 評估後置字串常值。

extract() 函式會使用擷取範本擷取 resource.name 的一部分。詳情請參閱本頁的「從資源名稱擷取值」。

運算子是用來與整個 resource.name 比較,或是與 resource.name 的擷取部分比較。

範例

除非資源名稱識別出名為 secret-bucket-123 的 Cloud Storage bucket,否則會傳回 true

resource.name != "projects/_/buckets/secret-bucket-123"

如果資源名稱開頭為指定前置字串,則傳回 true,格式與 Compute Engine VM 執行個體使用的格式相同:

resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

如果資源名稱開頭為指定前置字串,則傳回 true,格式與 Cloud Storage 值區使用的格式相同:

resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

如果資源名稱結尾為指定的後置字串,則傳回 true,例如 Cloud Storage 物件的副檔名:

resource.name.endsWith(".jpg")

如果專案名稱或編號存在,則傳回該名稱或編號:

resource.name.extract("projects/{project}/")
支援的資源類型
Apigee
  • API 產品屬性
  • API 產品
  • API Proxy
  • API Proxy 鍵/值對應項目
  • API Proxy 鍵值對應
  • API Proxy 修訂版本
  • 快取
  • 開發人員應用程式屬性
  • 開發人員應用程式
  • 開發人員屬性
  • 開發人員
  • 環境鍵/值對應項目
  • 環境鍵/值對應
  • 匯出項目
  • 流程掛鉤
  • 金鑰儲存庫別名
  • 金鑰儲存庫
  • 查詢
  • 費率方案
  • 參考資料
  • 共用流程修訂版本
  • 共用流程
  • 目標伺服器
  • 追蹤 (偵錯) 工作階段
Application Integration
  • 驗證設定
  • 執行作業
  • 整合版本
  • 整合
  • 位置
  • 停權
Apigee API Hub
  • API
  • API 作業
  • 定義
  • 部署作業
  • 規格
  • 版本
備份和災難復原服務
  • backup vault
BigQuery
  • 資料集
  • 模型
  • 處理常式
  • 資料表
BigQuery Reservation API
  • 作業
  • 商業智慧預留項目
  • 容量承諾
  • 位置
  • 預留項目
Bigtable
  • 叢集
  • 執行個體
  • 資料表
二進位授權
  • 驗證者
  • 持續驗證設定
  • 政策
Cloud Deploy
  • 自動化執行作業
  • 自動化功能
  • 自訂目標類型
  • 推送管道
  • 工作執行作業
  • 版本
  • 推出作業
  • 目標
Cloud Key Management Service
  • 加密編譯金鑰
  • 加密編譯金鑰版本
  • 金鑰環
Cloud Logging
  • 記錄檔值區
  • 記錄檢視
Cloud NGFW
  • 位址群組
  • 防火牆端點關聯
  • 防火牆端點
  • 安全性設定檔群組
  • 安全性設定檔
Cloud SQL
  • 備份執行作業
  • 執行個體
Cloud Storage
  • 值區
  • 代管資料夾
  • 物件
Compute Engine
  • 後端服務 (全域和區域)
  • 防火牆
  • 轉送規則 (通用和區域)
  • 圖片
  • 執行個體範本
  • 執行個體
  • 永久磁碟 (區域和區域)
  • 快照
  • 目標 HTTP(S) Proxy (全域和區域)
  • 目標安全資料傳輸層 (SSL) Proxy
  • 目標 TCP Proxy
Google Kubernetes Engine
  • 叢集
Firestore
  • 資料庫
Dataform
  • 編譯結果
  • 位置
  • 版本設定
  • 存放區
  • 工作流程設定
  • 工作流程叫用
  • 工作區
Cloud DNS
  • 資源記錄集
Integration Connectors
  • 連線
  • 連線結構定義中繼資料
  • 端點連結
  • 訂閱的事件
  • 代管可用區
Google Cloud Managed Service for Apache Kafka
  • 叢集
  • 用戶群組
  • 作業
  • 主題
Parameter Manager
  • 參數版本
  • 參數
Pub/Sub Lite
  • 位置
  • 訂閱
  • 主題
網路安全整合服務
  • 攔截部署項目群組
  • 攔截部署項目
  • 攔截端點群組
  • 攔截端點群組關聯
  • 鏡像流量部署項目群組
  • 鏡像部署項目
  • 鏡像端點群組
  • 鏡像端點群組關聯
Secret Manager
  • 密鑰版本
  • 密鑰
Spanner
  • 備份
  • 資料庫
  • 執行個體

資源標記

資源標記函式可讓您根據附加至支援資源的標記,或這些資源後代繼承的標記,設定條件。舉例來說,您可以設定條件,只允許具有 env: prod 標記的資源授予角色。如要進一步瞭解如何使用標記控管存取權,請參閱「標記和存取權控管」。

每個標記都包含鍵和值。每個鍵和值都有幾種不同的 ID:

  • 永久 ID:全域不重複,且不得重複使用。舉例來說,標記鍵可能具有永久 ID tagKeys/123456789012,而標記值可能具有永久 ID tagValues/567890123456
  • 簡稱。每個鍵的簡稱在定義鍵的專案或機構中不得重複,且每個值的簡稱在相關鍵中不得重複。舉例來說,標記鍵的簡稱可以是 env,標記值的簡稱可以是 prod
  • 命名空間名稱:在標記鍵的簡稱中加入機構的數字 ID 或專案 ID。舉例來說,為機構建立的標記鍵可能具有命名空間名稱 123456789012/env。如要瞭解如何取得機構 ID,請參閱「取得機構資源 ID」。為專案建立的標記鍵可能具有命名空間名稱 myproject/env。如要瞭解如何取得專案 ID,請參閱「識別專案」。

如需在條件中選擇使用哪種 ID 的指引,請參閱「代碼定義和 ID」。

您可以使用以標記為準的條件,依條件限制任何資源的存取權。包括有自己標記的資源,以及從其他資源繼承標記的資源。如要進一步瞭解如何透過資源階層沿用標記,請參閱「標記沿用設定」。

不過, Google Cloud 控制台的某些區域無法辨識具有標記條件的允許政策角色繫結。因此,如果您擁有附有標記條件的角色, Google Cloud 控制台可能會錯誤地禁止您執行特定動作。如果遇到這個問題,請使用替代方法 (例如 gcloud CLI) 執行動作。

您可以在下列項目中使用以標記為準的條件:

  • 允許政策角色繫結
  • 拒絕政策拒絕規則

您可以使用下列函式,根據標記設定條件:

函式 說明
resource.hasTagKey(
  keyName: string
)
  bool

檢查要求資源是否具有指定鍵的標記。系統會依命名空間名稱查詢標記鍵。如要使用永久 ID 檢查代碼鍵,請使用 resource.hasTagKeyId() 函式。

參數
keyName:標記鍵的命名空間名稱,以機構的數字 ID 和正斜線做為前置字串。例如:123456789012/env
範例

如果要求資源的標記具有 env 鍵,則傳回 true

resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

檢查要求資源是否具有指定鍵的標記。系統會依據永久 ID 查詢標記鍵。 如要使用命名空間名稱檢查代碼鍵,請使用 resource.hasTagKey() 函式。

參數
keyId:標記鍵的永久 ID。例如:tagKeys/123456789012
範例

如果要求資源的標記具有 tagKeys/123456789012 鍵,則傳回 true

resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

檢查要求資源是否具有指定鍵和值的標記。系統會依命名空間名稱查詢鍵,並依簡稱查詢值。如要使用永久 ID 檢查標記鍵和值,請使用 resource.matchTagId() 函式。

參數
  • keyName:標記鍵的命名空間名稱,以機構的數字 ID 和正斜線做為前置字串。例如:123456789012/env
  • valueShortName:標記值的簡短名稱。 例如:prod
範例

如果要求資源的標記鍵為 123456789012/env,值為 prod,則傳回 true

resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

檢查要求資源是否具有指定鍵和值的標記。系統會根據永久 ID 查詢鍵和值。如要使用命名空間名稱檢查標記鍵,並使用簡短名稱檢查值,請使用 resource.matchTag() 函式。

參數
  • keyId:標記鍵的永久 ID。例如:tagKeys/123456789012
  • valueId:標記值的永久 ID。例如:tagValues/567890123456
範例

如果要求資源的標記鍵為 tagKeys/123456789012,值為 tagValues/567890123456,則傳回 true

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

主要屬性

主體屬性可讓您根據發出要求的主體編寫條件。您可以使用這些屬性,精確指定政策的強制執行對象。

您可以在主體存取邊界政策的政策繫結中使用主體屬性。

principal.type 屬性

principal.type 屬性可讓您根據發出要求的主體類型設定條件。舉例來說,您可以為主體存取邊界政策的政策繫結新增條件,確保政策只會對服務帳戶強制執行。

您可以在主體存取邊界政策的政策繫結中使用主體屬性。

屬性變數 principal.type
屬性類型

string

支援的運算子 , , in
支援的主體類型
Google 帳戶
iam.googleapis.com/WorkspaceIdentity
工作團隊身分集區身分
iam.googleapis.com/WorkforcePoolIdentity
Workload identity pool 身分
iam.googleapis.com/WorkloadPoolIdentity
服務帳戶
iam.googleapis.com/ServiceAccount
代理身分 (預覽版)
iam.googleapis.com/AgentPoolIdentity
範例

如果要求中的主體是服務帳戶,則評估結果為 true

principal.type == "iam.googleapis.com/ServiceAccount"
        

如果要求中的主體是代理身分,則評估結果為 true

principal.type == "iam.googleapis.com/AgentPoolIdentity"
        

如果要求中的主體是 Google Workspace 身分或工作團隊身分集區身分,則評估結果為 true

principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"]
        

principal.subject 屬性

principal.subject 屬性可讓您根據發出要求的主體設定條件。舉例來說,您可以為主體存取邊界政策的政策繫結新增條件,確保政策只會針對電子郵件地址結尾為 @example.com 的主體強制執行。

如果在條件中使用 principal.subject 屬性,建議同時使用 principal.type 屬性,控管條件適用的主體類型。這是因為主體 ID 不一定在主體類型中是唯一的。舉例來說,ID example-user@example.com 可以識別 Google 帳戶或員工身分集區中的使用者。

除了 principal.subject 屬性,您也可以使用 principal.type 屬性,確保條件只會比對預期類型的主體。舉例來說,下列運算式會比對電子郵件地址結尾為 @example.com 的 Google 帳戶:

principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')

您可以在主體存取邊界政策的政策繫結中使用主體屬性。

屬性變數 principal.subject
屬性類型

string

支援的運算子

, , in, startsWith(), endsWith()

支援的主體
Google 帳戶

識別碼:使用者的電子郵件地址

範例:alex@example.com

工作團隊身分集區身分

ID:身分識別的主體屬性值

範例:raha@altostrat.com

Workload Identity Pool 身分

ID:身分識別的主體屬性值

服務帳戶

識別碼:服務帳戶的電子郵件地址

範例:my-service-account@my-project.iam.gserviceaccount.com

代理身分 (預覽版)

ID:代理身分,開頭為 resources/

範例: resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agent

範例

如果要求中的主體以 @example.com 結尾,則評估結果為 true

principal.subject.endsWith("@example.com")
        

如果要求中的主體以 resources/aiplatform 開頭,則評估結果為 true,這適用於使用 Vertex AI 平台的代理身分:

principal.subject.startsWith("resources/aiplatform/")
        

如果要求中的主體符合下列條件,評估結果會是 trueexample-service-account@example-project.iam.gserviceaccount.com

principal.subject == "example-service-account@example-project.iam.gserviceaccount.com"
        

要求屬性

您可以使用要求屬性建立條件,評估要求的詳細資料,例如存取層級、日期和時間、目的地 IP 位址和通訊埠 (適用於 IAP TCP 通道),或預期網址路徑/主機 (適用於 IAP 和 Cloud Run)。

存取層級屬性

存取層級屬性可讓使用者設定條件,藉此限制要求的授權存取層級。您可以在允許政策角色繫結中使用存取層級屬性。

存取層級屬性是根據要求的屬性 (如原始 IP 位址、裝置屬性和時段) 衍生而來。舉例來說,名為 fullyTrusted 的存取層級可能會規定提出要求的裝置必須為公司所有,且具有螢幕鎖定功能;onNetwork 存取層級可能會規定提出要求的裝置須來自特定的 IP 位址範圍。如要進一步瞭解存取層級,請參閱 Access Context Manager 說明文件。

只有在使用 Identity-Aware Proxy 存取通道執行個體,或存取在 App Engine 或 Compute Engine 後端服務上執行的網頁應用程式時,才能使用存取層級屬性。更具體來說,只有在要求檢查下列其中一項權限時,才能使用 access_levels 屬性:

  • iap.tunnelInstances.accessViaIAP
  • iap.webServiceVersions.accessViaIAP

有條件地授予下列預先定義的角色時,可以使用存取層級屬性:

  • 受 IAP 保護的通道使用者 (roles/iap.tunnelResourceAccessor)

    包含單一權限 iap.tunnelInstances.accessViaIAP

  • 受 IAP 保護的網頁應用程式使用者 (roles/iap.httpsResourceAccessor)

    包含單一權限 iap.webServiceVersions.accessViaIAP

您也可以使用存取層級屬性,有條件地授予包含這些權限的自訂角色。自訂角色不得包含任何其他權限。

request.auth.access_levels 屬性

屬性變數 request.auth.access_levels
屬性類型 list<string>
支援的運算子 in
詳細資料

如要檢查要求是否符合特定存取層級,請使用 in 運算子:

ACCESS_LEVEL_FULL_NAME in request.auth.access_levels

存取層級全名的格式如下:

accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL
範例

如果要求符合「CorpNet」存取層級,就會傳回 true

"accessPolicies/199923665455/accessLevels/CorpNet"
    in request.auth.access_levels
支援的資源類型 適用於使用 Identity-Aware Proxy 存取通道執行個體、通道目的地群組、在 Google Cloud 負載平衡上執行的網路應用程式,或在 App Engine 上執行的網路應用程式的要求。

API 屬性

API 屬性可協助您根據特定 API 或服務提供的資料管理存取權。Google Cloud 您可以在允許政策角色繫結中使用 API 屬性。

舉例來說,當您使用 Cloud Storage 列出值區中的物件時,可以在要求中使用 prefix 參數,只納入名稱開頭為特定前置字元的物件。如果您使用憑證存取權界線縮減短期憑證的範圍,可以建立憑證存取權界線,勾選 API 屬性 storage.googleapis.com/objectListPrefix,限制列出物件的權限。這個 API 屬性包含要求中的 prefix 參數值。

如需在條件中使用 API 屬性的範例,請參閱下列頁面:

並非所有服務都能辨識 API 屬性。下列各節會說明哪些服務可辨識各項 API 屬性。

API 屬性的函式

您可以使用下列函式處理 API 屬性:

函式 說明
api.getAttribute(
  attributeName: string,
  defaultValue: V<T>
)
  V<T>

取得要求的 API 屬性。

參數
  • attributeName:要取得的 API 屬性。如需支援的值,請參閱本頁面的「Cloud Storage API 屬性」和「IAM API 屬性」。
  • defaultValue:如果 API 屬性無法使用,則要使用的預設值 (V)。值 V 的類型為 T,其中 T 與 API 屬性的值類型相同。舉例來說,如果 API 屬性的值是字串,您可以使用空字串或預留位置字串,例如 undefined

範例

傳回下列其中一項:

  • 如果是授予或撤銷角色的要求,系統會傳回要求修改的角色清單。
  • 如果是其他類型的要求,則會傳回空白清單。
api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
hasOnly(
  items: list<T>
)
  bool

檢查清單是否只包含允許的項目,或這些項目的子集。您可以對 api.getAttribute() 傳回的清單呼叫函式。

參數
items:類型為 T 的項目清單。每個項目都是 API 屬性可包含的值。
範例

檢查要求是否會授予或撤銷 Pub/Sub 編輯者 (roles/pubsub.editor) 或 Pub/Sub 發布者 (roles/pubsub.publisher) 以外的任何角色:

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

以下顯示不同要求值的結果:

已授予/撤銷的角色 結果

true

如果沒有修改任何角色,則 api.getAttribute() 會傳回預設值。這個屬性的預設值一律為空白清單。根據定義,空白清單不包含不在允許清單中的值。

roles/pubsub.editor

true

角色在許可清單中。

roles/pubsub.editor
roles/pubsub.publisher

true

兩個角色都在允許清單中。

roles/billing.admin

false

角色不在許可清單中。

roles/billing.admin
roles/pubsub.editor

false

一個角色在許可清單中,另一個則不在。

Cloud Storage API 屬性

Cloud Storage 提供下列 API 屬性。

屬性變數 storage.googleapis.com/objectListPrefix
屬性類型 string
詳細資料

如要列出值區中的物件,請包含要求中的 prefix 參數值。如果要求省略 prefix 參數,系統就不會定義屬性。

如果是其他類型的要求,則不會定義屬性。

可辨識這項屬性的服務 Cloud Storage

IAM API 屬性

IAM 提供下列 API 屬性:

屬性變數 iam.googleapis.com/modifiedGrantsByRole
屬性類型 list<string>
詳細資料

如要設定資源的允許政策,這項屬性會包含要求修改的角色繫結中的角色名稱。

如果是其他類型的要求,則不會定義屬性。

接受這項屬性的資源類型

下列資源類型會在允許政策中接受具有 modifiedGrantsByRole 屬性的條件:

  • 專案
  • 資料夾
  • 組織
可辨識這項屬性的服務

下列服務可識別 modifiedGrantsByRole 屬性:

  • API Gateway
  • AutoML
  • 憑證授權單位服務
  • Cloud Run 函式
  • Cloud Healthcare API
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Managed Service for Apache Spark
  • Earth Engine
  • 遊戲伺服器
  • Identity and Access Management
  • Identity-Aware Proxy
  • Managed Service for Microsoft Active Directory
  • 使用者自行管理的筆記本
  • Resource Manager
  • Secret Manager
  • 服務管理

MCP API 屬性

Google Cloud 提供下列屬性,可控管 MCP 伺服器的存取權:

屬性變數 mcp.googleapis.com/tool.name
屬性類型 string
詳細資料

如果是存取 MCP 工具的要求,這個屬性會包含工具名稱。

舉例來說,如果要求存取 BigQuery MCP 工具 list_dataset_ids,則要求的 tool.name 屬性為 list_dataset_ids

如果是其他類型的要求,則不會定義這項屬性。

可辨識這項屬性的服務 所有 Google Cloud 含有 MCP 伺服器的服務都會辨識這項 API 屬性。如要查看含有 MCP 伺服器的服務清單,請參閱「支援的產品」。
屬性變數 mcp.googleapis.com/tool.isReadOnly
屬性類型 boolean
詳細資料

如果是存取 MCP 工具的要求,這項屬性會指出工具是否為唯讀工具。

如果是其他類型的要求,則不會定義這項屬性。

可辨識這項屬性的服務 所有 Google Cloud 含有 MCP 伺服器的服務都會辨識這項 API 屬性。如要查看含有 MCP 伺服器的服務清單,請參閱「支援的產品」。

Vertex AI Agent Engine API 屬性

Vertex AI Agent Engine 為記憶體庫工作階段脈絡管理服務提供下列 API 屬性:

屬性變數 aiplatform.googleapis.com/memoryScope
屬性類型 map<string, string>
詳細資料

如果是存取或修改「記憶體庫」資源的要求,則包含「記憶體」中的 scope 欄位值。

如果是其他類型的要求,則不會定義屬性。

可辨識這項屬性的服務 Vertex AI Agent Engine
屬性變數 aiplatform.googleapis.com/sessionUserId
屬性類型 string
詳細資料

如果是存取或修改工作階段資源的要求,則包含工作階段中的 user_id 欄位值。

如果是其他類型的要求,則不會定義屬性。

可辨識這項屬性的服務 Vertex AI Agent Engine

日期/時間屬性

日期/時間屬性可用來為 Google Cloud 資源設定有期限、已排定或限時等各類存取。您可以在允許政策角色繫結中使用日期/時間屬性。

所有 Google Cloud 服務和資源類型皆支援此屬性。如要瞭解如何對不直接支援日期/時間條件的資源套用這類條件,請參閱本頁的「支援繼承的條件」一節。

request.time 屬性包含要求的時間戳記。您可以將這個時間戳記與另一個時間戳記或時間長度進行比較。

以下各節列出可用於根據時間戳記和持續時間設定條件的函式。

建立、比較及修改時間戳記和時間長度

函式或運算子 說明
date(
  value: string
)
  Timestamp

將日期從 string 轉換為 Timestamp

參數
value:日期格式為 YYYY-MM-DD,其中 YYYY 是年份,MM 是兩位數的月份,DD 則是兩位數的日期。產生的 Timestamp 包含指定日期和時間 00:00:00.000 UTC
範例

建立代表日期 2023-02-01 和時間 00:00:00.000 UTCTimestamp

date("2023-02-01")
duration(
  value: string
)
  Duration

將時間量從 string 轉換為 Duration

參數
value:以秒為單位的 Duration,後接 s
範例

建立代表 1.5 分鐘的時間長度:

duration("90s")

建立代表 30 天的持續時間:

duration("2592000s")
timestamp(
  value: string
)
  Timestamp

string 轉換為 Timestamp

參數

value:符合 RFC 3339 的世界標準時間時間戳記。

範例

建立代表 2023 年 4 月 12 日 23:20:50.52 (世界標準時間) 的時間戳記:

timestamp("2023-04-12T23:20:50.52Z")
, , ,

比較兩個 Timestamp 值。

範例

如果要求時間早於世界標準時間 2022 年 4 月 12 日 00:00:00,則傳回 true

request.time < timestamp("2022-04-12T00:00:00.00Z")

如果要求時間早於或等於世界標準時間 2022 年 4 月 12 日 00:00:00,則傳回 true

request.time <= timestamp("2022-04-12T00:00:00.00Z")

如果要求時間晚於世界標準時間 2022 年 4 月 12 日 00:00:00,則傳回 true

request.time > timestamp("2022-04-12T00:00:00.00Z")

如果要求時間晚於或等於世界標準時間 2022 年 4 月 12 日 00:00:00,則傳回 true

request.time >= timestamp("2022-04-12T00:00:00.00Z")
  • timestamp + duration   Timestamp
  • timestamp - duration   Timestamp

Timestamp 新增或減去 Duration

範例

傳回 2024 年 4 月 12 日世界標準時間 14:30:00 後 30 分鐘的 Timestamp

timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

傳回 2024 年 4 月 12 日世界標準時間 14:30:00 前 60 天的 Timestamp

timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

從時間戳記擷取資訊

本節中的函式可讓您從時間戳記擷取資訊,例如時間戳記所屬的星期幾。

在 IAM Conditions 中,所有時間戳記都採用世界標準時間。不過,您可能想根據不同時區擷取資訊。舉例來說,您可能想知道世界標準時間的時間戳記是否為德國柏林時區的星期一。

如要指定其他時區,請將時區傳遞至函式。使用名稱或與 IETF 時區資料庫的世界標準時間偏差值。舉例來說,您可以將中歐時間 (CET) 設為 Europe/Berlin+01:00

支援的函式與運算子 說明
Timestamp.getDate(
  timeZone: string
)
  int

Timestamp 取得當月日期。這個值採用以 1 為基準的索引,也就是說,當月的第一天是 1

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在世界標準時間當月 15 日之後傳送,則傳回 true

request.time.getDate() > 15
Timestamp.getDayOfMonth(
  timeZone: string
)
  int

Timestamp 取得當月日期。這個值採用以零為基準的索引,因此當月第一天為 0

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在世界標準時間當月 15 日之後傳送,則傳回 true

request.time.getDayOfMonth() > 14
Timestamp.getDayOfWeek(
  timeZone: string
)
  int

Timestamp 取得星期幾。該值使用從零開始的索引,例如星期天是 0

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在德國柏林的週一至週五之間傳送,則會傳回 true

request.time.getDayOfWeek("Europe/Berlin") > 0 &&
    request.time.getDayOfWeek("Europe/Berlin") < 6
Timestamp.getDayOfYear(
  timeZone: string
)
  int

Timestamp 取得一年中的第幾天。這個值採用從零開始的索引,因此一年中的第一天是 0

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在加州 Mountain View 的一年中前 5 天傳送,則會傳回 true

request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
    request.time.getDayOfYear("America/Los_Angeles") < 5
Timestamp.getFullYear(
  timeZone: string
)
  int

Timestamp 取得年份。

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在 2023 年期間從加州山景城傳送,則傳回 true

request.time.getFullYear("America/Los_Angeles") == 2023

如果要求是在 2022 年 (世界標準時間) 傳送,則傳回 true

request.time.getFullYear() == 2022
Timestamp.getHours(
  timeZone: string
)
  int

Timestamp 取得當日時段。這個值會使用從零開始的索引,範圍從 023

您可以將這項功能與 getDayofWeek() 搭配使用,只在您管轄範圍內的許可工作時間授予存取權。

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在德國柏林的工作日 09:00 (上午 9:00) 至 17:00 (下午 5:00) 之間傳送,則傳回 true

request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
    request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
    request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getHours("Europe/Berlin") <= 17
Timestamp.getMilliseconds(
  timeZone: string
)
  int

Timestamp 取得毫秒數。這個值會使用從零開始的索引,範圍從 0999

參數
timeZone:要計算結果的時區。預設為世界標準時間。
Timestamp.getMinutes(
  timeZone: string
)
  int

Timestamp 取得整點過後的分鐘數。這個值採用從零開始的索引,範圍從 059

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在德國柏林時間 09:30 (上午 9:30) 之後傳送,則會傳回 true

request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getMinutes("Europe/Berlin") >= 30
Timestamp.getMonth(
  timeZone: string
)
  int

Timestamp 取得月份。這個值會使用從零開始的索引,範圍從 011

參數
timeZone:要計算結果的時區。預設為世界標準時間。
範例

如果要求是在加州山景城 4 月期間傳送,則傳回 true

request.time.getMonth("America/Los_Angeles") == 3
Timestamp.getSeconds(
  timeZone: string
)
  int

Timestamp 取得秒數。這個值會使用從零開始的索引,範圍從 059

參數
timeZone:要計算結果的時區。預設為世界標準時間。
, , ,

比較這個表格中兩個函式的輸出內容。

目的地 IP/通訊埠屬性

使用者可根據要求的內部目的地 IP 位址和通訊埠,透過目的地 IP/通訊埠屬性管理存取權。您可以在允許政策角色繫結中使用目的地 IP/通訊埠屬性。

舉例來說,Compute Engine VM 執行個體可能會將外部 IP 位址和連接埠 132.168.42.21:3001 對應至內部 IP 位址和連接埠 10.0.0.1:2300,以供一般用途。相較之下,內部 IP 位址和通訊埠10.0.0.1:22可能僅供內部管理用途。您可以根據內部 IP 位址和通訊埠,使用目的地 IP/通訊埠屬性授予不同程度的存取權。

如要進一步瞭解 TCP 轉送功能,請參閱 Identity-Aware Proxy 說明文件

destination.ip 屬性

屬性變數 destination.ip
屬性類型 string
支援的運算子 ,
詳細資料

變數 destination.ip 會以 IPv4 格式識別內部 IP 位址。

範例

如果目的地 IP 位址是 10.0.0.1,則會傳回 true

destination.ip == "10.0.0.1"

除非目的地 IP 位址為 10.0.0.1,否則會傳回 true

destination.ip != "10.0.0.1"
支援的資源類型 適用於使用 Identity-Aware Proxy 存取通道執行個體的請求

destination.port 屬性

屬性變數 destination.port
屬性類型 int
支援的運算子 , , , , ,
詳細資料

變數 destination.port 會識別內部 TCP 通訊埠編號。

範例

如果目的地埠為 21true

destination.port == 21

如果目的地通訊埠小於 3001,則傳回 true

destination.port < 3001
支援的資源類型 適用於使用 Identity-Aware Proxy 存取通道執行個體的請求

轉送規則屬性

轉送規則屬性可讓您指定主體可建立的轉送規則類型。舉例來說,您可以允許主體為內部 Google Cloud負載平衡器建立轉送規則,這類負載平衡器會處理源自 Google Cloud 網路內的流量,但不能為外部 Google Cloud負載平衡器建立轉送規則,這類負載平衡器會處理源自網際網路的流量。您可以在允許政策角色繫結中使用轉送規則屬性。

對於 Cloud Load Balancing,轉送規則屬性不會影響 Google Cloud 負載平衡器的其他元件 (例如後端服務、目標 Proxy、健康狀態檢查和網址對應) 建立能力。

支援的函式

函式 說明
compute.isForwardingRuleCreationOperation()   bool

檢查要求是否正在建立轉送規則

範例
請參閱compute.matchLoadBalancingSchemes()的範例。
compute.matchLoadBalancingSchemes(
  schemes: list<string>
)
  bool

檢查要求是否會影響指定類型的負載平衡架構。如要找出各負載平衡架構的 ID,以及更多詳細資料,請參閱在 Google Cloud 負載平衡器上使用 IAM 條件

參數
schemes:要求可影響的負載平衡架構。
範例

傳回下列其中一項:

  • 如果要求建立轉送規則,則傳回 true
  • 如果要求建立轉送規則,則只有在轉送規則影響 INTERNALINTERNAL_MANAGEDINTERNAL_SELF_MANAGED 負載平衡機制時,才會傳回 true
!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ])
)

支援的資源類型

這項屬性適用於建立下列資源類型的要求:

服務 資源類型
Cloud Load Balancing 轉送規則
Cloud VPN 轉送規則 (全域和區域)
Compute Engine 轉送規則 (適用於通訊協定轉送)
Cloud Service Mesh1 轉送規則

1 使用 Compute Engine 的資源屬性

網址路徑/主機屬性

網址路徑/主機屬性可讓使用者根據要求的網址路徑和主機管理存取權。舉例來說,條件可以指定 https://example.com 是使用者一般網域可存取的主要應用程式,而 https://hr.example.com/admin 則用於存取應用程式中的頁面,只有人力資源管理員可以存取這個部分。

您可以在允許政策角色繫結中使用網址路徑/主機屬性。

request.path 屬性

屬性變數 request.path
屬性類型 string
支援的函式與運算子 , startsWith(), endsWith()
詳細資料 我們不建議搭配這個屬性使用 運算子。請檢查屬性的前置字元,如 !request.path.startsWith("/admin") 所示,而非檢查不相等,如 request.path != "/admin" 所示。檢查前置字元時,您也會保護 /admin 階層中的網址路徑,例如 /admin/payroll/
範例

如果要求路徑等於指定的網址路徑,則傳回 true

request.path == "/admin"
request.path == "/admin/payroll"

如果要求路徑開頭為指定網址路徑,則傳回 true

request.path.startsWith("/admin")

如果要求路徑以指定的網址路徑結尾,則傳回 true

request.path.endsWith("/payroll.js")
支援的資源類型
  • Identity-Aware Proxy 應用程式服務版本 (App Engine): 適用於使用 Identity-Aware Proxy 存取在 App Engine 或 Compute Engine 上執行的網頁應用程式的要求
  • Cloud Run 服務

request.host 屬性

屬性變數 request.host
屬性類型 string
支援的函式與運算子 , endsWith()
詳細資料 我們不建議將 .startsWith() 函式或 運算子與這個屬性搭配使用。這些函式和運算子可能會產生非預期的結果。
範例

如果主機名稱等於指定值,則傳回 true

request.host == "www.example.com"
request.host == "hr.example.com"

如果主機名稱結尾為指定值,則傳回 true

request.host.endsWith("example.com")
支援的資源類型
  • Identity-Aware Proxy 應用程式服務版本 (App Engine): 適用於使用 Identity-Aware Proxy 存取應用程式服務版本的請求。
  • Cloud Run 服務

從屬性擷取值

您可以使用 extract() 函式從屬性擷取值。舉例來說,您可以擷取資源名稱的任意部分,然後編寫參照所擷取文字的條件運算式。

如要使用 extract() 函式,請提供擷取範本,指定要擷取的屬性部分。舉例來說,如要從 Compute Engine VM 執行個體的資源名稱中擷取專案 ID,可以使用 projects/{project}/ 範本。

擷取範本包含下列部分:

  • 以大括號括住的識別碼,用於識別要擷取的子字串。

    請選擇簡短且有意義的 ID,清楚說明要擷取的值。可以使用 AZ 的大小寫英文字母、數字和底線 (_)。

    在範本 projects/{project}/ 中,ID 為 project

  • 選用:前置字元,必須出現在要擷取的子字串之前。

    在範本 projects/{project}/ 中,前置字串為 projects/

  • 選用:後置字串,必須出現在要擷取的子字串之後。

    在範本 projects/{project}/ 中,尾碼為 /

extract() 函式會根據擷取範本是否含有前置字串、後置字串或兩者,擷取屬性的不同部分:

有前置字串 有後置字串 擷取的值
整個屬性
前置字元第一次出現後的所有字元,或前置字元後沒有任何字元時的空字串
後置字串第一次出現前的字元,如果後置字串前沒有任何字元,則為空字串
前置字串第一次出現和後置字串第一次出現之間的所有字元,如果前置字串和後置字串之間沒有任何字元,則為空字串

如果指定的前置字串或後置字串未出現在屬性中,或後置字串只出現在前置字串之前,extract() 函式會傳回空字串。

以下範例顯示了幾種不同擷取範本的輸出內容。以下範例是指 Cloud Storage 物件的資源名稱,projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876

擷取範本 輸出
/order_date={date}/ 2019-11-03
buckets/{name}/ acme-orders-aaa
/orders/{empty}order_date 清空「string
{start}/objects/data_lake projects/_/buckets/acme-orders-aaa
orders/{end} order_date=2019-11-03/aef87g87ae0876
{all} projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= 清空「string
/orders/order_date=2019-11-03/{id}/data_lake 清空「string

如果您擷取代表日期的字串,可以使用本頁的日期/時間函式和運算子,將擷取的值轉換為 Timestamp。如需範例,請參閱「設定以資源為基礎的存取權」。