备考ICA----Istio实验15---开启 mTLS 自动双向认证实验
备考ICA----Istio实验15—开启mTLS自动双向认证实验
在某些生成环境下,我们希望微服务和微服务之间使用加密通讯方式来确保不被中间人代理.
默认情况下Istio 使用 PERMISSIVE模式配置目标工作负载,PERMISSIVE模式时,服务可以使用明文通讯.为了只允许双向 TLS 流量,需要将配置更改为 STRICT 模式。
1. 环境准备
kubectl create ns kim
kubectl create ns trump
kubectl create ns baiden
为3个命名空间创建服务
其中trump和baiden2个命名空间是有Istio sidecar注入的
kubectl apply -f <(istioctl kube-inject -f istio/samples/httpbin/httpbin.yaml) -n trump
kubectl apply -f <(istioctl kube-inject -f istio/samples/httpbin/httpbin.yaml) -n baiden
kubectl apply -f <(istioctl kube-inject -f istio/samples/sleep/sleep.yaml) -n trump
kubectl apply -f <(istioctl kube-inject -f istio/samples/sleep/sleep.yaml) -n baiden
kim命名空间中的pod是没有Istio注入的
kubectl apply -f istio/samples/httpbin/httpbin.yaml -n kim
kubectl apply -f istio/samples/sleep/sleep.yaml -n kim
确认容器的sidecar注入情况
kubectl get pods -A -l app=httpbin
kubectl get pods -A -l app=sleep

访问测试
for from in trump baiden kim;do \for to in trump baiden kim;do \kubectl exec deploy/sleep -n ${from} \-- curl http://httpbin.${to}:8000/ip -s -o /dev/null \-w "${from}.sleep to ${to}.httpbin: %{http_code}\n";\done;\
done
可以看到由于现在没对访问实时mtls所有所有访问都是成功的.

2. 所有命名空间mtls
对全局做mtls限制.
mtls/strict.yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:name: defaultnamespace: "istio-system"
spec:mtls:mode: STRICT
生效配置
kubectl apply -f mtls/strict.yaml
访问测试
for from in trump baiden kim;do \for to in trump baiden kim;do \kubectl exec deploy/sleep -n ${from} \-- curl http://httpbin.${to}:8000/ip -s -o /dev/null \-w "${from}.sleep to ${to}.httpbin: %{http_code}\n";\done;\
done
可以看到做了mtls后,对trump和baiden两个由Istio管控的可以互相访问,并可以访问没有被管理的kim空间.
但没有被Istio管理的kim空间是无法访问由Istio管理的trump和baiden中的httpbin服务.

清理全局全局认证策略,为下一个实验做准备
kubectl delete pa -n istio-system default

3. 命名空间级别mtls
仅对trump命名看空间进行mtls验证
trump.yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:name: defaultnamespace: trump
spec:mtls:mode: STRICT
部署生效
kubectl apply -f trump.yaml

测试访问
for from in trump baiden kim;do \for to in trump baiden kim;do \kubectl exec deploy/sleep -n ${from} \-- curl http://httpbin.${to}:8000/ip -s -o /dev/null \-w "${from}.sleep to ${to}.httpbin: %{http_code}\n";\done;\
done
测试下来由于trump对mtls进行了限制,因为trump和baiden都是由Istio进行管理,trump的sleep和baiden的httpbin访问trump的httpbin都是正常.
kim是非Istio管理,当kim.sleep访问trump的httpbin时因为没有mtls被拒绝

恢复配置
kubectl delete pa -n trump default

4. Label Selector级别mtls限制
仅对baiden的httpbin进行mtls限制
mtls/labelselector.yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:name: httpbinnamespace: "baiden"
spec:selector:matchLabels:app: httpbinmtls:mode: STRICT
应用配置
kubectl apply -f mtls/labelselector.yaml
kubectl get pa -n baiden

访问测试
for from in trump baiden kim;do \for to in trump baiden kim;do \kubectl exec deploy/sleep -n ${from} \-- curl http://httpbin.${to}:8000/ip -s -o /dev/null \-w "${from}.sleep to ${to}.httpbin: %{http_code}\n";\done;\
done
此时:
trump因为是受Istio管理,访问baiden的httpbin时带有证书,访问被允许
baiden因为是受Istio管理,访问baiden的httpbin时带有证书,访问被允许
kim因为不受Istio管理,访问baiden的httpbin时未带有证书,访问被拒绝

清除配置
kubectl delete pa -n baiden httpbin

