IAM Conditions 的屬性參考資料

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

支援的條件屬性

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

資源屬性

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

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

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

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

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
資源類型屬性

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

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

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
資源名稱屬性

依資源名稱管理存取權。

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

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
資源標記

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

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

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

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

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

要求屬性

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

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

API 屬性

根據特定 Cloud de ConfianceAPI 或服務提供的資料管理存取權。

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

  • Cloud Key Management Service
  • Cloud Storage
  • Compute Engine
  • Identity and Access Management
  • Resource Manager

日期/時間屬性

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

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

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

轉送規則屬性

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

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

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

支援繼承條件

部分類型的 Cloud de Confiance 資源不允許在允許政策中加入條件。不過,您可以在機構、資料夾或專案層級新增條件式角色繫結,其他資源會透過資源階層沿用這些角色繫結。詳情請參閱「接受條件式角色繫結的資源類型」。

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

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

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

您不需要限制檢查附加至資源的標記的條件範圍。條件檢查標記鍵和值時,無法檢查任何其他屬性,包括資源類型和資源服務。

資源屬性

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

resource.service 屬性

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

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

屬性變數 resource.service
屬性類型

string

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

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

傳回 Compute Engine 資源的 true

resource.service == "compute.googleapis.com"
支援的服務
  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager

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")
支援的資源類型
BigQuery
  • 資料集
  • 模型
  • 處理常式
  • 資料表
BigQuery Reservation API
  • 作業
  • 商業智慧保留項目
  • 容量承諾
  • 位置
  • 保留項目
Cloud Key Management Service
  • 加密編譯金鑰版本
  • 加密編譯金鑰
  • 金鑰環
  • 位置
Cloud Logging
  • 記錄檔值區
  • 記錄檢視
Cloud SQL
  • 備份執行作業
  • 執行個體
Cloud Storage
  • 值區
  • 代管資料夾
  • 物件
Compute Engine
  • 後端服務 (全域和區域)
  • 防火牆
  • 轉送規則 (通用和區域)
  • 圖片
  • 執行個體範本
  • 執行個體
  • 永久磁碟 (區域和區域)
  • 快照
  • 目標 HTTP(S) Proxy (全域和區域)
  • 目標安全資料傳輸層 (SSL) Proxy
  • 目標 TCP Proxy
Cloud de Confiance by S3NS
  • 地點1
Google Kubernetes Engine
  • 叢集
Firestore
  • 資料庫
Resource Manager
  • 專案

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

resource.name 屬性

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

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

以下範例說明如何確保這種行為。在本例中,條件允許存取所有資源類型,但 Cloud Storage 值區和物件除外。相較之下,對於值區和物件,條件只允許存取值區 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}/")
支援的資源類型
BigQuery
  • 資料集
  • 模型
  • 處理常式
  • 資料表
BigQuery Reservation API
  • 作業
  • 商業智慧保留項目
  • 容量承諾
  • 位置
  • 保留項目
Cloud Key Management Service
  • 加密編譯金鑰
  • 加密編譯金鑰版本
  • 金鑰環
Cloud Logging
  • 記錄檔值區
  • 記錄檢視
Cloud SQL
  • 備份執行作業
  • 執行個體
Cloud Storage
  • 值區
  • 代管資料夾
  • 物件
Compute Engine
  • 後端服務 (全域和區域)
  • 防火牆
  • 轉送規則 (通用和區域)
  • 圖片
  • 執行個體範本
  • 執行個體
  • 永久磁碟 (區域和區域)
  • 快照
  • 目標 HTTP(S) Proxy (全域和區域)
  • 目標安全資料傳輸層 (SSL) Proxy
  • 目標 TCP Proxy
Google Kubernetes Engine
  • 叢集

資源標記

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

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

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

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

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

不過, Cloud de Confiance 控制台的某些區域無法辨識具有標記條件的允許政策角色繫結。因此,如果您擁有附有標記條件的角色, Cloud de Confiance 控制台可能會錯誤地禁止您執行特定動作。如果遇到這個問題,請使用其他方法 (例如 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')

要求屬性

要求屬性可讓您建立條件,評估要求詳細資料,例如要求修改的角色,或要求日期和時間。

API 屬性

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

如需在條件中使用 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

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

    IAM API 屬性

    IAM 提供下列 API 屬性:

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

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

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

    接受這項屬性的資源類型

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

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

    下列服務可識別 modifiedGrantsByRole 屬性:

    • Cloud Key Management Service
    • Cloud Storage
    • Compute Engine
    • Identity and Access Management
    • Resource Manager

    日期/時間屬性

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

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

    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 UTC 前 60 天的 Timestamp

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

    從時間戳記擷取資訊

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

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

    如要指定其他時區,請將時區傳遞至函式。使用名稱或與 IETF 時區資料庫的世界標準時間 (UTC) 偏移量。舉例來說,您可以將中歐時間 (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:計算結果的時區。預設為世界標準時間。
    , , ,

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

    轉送規則屬性

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

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

    支援的函式

    函式 說明
    compute.isForwardingRuleCreationOperation()   bool

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

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

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

    參數
    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 的資源屬性

    從屬性擷取值

    您可以使用 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。如需範例,請參閱「設定以資源為基礎的存取權」。