istio中文手册
  • 前言
    • 序言
  • 概念原理
    • 什么是服务网格?
    • 后 Kubernetes 时代的应用网络
    • 服务网格架构
      • 服务网格的实现模式
      • Istio 架构解析
    • Sidecar 模式
      • Istio 中的 Sidecar 注入与流量劫持详解
      • Sidecar 的自动注入过程详解
    • 流量管理
      • 流量管理基础概念
      • Istio 中的 Sidecar 的流量路由详解
    • 安全
      • mTLS
  • 数据平面
    • Envoy 中的基本术语
    • Istio sidecar proxy 配置
    • Envoy proxy 配置详解
    • Envoy API
    • xDS 协议解析
      • LDS(监听器发现服务)
      • RDS(路由发现服务)
      • CDS(集群发现服务)
      • EDS(端点发现服务)
      • SDS(秘钥发现服务)
      • ADS(聚合发现服务)
      • HDS(健康发现服务)
    • Envoy 高级 API
      • MS(Metric 服务)
      • RLS(速率限制服务)
  • 安装指南
    • 快速开始
    • Istio 安装
    • 可观察性工具 kiali
  • 配置
    • 流量管理
      • VirtualService
      • DestinationRule
      • Gateway
      • EnvoyFilter
      • Sidecar
      • ServiceEntry
      • WorkloadEntry
      • WorkloadGroup
    • 安全
      • AuthorizationPolicy
      • RequestAuthentication
      • PeerAuthentication
      • JWTRule
  • Istio 生态
    • Istio 生态概述
    • Slime——基于 Istio 的智能服务网格管理器
  • 开发指南
    • Istio 开发环境配置
  • 实践案例
    • Bookinfo 示例
由 GitBook 提供支持
在本页
  • RequestAuthentication
  • 示例
  • 参考

这有帮助吗?

  1. 配置
  2. 安全

RequestAuthentication

RequestAuthentication

RequestAuthentication(请求认证)定义了工作负载支持哪些请求认证方法。如果请求包含无效的认证信息,它将根据配置的认证规则拒绝该请求。不包含任何认证凭证的请求将被接受,但不会有任何认证的身份。

示例

为了限制只对经过认证的请求进行访问,应该伴随着一个授权规则。

例如,要求对具有标签 app:httpbin 的工作负载的所有请求使用 JWT 认证。

apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
  name: httpbin
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
  jwtRules:
  - issuer: "issuer-foo"
    jwksUri: https://example.com/.well-known/jwks.json
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
  rules:
  - from:
    - source:
        requestPrincipals: ["*"]

下一个例子展示了如何为不同的 host 设置不同的 JWT 要求。RequestAuthentication 声明它可以接受由 issuer-foo 或 issuer-bar 签发的 JWT(公钥集是由 OpenID Connect 规范隐性设置的)。

apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
  name: httpbin
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
  jwtRules:
  - issuer: "issuer-foo"
  - issuer: "issuer-bar"
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
  rules:
  - from:
    - source:
        requestPrincipals: ["issuer-foo/*"]
    to:
    - operation:
        hosts: ["example.com"]
  - from:
    - source:
        requestPrincipals: ["issuer-bar/*"]
    to:
    - operation:
        hosts: ["another-host.com"]

你可以对授权策略进行微调,为每个路径设置不同的要求。例如,除了 /healthz,所有路径都需要 JWT,可以使用相同的 RequestAuthentication,但授权策略可以是:

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
  rules:
  - from:
    - source:
        requestPrincipals: ["*"]
  - to:
    - operation:
        paths: ["/healthz"]

参考

上一页AuthorizationPolicy下一页PeerAuthentication

最后更新于3年前

这有帮助吗?

关于 RequestAuthentication 配置的详细用法请参考 。

Istio 官方文档
RequestAuthentication - istio.io