5. 端口级别mtls
使用portLevelMtls参数来实现端口级别的mtls限制.即除了8080端口,都使用mtls
mtls/prot.yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:name: httpbinnamespace: "baiden"
spec:selector:matchLabels:app: httpbinmtls:mode: STRICTportLevelMtls:8080:mode: DISABLE
部署生效
kubectl apply -f mtls/prot.yaml
访问测试
for from in trump baiden kim;do \for to in trump baiden kim;do \kubectl exec deploy/sleep -n ${from} \-- curl http://httpbin.${to}:8000/ip -s -o /dev/null \-w "${from}.sleep to ${to}.httpbin: %{http_code}\n";\done;\
done
此时由于排除的是8080端口,我们访问的是80端口,所以80端口是受mtls管理的:
trump因为是受Istio管理,访问baiden的httpbin时带有证书,访问被允许
baiden因为是受Istio管理,访问baiden的httpbin时带有证书,访问被允许
kim因为不受Istio管理,访问baiden的httpbin时未带有证书,访问被拒绝

6. 策略优先级
开启namespace级别的mtls
kubectl apply -f mtls/trump.yaml

当端口级别的mtls和命名空间级别的发生了冲突时,以更细的规则为准
mtls/trumplabels.yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:name: trumphttpbinnamespace: trump
spec:selector:matchLabels:app: httpbinmtls:mode: DISABLE
生效配置
kubectl apply -f mtls/labelselector.yaml

访问测试
for from in trump baiden kim;do \for to in trump baiden kim;do \kubectl exec deploy/sleep -n ${from} \-- curl http://httpbin.${to}:8000/ip -s -o /dev/null \-w "${from}.sleep to ${to}.httpbin: %{http_code}\n";\done;\
done
因为trump服务级别的httpbin DISABLE生效,所以kim访问trump的httpbin被允许

