在这个 Installation guide,我们将展示如何在sidecars间启动 mutual TLS authentication 。这个设置将会被网格中的所有sidecars应用。

在这个指导中,你将学会:

  • 注释k8s服务以禁用(或启用)选择性服务的相互TLS身份认证
  • 修改Istio网格配置以排除控制服务的相互TLS身份认证

Before you begin

  • 理解Istio mutual TLS authentication 概念
  • 熟悉 testing Istio mutual TLS authentication.
  • 安装了带有相互TLS身份认证的Istio
  • 启动带Istio sidecar的 httpbin demo 。同时为了测试目的,运行两个 sleep 实例,一个带sidecar,一个不带(在不同的命名空间)。下面命令帮助你启动这些服务。
kubectl apply -f <(istioctl kube-inject -f samples/httpbin/httpbin.yaml)
kubectl apply -f <(istioctl kube-inject -f samples/sleep/sleep.yaml)
kubectl create ns legacy && kubectl apply -f samples/sleep/sleep.yaml -n legacy

在这个初始化安装中,我们期望在default命名空间的sleep 实例能够和httpbin服务通信,而另一个在legacy 命名空间的不能,因为它没有进行mTLS的sidecar。

kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c sleep -- curl http://httpbin.default:8000/ip -s
{"origin": "127.0.0.1"
}
kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name} -n legacy) -n legacy -- curl http://httpbin.default:8000/ip -s
command terminated with exit code 56

Disable mutual TLS authentication for “httpbin” service

如果我们想要为httpbin(在8000端口)关闭mTLS,而不改变网格的身份认证设置,我们可以通过为httpbin 服务定义添加下面这个注解。

annotations:auth.istio.io/8000: NONE

为了快速测试,运行 kubectl edit svc httpbin 并在其上添加注解(或者你可以编辑原始的httpbin.yaml文件并重新应用)。更改被应用后, 来自sleep.legacy请求现在应该成功了,因为mTLS被取消了。

注意:

  • 注解可以产生相反的效果,换句话说,通过使用 MUTUAL_TLS 注解值而不是 NONE为服务开启mTLS。人们能够使用这个注解为选择性的服务启用mTLS,而不是在整个网格中启用。
  • 注解可以针对没有sidecar的服务,通知Istio当客户端对那个服务产生调用时不采用mTLS。实际上,如果一个系统有一些不被Istio管理的服务(没有sidecar),这是修复对这些服务的通信问题的一个推荐做法。

Disable mutual TLS authentication for control services

因为我们不能注解控制服务,如API server,在 Istio 0.3中,我们推荐 mtls_excluded_services 的网格配置来指定那些不应使用mTLS的服务。如果你的应用需要和任何控制服务进行通信,这必须使用全限定域名。

在demo的这部分,我们将展示这个字段的影响。
默认情况下(0.3或之后版本),这个list包含 kubernetes.default.svc.cluster.local (在通常安装中是API server服务的名称)。你可以通过运行下列命令来确认:

kubectl get configmap -n istio-system istio -o yaml | grep mtlsExcludedServices
mtlsExcludedServices: ["kubernetes.default.svc.cluster.local"]

然后期望 kubernetes.default 服务能够成功请求:

kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c sleep -- curl https://kubernetes.default:443/api/ -k -s
{"kind": "APIVersions","versions": ["v1"],"serverAddressByClientCIDRs": [{"clientCIDR": "0.0.0.0/0","serverAddress": "104.199.122.14"}]
}

现在,运行 kubectl edit configmap istio -n istio-system 然后清除mtlsExcludedServices ,并且重启pilot:

kubectl get pod $(kubectl get pod -l istio=pilot -n istio-system -o jsonpath={.items..metadata.name}) -n istio-system -o yaml | kubectl replace --force -f -

上面的测试请求失败并返回code 35, 因为sleep 的sidecar再次开始使用mTLS了:

kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c sleep -- curl https://kubernetes.default:443/api/ -k -s
command terminated with exit code 35

