RBAC 约束和属性(不建议使用)

RBAC 策略中的约束和属性已经被 AuthorizationPolicy 中的条件取代。 请使用 AuthorizationPolicy 资源中的条件,此页面仅供参考,以后将被删除。

本节包含支持格式化的键和值,你可以将其用作于服务角色和服务角色绑定配置对象中的约束和属性。约束和属性是额外的条件,你可以指定配置对象 kind: 字段的值为 ServiceRoleServiceRoleBinding,以指定详细的访问控制要求。

具体来讲,你可以使用 service roleaccess rule 字段的 constraints 来指定额外的条件,也可以使用 service role bindingsubject 字段的 properties 来指定额外的条件。Istio 支持此在此页面上列出的所有 HTTP 协议密钥,但是仅支持一些简单的 TCP 协议密钥。

不支持的键和值将被忽略。

有关更多信息,请参阅 授权概念页面

支持的约束

下表列出了该 constraints 字段当前支持的键:

名称描述是否支持 TCP 协议示例键示例值
destination.ip目标 IP 地址,支持单个 IPCIDRYESdestination.ip["10.1.2.3", "10.2.0.0/16"]
destination.port目标 IP 地址上的端口,必须在 [0,65535] 范围内YESdestination.port["80", "443"]
destination.labels附加到服务器实例的键值对的映射YESdestination.labels[version]["v1", "v2"]
destination.namespace目标负载实例命名空间YESdestination.namespace["default"]
destination.user目标负载上的标识YESdestination.user["bookinfo-productpage"]
experimental.envoy.filters.*用于过滤器的实验性元数据匹配,包裹在 [] 列表中的值被用于匹配YESexperimental.envoy.filters.network.mysql_proxy[db.table]["[update]"]
request.headersHTTP 请求头,需要用 [] 括起来NOrequest.headers[X-Custom-Token]["abc123"]

请注意,无法保证 experimental.* 密钥向后的兼容性,可以随时删除它们,但是须要谨慎操作。

支持的属性

下表列出了该 properties 字段当前支持的键:

名称描述是否支持 TCP 协议示例键示例值
source.ipIP 地址,支持单个 IPCIDRYESsource.ip"10.1.2.3"
source.namespace源负载实例命名空间YESsource.namespace"default"
source.principal源负载的标识YESsource.principal"cluster.local/ns/default/sa/productpage"
request.headersHTTP 请求头,需要用 [] 括起来NOrequest.headers[User-Agent]"Mozilla/"
request.auth.principal已认证过 principal 的请求。NOrequest.auth.principal"accounts.my-svc.com/104958560606"
request.auth.audiences此身份验证信息的目标主体NOrequest.auth.audiences"my-svc.com"
request.auth.presenter证书的颁发者NOrequest.auth.presenter"123456789012.my-svc.com"
request.auth.claimsClaims 来源于 JWT。需要用 [] 括起来NOrequest.auth.claims[iss]"@foo.com"