REST Resource: projects.locations.authzPolicies

資源:AuthzPolicy

AuthzPolicy 是可將流量轉送至呼叫後端的資源,後端會掃描流量以確保安全。

JSON 表示法
{
  "name": string,
  "createTime": string,
  "updateTime": string,
  "description": string,
  "labels": {
    string: string,
    ...
  },
  "target": {
    object (Target)
  },
  "httpRules": [
    {
      object (AuthzRule)
    }
  ],
  "action": enum (AuthzAction),
  "customProvider": {
    object (CustomProvider)
  }
}
欄位
name

string

這是必要旗標,ID。AuthzPolicy 資源的名稱,格式如下:projects/{project}/locations/{location}/authzPolicies/{authzPolicy}

createTime

string (Timestamp format)

僅供輸出。資源的建立時間戳記。

使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 小數位數。系統也接受「Z」以外的偏移值。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

updateTime

string (Timestamp format)

僅供輸出。資源更新時間的時間戳記。

使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 小數位數。系統也接受「Z」以外的偏移值。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

description

string

(選用步驟) 使用者可理解的資源說明。

labels

map (key: string, value: string)

(選用步驟) 與 AuthzPolicy 資源相關聯的標籤集。

格式必須符合下列規定

包含 "key": value 組合清單的物件。範例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

target

object (Target)

這是必要旗標,指定要套用這項政策的一組資源。

httpRules[]

object (AuthzRule)

(選用步驟) 與傳入要求比對的授權 HTTP 規則清單。如果至少有一項 HTTP 規則與要求相符,或是政策中未指定任何 HTTP 規則,就會發生政策比對。至少需要一個 HTTP 規則才能執行允許或拒絕動作。最多 5 個規則。

action

enum (AuthzAction)

這是必要旗標,可以是 ALLOWDENYCUSTOM

如果動作為 CUSTOM,則必須指定 customProvider

如果動作為 ALLOW,系統只會允許符合政策要求。

如果動作為 DENY,系統只會拒絕符合政策要求。

收到要求後,系統會按照以下順序評估政策:

  1. 如果有符合要求的 CUSTOM 政策,系統會使用自訂授權提供者評估 CUSTOM 政策,如果提供者拒絕要求,系統就會拒絕要求。

  2. 如果有任何 DENY 政策與要求相符,系統就會拒絕要求。

  3. 如果資源沒有 ALLOW 政策,或是任何 ALLOW 政策都與要求相符,系統就會允許要求。

  4. 否則,如果沒有任何已設定的 AuthzPolicy 與 ALLOW 動作相符,系統會依預設拒絕要求。

customProvider

object (CustomProvider)

(選用步驟) 如果動作為 CUSTOM,則為必要欄位。允許將授權決定權委派給 Cloud IAP 或 Service Extensions。必須指定 cloudIapauthzExtension 其中一個。

目標

指定要套用這項政策的目標組合。

JSON 表示法
{
  "loadBalancingScheme": enum (LoadBalancingScheme),
  "resources": [
    string
  ]
}
欄位
loadBalancingScheme

enum (LoadBalancingScheme)

這是必要旗標,這項政策和擴充功能參照的所有閘道和轉送規則,都必須共用相同的負載平衡器配置。支援的值:INTERNAL_MANAGEDEXTERNAL_MANAGED。詳情請參閱「後端服務總覽」。

resources[]

string

這是必要旗標,參照清單,列出要套用這項政策的轉送規則。

LoadBalancingScheme

AuthzPolicy 資源支援的負載平衡架構。有效值為 INTERNAL_MANAGEDEXTERNAL_MANAGED。詳情請參閱「後端服務總覽」。

列舉
LOAD_BALANCING_SCHEME_UNSPECIFIED 預設值。請勿使用。
INTERNAL_MANAGED 表示這項設定適用於區域內部或跨區域內部應用程式負載平衡。
EXTERNAL_MANAGED 表示這是用於全域外部或區域外部應用程式負載平衡。
INTERNAL_SELF_MANAGED 表示此值用於 Cloud Service Mesh。僅供 CSM GKE 控制器使用。

AuthzRule

與傳入要求相符的條件。

JSON 表示法
{
  "from": {
    object (From)
  },
  "to": {
    object (To)
  },
  "when": string
}
欄位
from

object (From)

(選用步驟) 說明要求來源的屬性。

to

object (To)

(選用步驟) 說明要求目標的屬性。

when

string

(選用步驟) CEL 運算式,說明動作必須滿足的條件。CEL 運算式的結果會與 from 和 to 執行 AND 運算。如需可用屬性的清單,請參閱 CEL 語言參考資料。

寄件者

