istio 认证:对等身份认证+服务请求认证

istio 中有两种不同的身份认证方式:

  1. 基于 mTLS 的对等身份认证 PeerAuthentication
  2. 基于 JWT(JSON Web Token)令牌的服务请求认证 RequestAuthentication

对等身份认证 PeerAuthentication

概念

  • 提供服务到服务的认证
  • 服务网格的主要场景就是服务到服务的认证
  • 基于双向 TLS 实现对等身份认证

证书获取流程

在这里插入图片描述

  1. Envoy 向 pilot-agent 发起一个 SDS (Secret Discovery Service) 请求,要求获取自己的证书和私钥
  2. Pilot-agent 生成私钥和 CSR(Certificates Signing Request,证书签名请求),向 Istiod 发送证书签发请求,请求中包含 CSR 和该 pod 中服务的身份信息
  3. Istiod 根据请求中服务的身份信息(Service Account)为其签发证书,将证书返回给 Pilot-agent
  4. Pilot-agent 将证书和私钥通过 SDS 接口返回给 Envoy

配置定义

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:name: testnamespace: test
spec:selector:matchLabels:app: testmtls:mode: STRICTportLevelMtls:3001:mode: STRICT
  • selector 选择器

    • istio 通过 selector 选择认证策略作用的负载
    • selector 可以为空,表示该认证策略配置给指定命名空间或服务网格全局
    selector:matchLabels:app: test
    
  • mtls 认证配置
    PeerAuthentication 核心配置,定义双向认证的模式,支持以下三种模式:

    • STRICT:典型用法,只接收双向 TLS 的流量
    • PERMISSIVE(istio 默认策略):既可以接收双向 TLS 流量,也可以接收飞加密流量
    • DISABLE:禁用双向 TLS
    • UNSET:继承上一级范围内配置的模式
    mtls:mode: STRICT
    
  • portLevelMtls
    给负载的端口配置认证策略(一个负载有多个端口,可以灵活配置端口粒度的认证策略)

    protLevelMtls:3001:mode: STRICT
    

作用范围

istio 中可以定义多种范围的认证策略,分别是全服务网格范围、命名空间范围、工作负载范围,默认全服务网格范围和命名空间范围的认证策略只能配置一个,如果多个则以最早定义的策略为准(工作负载同上)

  • 服务网格统一认证策略
    根命名空间:istio-system,selector 为空
    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:name: mesh_tlsnamespace: istio-system
    spec:mtls:mode: STRICT
    
  • 命名空间统一认证策略
    指定命名空间:test,selector
    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:name: test_tlsnamespace: test
    spec:mtls:mode: STRICT
    
  • 负载粒度认证策略
    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:name: test_tlsnamespace: test
    spec:selector:matchLabels:app: testmtls:mode: STRICT
    
  • 多粒度认证策略叠加
    对于一个工作负载同时只有一个认证策略生效,如果存在多个生效的策略,则优先级为:负载范围 > 命名空间范围 > 全服务网格范围
    举例:如果要使大多数负载启用双向 TLS,个别禁用双向 TLS,可以使用如下的多粒度叠加策略
    以下两个策略,第一个表示 test 命名空间所有负载启用双向 TLS,第二个表示 label 为 enable 的负载禁用双向 TLS。不用一个一个为需要双向 TLS 的负载添加认证策略
    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:name: enable_tlsnamespace: test
    spec:mtls:mode: STRICT
    ---
    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:name: disable_tlsnamespace: test
    spec:selector:matchLabels:app: enablemtls:mode: STRICT
    
  • 端口粒度认证策略
    以下示例表示只在3001端口定义 STRICT 模式
    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:name: port_tlsnamespace: test
    spec:selector:matchLabel:app: portprotLevelMtls:3001:mode: STRICT
    

服务请求认证 RequestAuthentication

  • 提供对最终用户的认证,用于认证请求的最终用户或者设备
  • 在 istio 中一般通过 JWT 方式实现请求级别的验证

