第四章  网关安全

这一章从简单的API的场景过渡到复杂的微服务的场景

4.1 概述

微服务安全面临的挑战:介绍中小企业的一个微服务架构,相比第三章的单体应用的简单的API所面临的哪些挑战

OAuth2协议与微服务安全:介绍OAuth2中的各个角色,以及相互之间的关系,介绍具体的代码实现

微服务网关安全:搭建网关,安全中心,两个微服务,怎么将安全从微服务中解耦出来放到网关上,与OAuth协议联系起来解决微服务安全面临的新的挑战。

4.2 微服务安全面临的挑战

 更多的入口点,更高的安全风险

  单体应用,入口点只有一个,有一个Filter/Interceptor 就能控制所有的安全风险。

  微服务环境下,业务逻辑不再是在一个单一的进程里,分散在很多的进程里。如图有很多的tomcat,每个tomcat都有自己的入口点,所以要防范的攻击面要比原来大得多,风险也高得多。

   性能问题

  单体应用下,所有的业务逻辑 和 安全的信息 都在一个进程里,要验一下用户身份、权限都是在一个进程里完成的。

   微服务环境下,比如在访问一个订单的时候,用户的信息,权限信息,在订单的tomcat 是拿不到的,需要一个远程调用,调一下安全中心认证中心去或者这些信息。每一个请求,不管是外部进来的,还是服务之间的调用,需要安              全校验的时候,这个远程连接所带来的延迟,有可能导致服务产生性能的问题,尤其是对性能极为敏感的服务。

   服务间通讯安全

     单体应用下,如订单调库存,订单调物流,都在一个tomcat里,不需要考虑任何安全问题。

  微服务环境下,订单调物流,需要跨网络,出我的进程,进到另一个进程,需要保证这个通讯也是安全的。

    跨多个微服务的请求难以追踪

   对于一个服务来说,可观测性是一个很重要的指标,可观测性包含了三个方面的意义:

    1、Log  日志,记录了系统发生了什么。 在单体应用里,记录日志很简单,直接在代码里写就可以了。分布式的应用里,每一个进程会单独去记一些日志。比如访问订单请求,订单又去调库存,调价格,日志是分散来记的,日志自己记了日志,库存、价格也是自个记。这时候就需要一个机制把所有的日志串起来。

    2、metrics 指标监控:在一个时间维度上聚合起来的一个数字。当你谈论metrics 的时候,一定要有两个关键要素,第一个就是时间窗口,第二个是一个数字。比如说流量,我们会说在1秒钟有10个请求,一分钟有200个请求,过去三小时下了50个单,我的成交额一天是100万。谈论metrics ,有两个要素,时间窗口,如每秒钟,过去三小时,每一天;第二个就是个数字,30个请求,200个请求,50个订单,100万成交额。这两个聚合起来形成一个metrics 。最典型的metrics 就是流量,每秒钟有多少个请求,在单体应用里很容易就能控制住流量。但是在分布式应用里,可能我的订单能承受的并发量是500,物流能承受的并发量是700,库存能承受的并发量是900。这个时候就需要有一个机制来控制整个的服务的流控,而不是单一的去控制某一个微服务的流控,这也是要解决的一个问题。

    3,Tracing ,日志的聚合是一种Tracing,另外一种就是买吉克斯的Tracing,当一个请求进来,在订单服务花了多长时间,在库存服务花了多长时间,在价格服务花了多长时间,最后一眼能看见整个服务的瓶颈在哪里。

   容器化部署导致的证书和访问控制问题

      ~~

   如何在微服务间共享用户的登录状态

 多语言架构要求每个团队都要有一定的安全经验

Spring Cloud微服务安全实战_4-1_微服务网关安全_概述&微服务安全面临的挑战的更多相关文章

  1. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

  2. Spring Cloud Gateway限流实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. Spring Cloud Sleuth超详细实战

    为什么需要Spring Cloud Sleuth 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元.由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去 ...

  4. spring cloud 入门系列六:使用Zuul 实现API网关服务

    通过前面几次的分享,我们了解了微服务架构的几个核心设施,通过这些组件我们可以搭建简单的微服务架构系统.比如通过Spring Cloud Eureka搭建高可用的服务注册中心并实现服务的注册和发现: 通 ...

  5. Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

    首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入ho ...

  6. Spring Cloud Gateway自定义过滤器实战(观测断路器状态变化)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. Spring Cloud Eureka 自我保护机制实战分析

    前些天栈长在Java技术栈微信公众号分享过 Spring Cloud Eureka 的系列文章: Spring Cloud Eureka 自我保护机制 Spring Cloud Eureka 常用配置 ...

  8. Spring Cloud Alibaba Nacos Discovery 实战

    Nacos 作为服务注册中心,可以快速简单的将服务自动注册到 Nacos 服务端,并且能够动态无感知的刷新某个服务实例的服务列表,为分布式系统提供服务注册与发现功能 一.创建服务 1.创建项目 pom ...

  9. Spring Cloud Alibaba Nacos Config 实战

    Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持.使用 Spring Cloud Alibaba Nacos Config,您可 ...

随机推荐

  1. Django常用知识整理

    Django 的认识,面试题 1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全 ...

  2. JAVA 运行springboot jar包设置classpath

    Java 命令行提供了如何扩展bootStrap 级别class的简单方法. -Xbootclasspath: 完全取代基本核心的Java class 搜索路径.不常用,否则要重新写所有Java 核心 ...

  3. spring 事务 XML

    事务就是AOP的很典型的应用.(原来需要自己写代码前开启关闭事务,现在通过spring的配置) 所以必要要有<aop:config>,<aop:config>里面要有<a ...

  4. vue+element 动态表单验证

    公司最近的项目有个添加动态表单的需求,总结一下我在表单验证上遇到的一些坑. 如图是功能的需求,这个功能挺好实现的,但是表单验证真是耗费了我一些功夫. vue+element在表单验证上有一些限制,必须 ...

  5. 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生

    在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求.因为这样最简单. 其实代码实现大家都知道,就是服务器上有个ServerSocket在某个端口监 ...

  6. springboot 1.4 CXF配置

    启动类: package com.eshore.main; import org.apache.catalina.connector.Connector; import org.apache.coyo ...

  7. 转 OpenCV Mat 数据读写

    转:https://blog.csdn.net/u011520181/article/details/83831866 1.创建 Mat 对象: // 创建一个 320x240 的 8 位无符号型 4 ...

  8. java架构之路-(tomcat网络模型)简单聊聊tomcat(二)

    上节课我们说到的Tomcat,并且给予了一般的tomcat配置,和配置的作用,提到了HTTP/1.1 也就是我们的网络通讯模型,那么HTTP/1.1又代表什么呢.我们来简答看一下. tomcat有四种 ...

  9. GO学习笔记 - 数据校验

    本文主题:基于asaskevich/govalidator实现Golang数据校验 小慢哥的原创文章,欢迎转载 目录 ▪ 一. asaskevich/govalidator介绍 ▪ 二. 字符串匹配 ...

  10. python接口上传图片和文件的方法

    import requests def sendImg(img_path, img_name, img_type='image/jpeg'): """ :param im ...