說明要求的一或多個來源的屬性。

JSON 表示法
{
  "sources": [
    {
      object (RequestSource)
    }
  ],
  "notSources": [
    {
      object (RequestSource)
    }
  ]
}
欄位
sources[]

object (RequestSource)

(選用步驟) 說明要求來源的屬性。至少須指定一個 sources 或 notSources。最多 1 個來源。當任何來源 (在 sources 或 notSources 中) 與要求相符時,就會發生比對。在單一來源中,相符條件會遵循跨欄位 AND 語意和單一欄位 OR 語意,也就是說,當「任何主體」相符且「任何 ipBlocks」相符時,就會出現相符條件。

notSources[]

object (RequestSource)

(選用步驟) 說明要求來源的否定屬性。比對來源不符合此欄位所指定條件的要求。至少須指定一個 sources 或 notSources。

RequestSource

說明單一來源的屬性。

JSON 表示法
{
  "ipBlocks": [
    {
      object (IpBlock)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
欄位
ipBlocks[]

object (IpBlock)

(選用步驟) 與要求來源 IP 位址比對的 IP 位址或 IP 位址範圍清單。最多 5 個 ipBlocks。

resources[]

object (RequestResource)

(選用步驟) 與要求來源 VM 資源相符的資源清單。資源數量上限為 5 項。

IpBlock

代表 IP 位址範圍。

JSON 表示法
{
  "prefix": string,
  "length": integer
}
欄位
prefix

string

這是必要旗標,地址前置字串。

length

integer

這是必要旗標,地址範圍的長度。

RequestResource

說明存取內部應用程式負載平衡器的用戶端 VM 資源屬性。

JSON 表示法
{
  "tagValueIdSet": {
    object (TagValueIdSet)
  },
  "iamServiceAccount": {
    object (StringMatch)
  }
}
欄位
tagValueIdSet

object (TagValueIdSet)

(選用步驟) 資源標記值永久 ID 清單,用於比對與要求來源 VM 相關聯的資源管理工具標記值。

iamServiceAccount

object (StringMatch)

(選用步驟) 與傳送要求的 VM 來源服務帳戶相符的 IAM 服務帳戶。

TagValueIdSet

說明一組資源標記值永久 ID,用於比對與要求來源 VM 相關聯的資源管理工具標記值。

JSON 表示法
{
  "ids": [
    string
  ]
}
欄位
ids[]

string (int64 format)

這是必要旗標,資源標記值永久 ID 清單,用於比對與要求來源 VM 相關聯的資源管理工具標記值。比對會依照 AND 語意進行,也就是說所有 ID 都必須相符。最多 5 個相符項目。

StringMatch

決定字串值的配對方式。

JSON 表示法
{
  "ignoreCase": boolean,

  // Union field match_pattern can be only one of the following:
  "exact": string,
  "prefix": string,
  "suffix": string,
  "contains": string
  // End of list of possible types for union field match_pattern.
}
欄位
ignoreCase

boolean

如果為 true,表示完全相符/前置字串/後置字串/包含的字串比對應不區分大小寫。舉例來說,如果設為 true,比對器 data 會同時比對輸入字串 Datadata

聯集欄位 match_pattern

match_pattern 只能是下列其中一項:

exact

string

輸入的字串必須與這裡指定的字串完全相符。

範例:

  • abc 只會比對 abc 的值。
prefix

string

輸入字串必須包含此處指定的前置字串。注意:系統不允許使用空白前置字串,請改用規則運算式。

範例:

  • abc 與值 abc.xyz 相符
suffix

string

輸入字串必須包含此處指定的後置字串。注意:系統不允許使用空白前置字串,請改用規則運算式。

範例:

  • abc 與值 xyz.abc 相符
contains

string

輸入字串必須包含此處指定的子字串。注意:系統不允許使用空白包含比對,請改用正規表示式。

範例:

  • abc 與值 xyz.abc.def 相符

收件者

說明要求的一或多個目標屬性。

JSON 表示法
{
  "operations": [
    {
      object (RequestOperation)
    }
  ],
  "notOperations": [
    {
      object (RequestOperation)
    }
  ]
}
欄位
operations[]

object (RequestOperation)

(選用步驟) 說明要求的一或多個目標屬性。至少須指定一個 operations 或 notOperations。最多 1 項作業。只要任一項作業 (在 operations 或 notOperations 中) 相符,就會發生比對。在作業中,比對會依據各欄位中的 AND 語意和欄位內的 OR 語意,也就是當任一路徑、任一標頭和任一方法都符合條件時,系統就會比對。

notOperations[]

object (RequestOperation)

(選用步驟) 說明要求目標的否定屬性。比對不符合此欄位所指定條件的作業要求。必須至少指定一個 operations 或 notOperations。

RequestOperation

說明要求的一或多個目標屬性。

JSON 表示法
{
  "headerSet": {
    object (HeaderSet)
  },
  "hosts": [
    {
      object (StringMatch)
    }
  ],
  "paths": [
    {
      object (StringMatch)
    }
  ],
  "methods": [
    string
  ]
}
欄位
headerSet

object (HeaderSet)

(選用步驟) 要比對 HTTP 標頭的標頭清單。

hosts[]

object (StringMatch)

(選用步驟) 要比對的 HTTP 主機清單。比對方式可以是完全比對、前置字串、後置字串或包含 (子字串比對)。除非設定了 ignoreCase,否則比對結果一律會區分大小寫。最多 5 個相符項目。

paths[]

object (StringMatch)

(選用步驟) 要比對的路徑清單。比對方式可以是完全比對、前置字串、後置字串或包含 (子字串比對)。除非設定了 ignoreCase,否則比對結果一律會區分大小寫。最多 5 個相符項目。請注意,這個路徑比對會包含查詢參數。對於 gRPC 服務,這應為完整的名稱,格式為 /package.service/method。

methods[]

string

(選用步驟) 要比對的 HTTP 方法清單。每個項目都必須是有效的 HTTP 方法名稱 (GET、PUT、POST、HEAD、PATCH、DELETE、OPTIONS)。這類比對只允許完全比對,且一律區分大小寫。

HeaderSet

說明要比對的一組 HTTP 標頭。

JSON 表示法
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ]
}
欄位
headers[]

object (HeaderMatch)

這是必要旗標,要比對 HTTP 標頭的標頭清單。比對方式可以是完全比對、前置字串、後置字串或包含 (子字串比對)。比對結果會遵循 AND 語意,也就是所有標頭都必須相符。除非設定了 ignoreCase,否則比對結果一律會區分大小寫。最多 5 個相符項目。

HeaderMatch

決定如何比對 HTTP 標頭。

JSON 表示法
{
  "name": string,
  "value": {
    object (StringMatch)
  }
}
欄位
name

string

(選用步驟) 指定要求中的標頭名稱。

value

object (StringMatch)

(選用步驟) 指定標頭比對的執行方式。

AuthzAction

要套用至這項政策的動作。有效值為 ALLOWDENYCUSTOM

列舉
AUTHZ_ACTION_UNSPECIFIED 不明確的動作。
ALLOW 允許要求傳送至後端。
DENY 拒絕要求,並傳回 HTTP 404 給用戶端。
CUSTOM 將授權決定權委派給外部授權引擎。

CustomProvider

允許將授權決定權委派給 Cloud IAP 或 Service Extensions。

JSON 表示法
{
  "cloudIap": {
    object (CloudIap)
  },
  "authzExtension": {
    object (AuthzExtension)
  }
}
欄位
cloudIap

object (CloudIap)

(選用步驟) 將授權決定權委派給 Cloud IAP。僅適用於受管理的負載平衡器。在 AuthzPolicy 層級啟用 Cloud IAP 與 BackendService 中的 Cloud IAP 設定不相容。如果在兩個位置都啟用 IAP,要求就會失敗。請確認在 AuthzPolicy 或 BackendService 中啟用 IAP,但不要同時在兩個位置啟用。

authzExtension

object (AuthzExtension)

(選用步驟) 將授權決定權委派給使用者撰寫的服務擴充功能。只能指定 cloudIap 或 authzExtension 其中一個。

CloudIap

這個類型沒有任何欄位。

(選用步驟) 將授權決定權委派給 Cloud IAP。僅適用於受管理的負載平衡器。在 AuthzPolicy 層級啟用 Cloud IAP 與 BackendService 中的 Cloud IAP 設定不相容。如果在兩個位置都啟用 IAP,要求就會失敗。請確認在 AuthzPolicy 或 BackendService 中啟用 IAP,但不要同時在兩個位置啟用。

AuthzExtension

(選用步驟) 將授權決定權委派給使用者撰寫的擴充功能。只能指定 cloudIap 或 authzExtension 其中一個。

JSON 表示法
{
  "resources": [
    string
  ]
}
欄位
resources[]

string

這是必要旗標,授權擴充功能參照清單,系統會針對符合這項政策的要求叫用這些擴充功能。僅限 1 個自訂提供者。

方法

create

在指定的專案和位置中建立新的 AuthzPolicy。

delete

刪除單一 AuthzPolicy。

get

取得單一 AuthzPolicy 的詳細資料。

list

列出指定專案和位置中的 AuthzPolicy。

patch

更新單一 AuthzPolicy 的參數。