至此备考ICA----Istio实验15—开启 mTLS 自动双向认证实验完成
相关文章:
备考ICA----Istio实验15---开启 mTLS 自动双向认证实验
备考ICA----Istio实验15—开启mTLS自动双向认证实验 在某些生成环境下,我们希望微服务和微服务之间使用加密通讯方式来确保不被中间人代理. 默认情况下Istio 使用 PERMISSIVE模式配置目标工作负载,PERMISSIVE模式时,服务可以使用明文通讯.为了只允许双向 TLS 流量,…...
Hive SchemaTool 命令详解
Hive schematool 是 hive 自带的管理 schema 的相关工具。 列出详细说明 schematool -help直接输入 schematool 或者schematool -help 输出结果如下: usage: schemaTool-alterCatalog <arg> Alter a catalog, requires--catalogLocation an…...
51单片机入门_江协科技_17~18_OB记录的笔记
17. 定时器 17.1. 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成,无需占用CPU外围IO接口; 定时器作用: (1)用于计时系统,可实现软件计时&…...
xss.pwnfunction-Ah That‘s Hawt
<svg/onloadalert%26%2340%3B1%26%2341%3B> <svg/>是一个自闭合形式 ,当页面或元素加载完成时,onload 事件会被触发,从而可以执行相应的 JavaScript 函数...
Python学习从0开始——005数据结构
Python学习从0开始——005数据结构 一、列表list二、元组和序列三、集合四、字典五、循环技巧六、条件控制七、序列和其它类型的比较 一、列表list 不是所有数据都可以排序或比较。例如,[None, ‘hello’, 10] 就不可排序,因为整数不能与字符串对比&…...
力扣每日一题:LCR112--矩阵中的最长递增路径
题目 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。 示例…...
树莓派部署yolov5实现目标检测(ubuntu22.04.3)
最近两天搞了一下树莓派部署yolov5,有点难搞(这个东西有点老,版本冲突有些包废弃了等等) 最后换到ubuntu系统弄了,下面是我的整体步骤(建议先使能一下ssh(最下面有),结合…...
2024 年最新使用 Wechaty 开源框架搭建部署微信机器人(微信群智能客服案例)
读取联系人信息 获取当前机器人账号全部联系人信息 bot.on(ready, async () > {console.log("机器人准备完毕!!!")let contactList await bot.Contact.findAll()for (let index 0; index < contactList.length; index) {…...
Redis从入门到精通(九)Redis实战(六)基于Redis队列实现异步秒杀下单
↑↑↑请在文章开头处下载测试项目源代码↑↑↑ 文章目录 前言4.5 分布式锁-Redisson4.5.4 Redission锁重试4.5.5 WatchDog机制4.5.5 MutiLock原理 4.6 秒杀优化4.6.1 优化方案4.6.2 完成秒杀优化 4.7 Redis消息队列4.7.1 基于List实现消息队列4.7.2 基于PubSub的消息队列4.7.…...
什么是多路复用器滤波器
本章将更深入地介绍多路复用器滤波器,以及它们如何用于各种应用中。您将了解到多路复用器如何帮助设计人员创造出更复杂的无线产品。 了解多路复用器 多路复用器是一组射频(RF)滤波器,它们组合在一起,但不会彼此加载,可以在输出之…...
Severt和tomcat的使用(补充)
打包程序 在pom.xml中添加上述代码之后打包时会生成war包并且包的名称是test 默认情况打的是jar包.jar里量但是tomcat要求的是war包. war包Tomcat专属的压缩包. war里面不光有.class还有一些tomcat要求的配置文件(web.xml等)还有前端的一些代码(html, css, js) 点击其右边的m…...
JavaEE初阶——多线程(一)
T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程的第一部分:引入线程以及创建多线程的几种方式 此文章是建立在前一篇文章进程的基础上的 如果有不足的或者错误的请您指出! 1.认识线程 我们知道现代的cpu大多都是多核心…...
MongoDB主从复制模式基于银河麒麟V10系统
MongoDB主从复制模式基于银河麒麟V10系统 背景介绍 MongoDB自4.0版本开始已经不再建议使用传统的master/slave复制架构,而是全面采用了复制集(Replica Sets)作为标准的复制和高可用性解决方案。 复制集是MongoDB的一种数据复制和高可用性机制,通过异步同步数据至多个服务…...
Vue使用高德地图
1.在高德平台注册账号 2.我的 > 管理管理中添加Key 3.安装依赖 npm i amap/amap-jsapi-loader --save 或 yarn add amap/amap-jsapi-loader --save 4.导入 AMapLoade import AMapLoader from amap/amap-jsapi-loader; 5.直接上代码,做好了注释(初始化…...
2024-04-07(复盘前端)
---HTML 1.HTMl骨架 html:整个网页 head:网页头部,用来存放给浏览器看的信息,如css body:网页主体,用来存放给用户看的信息,例如图片和文字 2.标题标签中h1标签只能使用一次,其…...
SpringCloud学习(10)-SpringCloudAlibaba-Nacos服务注册、配置中心
Spring Cloud Alibaba 参考文档 Spring Cloud Alibaba 参考文档 nacos下载Nacos 快速开始 直接进入bin包 运行cmd命令:startup.cmd -m standalone 运行成功后通过http://localhost:8848/nacos进入nacos可视化页面,账号密码默认都是nacos Nacos服务注…...
OKCC外呼中心配置的电话系统规则
OKCC外呼中心配置电话系统规则可能涉及多个方面,包括呼叫路由、自动化流程、电话接听策略等。以下是一般步骤及注意事项: 呼叫路由配置: 确定呼叫中心的呼叫路由策略,包括如何分配呼叫给不同的坐席或部门。设置呼叫路由规则&#…...
AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.31-2024.04.05
文章目录~ 1.AutoWebGLM: Bootstrap And Reinforce A Large Language Model-based Web Navigating Agent2.Training LLMs over Neurally Compressed Text3.Unveiling LLMs: The Evolution of Latent Representations in a Temporal Knowledge Graph4.Visualization-of-Thought …...
性能测试工具 ab(Apache Bench)使用详解
Apache Bench (ab) 是一个由 Apache 提供的非常流行的、简单的性能测试工具,用于对 HTTP 服务器进行压力测试。下面是 ab 工具的一些基本使用方法。 安装 在大多数 Unix 系统中,ab 通常作为 Apache HTTP 服务器的一部分预装在系统中。你可以通过在终端…...
智能网联汽车自动驾驶数据记录系统DSSAD数据元素
目录 第一章 数据元素分级 第二章 数据元素分类 第三章 数据元素基本信息表 表1 车辆及自动驾驶数据记录系统基本信息 表2 车辆状态及动态信息 表3 自动驾驶系统运行信息 表4 行车环境信息 表5 驾驶员操作及状态信息 第一章 数据元素分级 自动驾驶数据记录系统记录的数…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...
本地部署drawDB结合内网穿透技术实现数据库远程管控方案
文章目录 前言1. Windows本地部署DrawDB2. 安装Cpolar内网穿透3. 实现公网访问DrawDB4. 固定DrawDB公网地址 前言 在数字化浪潮席卷全球的背景下,数据治理能力正日益成为构建现代企业核心竞争力的关键因素。无论是全球500强企业的数据中枢系统,还是初创…...
