Authorization

Authorization 模版用于定义在 Istio 中策略执行的参数。启动 Mixer 可以配置此模版。

配置例子:

  1. apiVersion: "config.istio.io/v1alpha2"
  2. kind: authorization
  3. metadata:
  4. name: authinfo
  5. namespace: istio-system
  6. spec:
  7. subject:
  8. user: source.user | request.auth.token[user] | ""
  9. groups: request.auth.token[groups]
  10. properties:
  11. iss: request.auth.token["iss"]
  12. action:
  13. namespace: destination.namespace | "default"
  14. service: destination.service | ""
  15. path: request.path | "/"
  16. method: request.method | "post"
  17. properties:
  18. version: destination.labels[version] | ""

Action

Action 定义了“如何访问资源”。

字段类型描述
namespacestring命名空间
servicestring服务名称
methodstring请求方法
pathstring服务的 HTTP RestAPI
propertiesmap<string,istio.policy.v1beta1.Value>其他属性数据

Subject

Subject 包括用户身份识别属性

字段类型描述
userstring用户名称或 ID
groupstring认证的用户组,groups 可以从 JWT 断言或用户签名中获得。创建模版事例时可以指定。
propertiesmap<string,istio.policy.v1beta1.Value>其他属性数据

Template

Authorization 模版定义 Istio 中策略执行的参数。启动 Mixer 可以使用此模版来定义谁可以做什么。在模版中,who 定义了消息主题。what 定义了操作信息。在 Mixer 检查调用期间,将根据请求属性配置这些值,并将这些值传给各个授权适配器来进行决定。

字段类型描述
subjectSubject主题包括用户身份识别的属性列表
actionAction操作定义了如何访问资源

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 字段并传给适配器。

字段类型描述
stringValuestring (oneof)STRING 类型的值
int64Valueint64 (oneof)INT64 类型的值
doubleValuedouble (oneof)DOUBLE 类型的值
ipAddressValueistio.policy.v1beta1.IPAddress (oneof)IPAddress 类型的值
timestampValueistio.policy.v1beta1.TimeStamp (oneof)TIMESTAMP 类型的值
durationValueistio.policy.v1beta1.Duration (oneof)DURATION 类型的值
emailAddressValueistio.policy.v1beta1.EmailAddress (oneof)EmailAddress 类型的值
dnsNameValueistio.policy.v1beta1.DNSName (oneof)DNSName 类型的值
uriValueistio.policy.v1beta1.Uri (oneof)Uri类型的值