Istio授权

Istio 的 AuthorizationPolicy 是一种安全策略,用于控制在Istio服务网格中谁可以访问哪些服务。它提供了基于角色的访问控制(RBAC),允许定义细粒度的权限,以限制对特定服务、方法和路径的访问。AuthorizationPolicy 使用 Istio 的 Envoy 代理拦截并检查传入的请求,以确保它们满足定义的访问策略。

AuthorizationPolicy 的示例如下:

apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: httpbin-policy
  namespace: bookinfo
spec:
  selector:
    matchLabels:
      app: httpbin
  action: ALLOW
  rules:
  - to:
    - operation:
        paths: ["/delay/*"]

AuthorizationPolicy 的主要属性包括:

  • action: 定义在规则匹配时要执行的操作。它可以是ALLOW(允许访问),DENY(拒绝访问)或CUSTOM(自定义操作,与自定义扩展插件一起使用)。
  • rules: 定义一组访问策略规则。每个规则可以包括以下属性:
  • from: 包含一个或多个源规范,用于定义允许访问的来源。可以包括principals(发起请求的主体,例如用户或服务帐户)和namespaces(发起请求的命名空间)。
  • to: 包含一个或多个目标规范,用于定义允许访问的操作。可以包括methods(允许的HTTP方法,例如GET或POST)和paths(允许访问的路径,可以是精确路径或通配符路径)。
  • when: 包含一组条件,用于定义规则生效的附加约束。例如,您可以使用keyvalues定义请求头匹配。