随笔分类 - 微服务安全
摘要:1、Metrics类型 prometheus中定义了四种metrics类型: 1.1、Counter:只增不减的计数器,其值只能在重新启动时递增或重置为零。例如,可以使用计数器表示已服务的请求数、已完成的任务数或错误数。 1.2、Gauge:是一种度量,它表示一个可以任意上下移动的数值。例如,温度或
阅读全文
摘要:1、安装Grafana 1.1、docker安装 1.2、docker-compose.yml version: "3" services: prometheus: image: prom/prometheus:v2.4.3 container_name: 'prometheus' volumes:
阅读全文
摘要:1、Prometheus简介 Prometheus是具有活跃生态系统的开源系统监视和警报工具包。下图是Prometheus的体系结构及其某些生态系统组件。最核心的位置就是Prometheus server,主要的作用就是根据我们的配置去用于收集和存储时间序列数据。Service discovery服
阅读全文
摘要:1、概述 前面我们一直都在学习微服务安全的一些东西,包括微服务本身的API安全、网关的安全,安全中心(认证服务器,权限服务等),怎么实现SSO,然后学习了阿里的Sentinel来实现熔断限流,这些都是跟服务安全相关的一些知识点。做的都是保证服务不出问题的,但是服务不出问题是不可能的,在服务运行的过程
阅读全文
摘要:规则持久化 现在我们配置的规则实际上是在内存中的,如果客户端应用配置中有控制台(dashboard),当流量经过客户端的时候,会把规则同步给控制台;同样当在控制台配置规则后,也会把规则推送给相应的客户端。规则都是存放在两边的内存中,一旦控制台或客户端重启,内存中的规则就消失了。如下图: 我们需要一个
阅读全文
摘要:1、热点参数限流 1.1、何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如: a、商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制 b、用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制 热点
阅读全文
摘要:1、Sentinel注解支持 在学习熔断降级之前,我们先来看一下Sentinel的注解支持,我们使用spring-cloud-starter-alibaba-sentinel依赖,无需额外配置即可使用@SentinelResource注解定义资源。 @SentinelResource 用于定义资源,
阅读全文
摘要:1、Sentinel是什么 Sentinel是阿里巴巴在2018年开源的面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性。 Sentinel里面涉及两个基本概念:资源和规则。a、资源是 Sentinel 的关键概
阅读全文
摘要:前面我们已经完成了通过JWT的认证和授权的改造,可以看到我们的代码中没有认证和授权的过滤器(Filter)了,基本上由SpringSecurity的过滤器来接管了,接下来我们来看一下怎么在SpringSecurity的过滤器链上加上我们自己的逻辑,比如日志和限流。 1、在SpringSecurity
阅读全文
摘要:上节我们使用JWT优化了认证机制,通过令牌可以解析出当前用户是谁,并且这个令牌可以在网关到微服务,微服务和微服务之间传递,现在我们来看一下权限的控制 1、简单的ACL控制 最简单的情况就是ACL(访问控制列表),能干什么都在scope里面,但是scope是针对客户端应用的,无法控制各个用户可以做什么
阅读全文
摘要:1、使用JWT来解决认证中存在的问题 之前说认证中存在的问题是效率低,每次都要取认证服务器进行校验;不安全,传递用户信息是放到请求头中的明文。这两个问题的解决方案就是JWT。JWT官网扫盲连接https://jwt.io/introduction/。 因为我们之前发出去的令牌都是一些无意义的串,而J
阅读全文
摘要:目前为止,我们已经实现了一个基于微服务,前后端分离的架构(前端服务使用SpringBoot模拟),如上图;并且在网关上做了限流、认证、审计、授权等安全机制;在前端做了SSO单点登陆。 但是目前的架构还是有一些问题的: 1、限流: 在前面网管安全我们也说过网关上不要做细粒度的限流,主要为服务器硬件设备
阅读全文
摘要:1、修改项目使其基于浏览器cookie的SSO 1.1、修改回调方法,获得到token后,由存放到session改为存放到cookie /** * 回调方法 * 接收认证服务器发来的授权码,并换取令牌 * * @param code 授权码 * @param state 请求授权服务器时发送的sta
阅读全文
摘要:1、access_token的有效期 我们知道 token的有效期,是控制登陆一次能访问多长时间微服务。那么access_token一般设置多长时间比较好呢?因为有access_token可以直接访问微服务,而不需要再次认证,所以access_token不建议设置很长的有效期,一般为一到两个小时,因
阅读全文
摘要:1、两个session,三个有效期 在上一节,实现的其实是基于session的sso,在该方案中有两个session,一个是客户端应用的session,一个是认证服务器的sessioin。一共有三个有效期,两个session的有效期,还有一个token令牌的有效期。他们的作用是如下: 1.1、客户端
阅读全文
摘要:1、OAuth2四种模式 1.1、密码模式 这也是我们之前一直使用的模式,流程如下;这种模式下,用户敏感信息直接泄漏给了客户端应用,因此这种模式只能用于客户端应用是我们自己开发的。因此密码模式一般用于自己开发的App或单页面应用。 1.2、授权码模式 授权码模式是四种模式中最繁琐也是最安全的一种模式
阅读全文
摘要:1、前后端分离架构 1.1、前后端半分离 工作流程大致是,访问html页面,加载css、js等静态资源,加载到浏览器时,js会发送一些ajax请求由nginx转发到后端服务器,后端服务器给出相应的json数据,页面解析Json数据,通过Dom操作渲染页面。 在这样的架构下,存在一些明显的弊端: SE
阅读全文
摘要:1、当前项目存在的问题 在前面我们已经完成了一个基于Oauth2认证和授权的流程(如上图)。但是到现在还没有进入到微服务的环境下,如果资源服务器(订单服务),不仅仅是一个单一服务。而是几十个微服务,并且每个微服务都是一个集群,在这样一个流程中存在如下问题: 1.1、安全处理和业务逻辑耦合,增加了复杂
阅读全文

浙公网安备 33010602011771号