约束和属性

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

具体而言,你可以使用约束在服务角色的访问规则字段中指定额外条件。你可以使用属性在服务角色绑定的主题字段中指定其他条件。Istio支持此页面上列出的HTTP协议的所有密钥,但仅支持普通TCP协议的一些密钥。

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

了解更多信息,请参阅授权的概念页面

支持的约束

下表列举了约束中当前支持的键值:

名称描述是否支持TCP服务键值示例值示例
destination.ip目标工作负载实例 IP 地址,支持单 IP 或 CIDRdestination.ip["10.1.2.3", "10.2.0.0/16"]
destination.port服务器 IP 地址的接收者端口,必须是 0 到 65535 中的随机数destination.port["80", "443"]
destination.labels链接到服务器实例的键值对的映射destination.labels[version]["v1", "v2"]
destination.name目标工作负载实例名destination.name["productpage", "-test"]
destination.namespace目标工作负载实例命名空间destination.namespace["default"]
destination.user目标工作负载实例的标识destination.user["bookinfo-productpage"]
experimental.envoy.filters.*过滤器实验性元数据匹配,在 [] 封装值作为匹配列表experimental.envoy.filters.network.mysql_proxy[db.table]["[update]"]
request.headersHTTP 请求头, 实际的请求头名称包含在括号中request.headers[X-Custom-Token]["abc123"]

请注意,类似 experimental.* 命名的键值没有保证向后兼容。它们可能随时被移除,建议用户自行承担使用风险。

支持的属性

下表列举了属性中当前支持的键值:

名称描述是否支持TCP服务键值示例值示例
source.ip源工作负载实例 IP 地址,支持单 IP 或 CIDRsource.ip"10.1.2.3"
source.namespace源工作负载实例命名空间source.namespace"default"
source.principal源工作负载实例标识source.principal"cluster.local/ns/default/sa/productpage"
request.headersHTTP 请求头, 实际的请求头名称包含在括号中request.headers[User-Agent]"Mozilla/"
request.auth.principal请求中最重要的认证request.auth.principal"accounts.my-svc.com/104958560606"
request.auth.audiences认证信息的预期受众request.auth.audiences"my-svc.com"
request.auth.presenter被授权的授权人request.auth.presenter"123456789012.my-svc.com"
request.auth.claims原始 JWT 断言。实际的断言名称包含在括号中request.auth.claims[iss]"@foo.com"