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

必需。标识符。AuthzPolicy 资源的名称,格式如下:projects/{project}/locations/{location}/authzPolicies/{authzPolicy}

createTime

string (Timestamp format)

仅限输出。创建资源时的时间戳。

时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

updateTime

string (Timestamp format)

仅限输出。更新资源时的时间戳。

时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

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 操作的 AuthzPolicy 与请求匹配,则请求会被拒绝。

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 之一。仅限 5 个来源。当任何来源(在 sources 或 notSources 中)与请求匹配时,就会发生匹配。在单个来源中,匹配遵循跨字段的 AND 语义和单个字段内的 OR 语义,即当任意主键匹配且任意 ipBlock 匹配时,就会发生匹配。

notSources[]

object (RequestSource)

可选。描述请求来源的否定属性。与不符合此字段中指定条件的来源发出的请求匹配。必须至少指定 sources 或 notSources 中的一个。

RequestSource

描述单个来源的属性。

JSON 表示法
{
  "principals": [
    {
      object (StringMatch)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
字段
principals[]

object (StringMatch)

可选。派生自客户端证书的身份列表。除非为转发规则或网关启用了双向 TLS,否则此字段不会匹配请求。每个身份都是一个字符串,其值与 URI SAN、DNS SAN 或客户端证书中的主题字段进行匹配。匹配可以是完全匹配、前缀匹配、后缀匹配或子字符串匹配。必须指定“完全匹配”、“前缀”、“后缀”或“包含”。仅限 5 个主账号。

resources[]

object (RequestResource)

可选。与请求的来源虚拟机的资源进行匹配的资源列表。仅限 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,则表示完全匹配/前缀匹配/后缀匹配/包含匹配不应区分大小写。例如,如果匹配器 data 设置为 true,它将同时匹配输入字符串 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

RequestResource

描述访问内部应用负载平衡器的客户端虚拟机资源的属性。

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

object (TagValueIdSet)

可选。资源标记值永久 ID 列表,用于与请求的源虚拟机关联的资源管理器标记值进行匹配。

iamServiceAccount

object (StringMatch)

可选。与发送请求的虚拟机的来源服务账号匹配的 IAM 服务账号。

TagValueIdSet

描述一组资源标记值永久 ID,以便与与请求的来源虚拟机关联的资源管理器标记值进行匹配。

JSON 表示法
{
  "ids": [
    string
  ]
}
字段
ids[]

string (int64 format)

必需。资源标记值永久 ID 列表,用于与请求的源虚拟机关联的资源管理器标记值进行匹配。匹配遵循 AND 语义,这意味着所有 ID 都必须匹配。仅限 5 个匹配项。

目标

描述请求的一个或多个目标的属性。

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

object (RequestOperation)

可选。描述请求的一个或多个目标的属性。必须至少指定 operations 或 notOperations 之一。仅限 5 项操作。当任何操作(在 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)

可选。将授权决策委托给用户编写的 Service Extension。只能指定 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

更新单个 EntityType 的参数。