Per-service mutual TLS authentication enablement相关推荐

  1. HTTPS双向认证(Mutual TLS authentication)

    HTTPS双向认证(Mutual TLS authentication) 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步.单向认证 ...

  2. OpenShift 4 之Istio-Tutorial (8) 在服务之间配置Mutual TLS双向传输安全

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 在Service Mesh中,两个微服务之间双向传输安全是由Sidecar完成的.如下 ...

  3. Istio官方文档翻译

    本来是有翻译好的文档的,但是当时没打开,不巧是今天给打开了...但是我花了两天的时间翻译了不少,没办法,为了尊重自己的劳动成果,还是贴过来吧... 还是建议大家直接去Istio官方文档中文版. 我只翻 ...

  4. http_认证机制https加密TLSSSL密钥对(公钥私钥)

    文章目录 http_认证机制&https加密&TLS&SSL&密钥对(公钥&私钥) references 更多详情(MDN::HTTP) session& ...

  5. Oracle LiveLabs实验:Manage and Monitor Autonomous Database

    概述 本研讨会中的实验将引导您完成开始使用 Oracle 自治数据库的所有步骤. 首先,您将创建一个 Oracle 自治数据库实例. 然后,您将练习使用自治数据库工具和 API 从不同位置以不同格式加 ...

  6. 准入控制_Kubernetes动态准入控制示例

    准入控制 A walk-through of creating a webhook for Kubernetes dynamic admission control. 创建用于Kubernetes动态 ...

  7. aws 怎么将密钥转密码_将加密密钥存储在AWS Secrets Manager中

    aws 怎么将密钥转密码 "The only secrets are the secrets that keep themselves"- George Bernard Shaw ...

  8. 基于 OpenSSL 生成自签名证书,数字签名,泛域名证书,ca证书,PKI等

    基于 OpenSSL 生成自签名证书_qhh0205-CSDN博客_openssl自签名证书 windows 下 nginx 双向认证自签名证书配置 windows 下 nginx 双向认证自签名证书 ...

  9. Autosar之自签名证书与CA证书

    文章目录 一.安全传输 1.框架 2.如何实现传输安全? 3. 对称加密和非对称加密的区别? 4.伪随机数和真随机数 5.数字签名 -- 验证完整性 & 认证数据来源 6.为什么使用摘要算法的 ...

最新文章

  1. 黑马程序员-张老师基础加强3-内省
  2. 在无Yum源的环境安装软件(CentOS)
  3. 快速记忆python函数-【速学速记】Python的工程化:使用模块
  4. Caffe: LMDB 及其数据转换
  5. 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )
  6. 苹果iPhone被曝跟踪用户位置信息(图)
  7. 蓝牙协议分析_BLE地址类型
  8. Yolov1-手把手用自己的数据集训练自己的模型
  9. celery delay 没反应
  10. 如何在服务器上部署pdf文件,详解如何在云服务器上部署Laravel.pdf
  11. [原创]在windows下搭建基于apache的SVN环境
  12. android小米通知不显示电量,Android开发笔记——小米通知‘坑’ app的通知一直显示在不重要通知里 ......
  13. ANDROID PAD版本号 PHONE版本号 源代码有什么 差别?
  14. java盛最多水的容器_Leetcode刷题java之11. 盛最多水的容器(top100)
  15. mybatis注解开发-动态SQL
  16. mysql where连接_MySQL连接查询on和where的区别和顺序
  17. comps电磁场模拟软件_opera电磁仿真软件
  18. cad2017插入电气符号_电气电气CAD图形符号大全.pdf
  19. 不格式化U盘的情况下部署WinPE
  20. spring-task

热门文章

  1. canny检测matlab,matlab houghlines_matlab canny边缘检测_canny边缘检测simulink
  2. BeanUtils.populate函数报错
  3. 纹理--高清设计素材下载
  4. Linux世界的三种压缩解压方式,zip/unzip方式压缩解压、tar方式压缩解压、jar方式压缩解压暨shopt extglob反选示例
  5. 【前端】浏览器内核(渲染引擎)有哪些?
  6. 如何修改服务器网卡mtu,合理设置MTU
  7. python可视化词云图WordCloud
  8. yum技巧[Terry]
  9. Win10语音转为文字的快捷键
  10. 线性判别分析法(LDA)