如何在Azure DevOps中配置Istio外部认证及授权策略
Istio网关授权策略在Azure DevOps流水线中的实现方案
一、通过Azure DevOps ServiceMesh YAML适配外部认证服务到Istio网格
要在Istio网格中接入外部认证服务,需在Istio安装配置中定义认证提供者,并关联到网关策略:
- 找到Azure DevOps流水线中用于Istio安装/升级的配置文件(通常为
IstioOperator格式),在spec.meshConfig.extensionProviders节点添加外部认证服务的配置,示例如下:
spec: meshConfig: extensionProviders: - name: "external-auth-provider" envoyExtAuthzHttp: service: "auth.yourdomain.com" port: "443" includeRequestHeadersInCheck: ["authorization", "x-request-id"] includeAdditionalHeadersInCheck: x-forwarded-host: ["%REQ(HOST)%"]
- 编写关联该提供者的
AuthorizationPolicy(或RequestAuthentication),指定网关的标签选择器,示例:
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: gateway-external-auth namespace: istio-system spec: selector: matchLabels: istio: ingressgateway action: CUSTOM provider: name: "external-auth-provider" rules: - to: - operation: paths: ["/*"]
- 将上述配置作为自定义配置文件传入Azure DevOps的Istio安装任务,覆盖默认网格配置即可完成适配。
二、在Istio安装期间将AuthorizationPolicy应用到istio-system命名空间
有两种可靠方式实现安装阶段自动部署授权策略:
方式1:通过IstioOperator嵌入资源
直接在IstioOperator配置文件中添加additionalResources节点,将你的AuthorizationPolicy内容嵌入其中,Istio安装时会自动在istio-system命名空间创建该资源:
spec: additionalResources: - apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: your-gateway-authz namespace: istio-system spec: selector: matchLabels: istio: ingressgateway rules: - from: - source: ipBlocks: ["192.168.0.0/16"] to: - operation: methods: ["GET", "POST"]
方式2:Azure DevOps流水线多阶段串联
在流水线中设置两个连续任务:
- 第一阶段:执行Istio安装/升级任务(可使用Azure DevOps官方Istio扩展或
helm upgrade --install命令) - 第二阶段:紧接着调用
kubectl apply任务,指定你的AuthorizationPolicyYAML文件,同时设置--namespace istio-system参数
注意:需确保流水线使用的服务账号拥有
istio-system命名空间下AuthorizationPolicy资源的创建权限。
内容的提问来源于stack exchange,提问作者VarunKM
相关产品推荐
相关产品推荐

