- Authorization
- Action
- Subject
- Template
- istio.policy.v1beta1.Value
Authorization
Authorization 模版用于定义在 Istio 中策略执行的参数。启动 Mixer 可以配置此模版。
配置例子:
apiVersion: "config.istio.io/v1alpha2"kind: authorizationmetadata:name: authinfonamespace: istio-systemspec:subject:user: source.user | request.auth.token[user] | ""groups: request.auth.token[groups]properties:iss: request.auth.token["iss"]action:namespace: destination.namespace | "default"service: destination.service | ""path: request.path | "/"method: request.method | "post"properties:version: destination.labels[version] | ""
Action
Action 定义了“如何访问资源”。
| 字段 | 类型 | 描述 |
|---|---|---|
| namespace | string | 命名空间 |
| service | string | 服务名称 |
| method | string | 请求方法 |
| path | string | 服务的 HTTP RestAPI |
| properties | map<string,istio.policy.v1beta1.Value> | 其他属性数据 |
Subject
Subject 包括用户身份识别属性
| 字段 | 类型 | 描述 |
|---|---|---|
| user | string | 用户名称或 ID |
| group | string | 认证的用户组,groups 可以从 JWT 断言或用户签名中获得。创建模版事例时可以指定。 |
| properties | map<string,istio.policy.v1beta1.Value> | 其他属性数据 |
Template
Authorization 模版定义 Istio 中策略执行的参数。启动 Mixer 可以使用此模版来定义谁可以做什么。在模版中,who 定义了消息主题。what 定义了操作信息。在 Mixer 检查调用期间,将根据请求属性配置这些值,并将这些值传给各个授权适配器来进行决定。
| 字段 | 类型 | 描述 |
|---|---|---|
| subject | Subject | 主题包括用户身份识别的属性列表 |
| action | Action | 操作定义了如何访问资源 |
istio.policy.v1beta1.Value
Value 类型的字段表示该字段是动态类型,可以转换为任何 ValueType 枚举值。例如:模版中类型为 istio.policy.v1beta1.Value 的字段数据,下面两个表达式都是有效的 data: source.ip | ip("0.0.0.0"), data: request.id | "";结果类型分别为 ValueType.IP_ADDRESS 或 ValueType.STRING。
Value 类型对象也会在请求时传递给适配器。 Value 中的一个字段与 ValueType 中的枚举值之间存在 1:1 映射的关系。 根据表达式的已评估 ValueType 值,由 Mixer 提供等效的 Value 类型的 oneof 字段并传给适配器。
| 字段 | 类型 | 描述 |
|---|---|---|
| stringValue | string (oneof) | STRING 类型的值 |
| int64Value | int64 (oneof) | INT64 类型的值 |
| doubleValue | double (oneof) | DOUBLE 类型的值 |
| ipAddressValue | istio.policy.v1beta1.IPAddress (oneof) | IPAddress 类型的值 |
| timestampValue | istio.policy.v1beta1.TimeStamp (oneof) | TIMESTAMP 类型的值 |
| durationValue | istio.policy.v1beta1.Duration (oneof) | DURATION 类型的值 |
| emailAddressValue | istio.policy.v1beta1.EmailAddress (oneof) | EmailAddress 类型的值 |
| dnsNameValue | istio.policy.v1beta1.DNSName (oneof) | DNSName 类型的值 |
| uriValue | istio.policy.v1beta1.Uri (oneof) | Uri类型的值 |