istio JWT 的认证流程

在这里插入图片描述

  1. 客户端连接授权/认证服务,提供账号密码
  2. 服务端验证账号密码,生成 JWT 令牌,使用私钥签名,向客户端返回生成的 JWT 令牌

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# SixLabors.ImageSharp.Drawing的多种用途

生成验证码 /// <summary> /// 生成二维码 /// </summary> /// <param name"webRootPath">wwwroot目录</param> /// <param name"verifyCode">验证码</param> /// <param name"width">图片宽度</…

mysql 中in 和exists 的区别

左边大表用in、左边小表用exists in 适用于左边大表&#xff0c;右边小表。 exists 适用于左边小表&#xff0c;右边大表。 不管是用in&#xff0c;还是exists关键字&#xff0c;其核心思想都是用小表驱动大表。 in 适用于左边大表&#xff0c;右边小表。 exists 适用于左边小…

git仓库迁移,同步分支代码,并且去除仓库的历史提交记录

将原仓库迁移到一个新的仓库&#xff0c;并且不保留原仓库的历史提交记录。 1、创建新git仓库&#xff1a;全新的空git仓库。 2、将新仓库克隆到本地&#xff1a; git clone <新仓库的url> 3、将旧仓库master分支的代码合并到新仓库的master分支&#xff1a; 1、git…

【06】GeoScene海图或者电子航道图数据自动化质检

1 S-58错误管理器验证产品 在你编辑数据时进行快速的质量检查可以使用S-58错误管理器&#xff0c;S-58错误管理器工具允许您使用IHO S-58验证标准来验证海事数据库中的产品。你可以验证整个产品&#xff0c;或验证产品的当前范围。 1.1验证产品 使用S-58错误管理器工具完成以…

轻松实现 Linux 搭建 KMS 服务器,想做什么就做什么(附所有资料)

轻松实现 Linux 搭建 KMS 服务器,想做什么就做什么(附所有资料)。 支持产品: 下载 vlmcsd 下载文件并解压,把 binaries\Linux\intel\static\ 下的 vlmcsd-x64-musl-static 上传至 VPS/usr/bin/ 目录下,并改名为 vlmcsd。 给予执行权限 chmod +x /usr/bin/vlmcsd开启KM…

springboot整合shiro实现前后端分离,兼容最新的jakarta的依赖包(片尾推荐当前最好用的权限框架)

1.简单的用法如下ini realm方式 //1.创建数据源RealmDefaultSecurityManager defaultSecurityManager new DefaultSecurityManager();Ini ini Ini.fromResourcePath("classpath:shiro.ini");defaultSecurityManager.setRealm(new MyRealm()); defaultSecurityMana…

微信开发工具修改编译一直报Cannot read property ‘call‘ of undefined?

我个人的解决方法 更新HbuilderX和微信小程序开发者工具到最新版&#xff0c;微信开发者工具-设置-本地设置-调试基础库也换成最新的3.2.4&#xff0c;打开又报错&#xff0c; 把manifest.json文件内的 “mp-weixin” : {“libVersion”: “latest”}配置上就好了 如果不能解…

Axure基础

软件&#xff1a; 简单交互动效 动态面板 显示和隐藏 表单元件 表格设计 内联框架 导航菜单 元件交互样式 滚动屏幕与弹幕

java 4.数组

文章目录 4.数组4.1数组的概念4.2 数组的定义4.3 数组的初始化4.4 数组下标的有效范围与常见异常4.5 数组内存分析4.6 二维数组4.6.1 创建二维数组4.6.2 二维数组的赋值4.6.3 多维数组4.6.4 通过二维数组输出不同版式的古诗 4.7 不规则数组4.8 数组的基本操作4.8.1 数组遍历4.8…

数据结构和算法-平衡二叉树(定义 插入 删除 时间复杂度)

