距离 Istio 1.5 版本发布还有 天。

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

本节包含支持格式化的键和值,你可以将其用作于服务角色和服务角色绑定配置对象中的约束和属性。约束和属性是额外的条件,你可以指定配置对象 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"]

支持的属性

下表列出了该 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"
这些信息有用吗?
Do you have any suggestions for improvement?

Thanks for your feedback!