Per-service mutual TLS authentication enablement
在这个 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相关推荐
- HTTPS双向认证(Mutual TLS authentication)
HTTPS双向认证(Mutual TLS authentication) 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步.单向认证 ...
- OpenShift 4 之Istio-Tutorial (8) 在服务之间配置Mutual TLS双向传输安全
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 在Service Mesh中,两个微服务之间双向传输安全是由Sidecar完成的.如下 ...
- Istio官方文档翻译
本来是有翻译好的文档的,但是当时没打开,不巧是今天给打开了...但是我花了两天的时间翻译了不少,没办法,为了尊重自己的劳动成果,还是贴过来吧... 还是建议大家直接去Istio官方文档中文版. 我只翻 ...
- http_认证机制https加密TLSSSL密钥对(公钥私钥)
文章目录 http_认证机制&https加密&TLS&SSL&密钥对(公钥&私钥) references 更多详情(MDN::HTTP) session& ...
- Oracle LiveLabs实验:Manage and Monitor Autonomous Database
概述 本研讨会中的实验将引导您完成开始使用 Oracle 自治数据库的所有步骤. 首先,您将创建一个 Oracle 自治数据库实例. 然后,您将练习使用自治数据库工具和 API 从不同位置以不同格式加 ...
- 准入控制_Kubernetes动态准入控制示例
准入控制 A walk-through of creating a webhook for Kubernetes dynamic admission control. 创建用于Kubernetes动态 ...
- aws 怎么将密钥转密码_将加密密钥存储在AWS Secrets Manager中
aws 怎么将密钥转密码 "The only secrets are the secrets that keep themselves"- George Bernard Shaw ...
- 基于 OpenSSL 生成自签名证书,数字签名,泛域名证书,ca证书,PKI等
基于 OpenSSL 生成自签名证书_qhh0205-CSDN博客_openssl自签名证书 windows 下 nginx 双向认证自签名证书配置 windows 下 nginx 双向认证自签名证书 ...
- Autosar之自签名证书与CA证书
文章目录 一.安全传输 1.框架 2.如何实现传输安全? 3. 对称加密和非对称加密的区别? 4.伪随机数和真随机数 5.数字签名 -- 验证完整性 & 认证数据来源 6.为什么使用摘要算法的 ...
最新文章
- 黑马程序员-张老师基础加强3-内省
- 在无Yum源的环境安装软件(CentOS)
- 快速记忆python函数-【速学速记】Python的工程化:使用模块
- Caffe: LMDB 及其数据转换
- 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )
- 苹果iPhone被曝跟踪用户位置信息(图)
- 蓝牙协议分析_BLE地址类型
- Yolov1-手把手用自己的数据集训练自己的模型
- celery delay 没反应
- 如何在服务器上部署pdf文件,详解如何在云服务器上部署Laravel.pdf
- [原创]在windows下搭建基于apache的SVN环境
- android小米通知不显示电量,Android开发笔记——小米通知‘坑’ app的通知一直显示在不重要通知里 ......
- ANDROID PAD版本号 PHONE版本号 源代码有什么 差别?
- java盛最多水的容器_Leetcode刷题java之11. 盛最多水的容器(top100)
- mybatis注解开发-动态SQL
- mysql where连接_MySQL连接查询on和where的区别和顺序
- comps电磁场模拟软件_opera电磁仿真软件
- cad2017插入电气符号_电气电气CAD图形符号大全.pdf
- 不格式化U盘的情况下部署WinPE
- spring-task
热门文章
- canny检测matlab,matlab houghlines_matlab canny边缘检测_canny边缘检测simulink
- BeanUtils.populate函数报错
- 纹理--高清设计素材下载
- Linux世界的三种压缩解压方式,zip/unzip方式压缩解压、tar方式压缩解压、jar方式压缩解压暨shopt extglob反选示例
- 【前端】浏览器内核(渲染引擎)有哪些?
- 如何修改服务器网卡mtu,合理设置MTU
- python可视化词云图WordCloud
- yum技巧[Terry]
- Win10语音转为文字的快捷键
- 线性判别分析法(LDA)