文章目录 平衡二叉树总览平衡二叉树的定义平衡二叉树的插入调整最小不平衡子树在A的左孩子的左子树中插入导致不平衡在A的右孩子的右子树中插入导致不平衡上述两种的代码思路在A的左孩子的右子树中插入导致不平衡在A的右孩子的左子树中插入导致不平衡 填个坑练习查找效率分析小…

锁相放大器(LIA)基本原理

本文介绍锁相放大器(LIA)基本原理。 锁相放大器(LIA)&#xff0c;英文名称&#xff1a;Lock-In Amplifier&#xff0c;在微弱信号检测领域使用非常广泛&#xff0c;比如科研电生理信号测量&#xff0c;传感器信号测量等。本文从理论上分析锁相放大器(LIA)基本原理。 1.基本概…

vivado生成时钟分析

生成的时钟 本节讨论生成的时钟&#xff0c;包括&#xff1a; •关于生成的时钟 •用户定义的生成时钟 •自动衍生时钟 •自动衍生时钟 关于生成的时钟 生成的时钟在设计内部由称为时钟修改块&#xff08;用于例如MMCM&#xff09;&#xff0c;或者通过一些用户逻辑。生…

如何在Linux中查看正在运行的进程以及过滤特定端口和进程名称

在Linux系统中&#xff0c;管理和监控正在运行的进程是非常重要的。以下是一些常用的命令和技巧&#xff0c;帮助你查看、筛选和管理Linux中的进程。 1. 查看所有正在运行的进程 使用ps命令 ps命令是查看进程状态的基本工具。以下是一些常见的用法&#xff1a; 显示当前终端…

NFS搭建

离线环境&#xff0c;提前在有网络的服务器上下载好需要的软件包 yum -y install nfs-utils rpcbind --downloadonly --downloaddir /root/nfs zip -r nfs.zip nfs/ registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0 #nfs 安装 unzip nfs.zi…

mysql 表锁 行锁

目录 表锁&#xff08;Table Lock&#xff09; 行锁&#xff08;Row Lock&#xff09; 进一步通过举例解释 update操作走的是什么锁 表锁示例&#xff1a; 行锁示例&#xff1a; MySQL 中常见的锁类型包括&#xff1a; 表锁&#xff08;Table Lock&#xff09; 是针对整个…

redisson 哨兵模式配置

背景&#xff1a;项目redis由集群改为哨兵模式&#xff0c;漏洞扫描未授权访问漏洞&#xff08;CNVD-2019-21763&#xff09;&#xff0c;要求对redis哨兵也设置密码&#xff0c;redisson依赖版本为3.11.5 spring-boot版本为2.1.13。 redisson依赖升级 <dependency>&l…

[JS设计模式]Command Pattern

文章目录 举例说明优点缺点完整代码 With the Command Pattern, we can decouple objects that execute a certain task from the object that calls the method. 使用命令模式&#xff0c;我们可以将执行特定任务的对象与调用该方法的对象解耦。 怎么理解 执行特定任务的对…

基于Java (spring-boot)的课程管理系统

一、项目介绍 ​近年来&#xff0c;随着网络学校规模的逐渐增大&#xff0c;人工书写数据已经不能够处理如此庞大的数据。为了更好的适应信息时代的高效性&#xff0c;一个利用计算机来实现学生信息管理工作的系统将必然诞生。基于这一点&#xff0c;设计了一个学生信息管理系统…

Mybatis基本操作

目录 准备工作 删除操作 预编译SQL 增加操作 获取返回的主键 更新操作 准备工作 准备数据库表 emp创建一个新的springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&#xff09;application.properties中引入数据库连接信息创建对应…

html 内外边距区别以及解释

引入&#xff1a; 我们在之前的学习中学习了边框&#xff0c;我们发现只要是页面的标签元素&#xff0c;都可以实现边框的效果&#xff0c;那么接下来我们来讲解一个比较重要的知识点&#xff0c;边距&#xff0c;边距分为内边距和外边距&#xff0c;它们和边框一起是我们后面学…