服务网格安全体系

服务网格安全框架 Microservice Security Basics 零信任安全 | 什么是零信任网络? 零信任是一种安全模型,其基础是维护严格的访问控制并且默认不信任任何人,即便是已在网络边界内的人。零信任安全 IAAA (Identification and Authentication, Authorization and Accountability Identification: 必须支持多个身份和属性 Your name, username, ID number, employee number, SSN etc. “I am Thor”. Authentication: 必须支持多种认证方式以及委托认证方式 Authorization: 对于单个请求的授权可以在请求路径中的多个点确认 Accountability: 从API中捕获相关安全数据或元数据 服务网格常见安全解决方案 网络级别控制 Network Level Contros local isolation 主机隔离 Network segementation 网络分割 意味着新人底层的服务器及网络设施,信任隔离机制及实现过程且信任网段内的所有组件; SSL/TLS mTLS、spiffe/spire 应用级别控制 Network Level Contros 传统网络令牌认证 Traditional Web Tokens API-oriented Tokens OAuth 2.0 OpenID Connect JWT TokenTypes Opaque tokens Transparent tokens 基于cookie的会话 cookie based sessions SAML Security Assertion Markup Language 一种基于XML开源标准的数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。 Envoy的身份认证机制 传输认证 传输认证:即服务组件的认证,它基于双向TLS实现传输认证(即mTLS),包括双向认证、信道安全和证书自动管理;每个服务都需要有其用于服务间双向认证的标识,以实现此种认证机制;...

 ·  · 

kubernetes应用 - Traefik Ingress Controller

Kubernetes Ingress Kubernetes Ingress是路由规则的集合,这些规则控制外部用户如何访问Kubernetes集群中运行的服务。 在Kubernetes中,有三种方式可以使内部Pod公开访问。 NodePort:使用Kubernetes Pod的NodePort,将Pod内应用程序公开到每个节点上的端口上。 Service LoadBalancer:使用Kubernetes Service,改功能会创建一个外部负载均衡器,使流量转向集群中的Kubernetes Pod。 Ingress Controller: Node Port是在Kubernetes集群中每个节点(Node)上开放端口,Kubernetes直接将流量转向集群中Pod。Kubernetes集群中使用NodePort,则需要编辑防火墙规则,但是NodePort是范围在Kubernetes集群中默认设置的范围为 30000–32767,最终导致流量端口暴露在非标准端口之上。 LoadBalancer一般应用于云厂商提供的Kubernetes服务,如果自行在机器上部署Kubernetes集群,则需要自行配置LoadBalancer的实现, Kubernetes Ingress,为Kubernetes中的抽象概念,实现为第三方代理实现,这种三方实现集合统称为Ingress Controller。Ingress Controller负责引入外部流量并将流量处理并转向对应的服务。 Kubernetes IngressController功能实现 上面只是说道,在Kubernetes集群中,如何将外部流量引入到Kubernetes集群服务中。 负载均衡 无论在Kubernetes集群中,无论采用什么方式进行流量引入,都需要在外部负载均衡完成,而后负载均衡将流量引入Kubernetes集群入口或内部中, 通常情况下,NodePort方式管理繁琐,一般不用于生产环境。 服务的Ingress选择 Kubernetes Ingress是选择正确的方法来管理引入外部流量到服务内部。一般选择也是具有多样性的。 Nginx Ingress Controller,Kubernetes默认推荐的Ingress,弊端①最终配置加载依赖config reload,②定制化开发较难,配置基本来源于config file。 Envoy & traefik api网关,支持tcp/udp/grpc/ws等多协议,支持流量控制,可观测性,多配置提供者。 云厂商提供的Ingress。AWS ALB,GCP GLBG/GCE,Azure AGIC Traefik介绍 traefik-现代反向代理,也可称为现代边缘路由;traefik原声兼容主流集群,Kubernetes,Docker,AWS等。官方的定位traefik是一个让开发人员将时间花费在系统研发与部署功能上,而非配置和维护。并且traefik官方也提供自己的服务网格解决方案 作为一个 modern edge router ,traefik拥有与envoy相似的特性 基于go语言研发,目的是为了简化开发人员的配置和维护 tcp/udp支持 http L7支持 GRPC支持 服务发现和动态配置 front/ edge prory支持 可观测性 流量管理 … traefik 术语 要了解trafik,首先需要先了解一下 有关trafik中的一些术语。 EntryPoints 入口点,是可以被下游客户端连接的命名网络位置,类似于envoy 的listener和nginx的listen services 服务,负载均衡,上游主机接收来自traefik的连接和请求并返回响应。 类似于nginx upstream envoy的clusters Providers 提供者,提供配置文件的后端,如file,kubernetes,consul,redis,etcd等,可使traefik自动更新 routers 路由器,承上启下,分析请求,将下游主机的请求处理转入到services middlewares: 中间件,在将下游主机的请求转入到services时进行的流量调整 在Kubernetes中使用traefik网关作为Ingress Traefik于2019年9月发布2....

 ·  · 

tomcat使用

tomcat介绍 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它早期的名称为catalina,后来由Apache、Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat。 java体系结构 java程序设计语言(编程) java类文件格式 java api java vm java 纯面向对象语言 obj:以指令为中心,围绕指令组织数据 面向对象:以数据为中心,围绕数据组织指令 Tomcat核心组件: Catalina:servlet container在tomcat中用于实现servlet代码的被称作Catalina Coyote:一个http连接器,能够接受http请求并相应http请求的web服务器 jasper:JSP Engine jsp翻译器 Tomcat组成部分 Tomcat支持Servlet和JSP1的规范,它由一组嵌套的层次和组件组成,一般可分为以下四类: 顶级组件:位于配置层次的顶级,并且彼此间有着严格的对应关系; 连接器:连接客户端(可以是浏览器或Web服务器)请求至Servlet容器, 容器:包含一组其它组件; 被嵌套的组件:位于一个容器当中,但不能包含其它组件; tomcat常见组件 服务器(server) 服务器(server)顶级组件:Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。 server相关属性 className:用于实现此Server容器的完全限定类的名称,默认为 org.apache.cataliana.core.StandardServer; port:接收shutdown指令的端口,默认仅允许通过本机访问,默认为8005 shutdown:发往此Server用于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN 服务(service) Service主要用于关联一个引擎和此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收入站请求将其转发至关联的引擎进行处理,因此,Service要包含一个引擎(Engine)、一个或多个连接器(Connector)。 定义一个名为Catalina的Service,此名字也会产生相关的日志信息时记录在日志文件当中。 xml 1 <Service name="Catalina"> Service相关属性 className:用于实现service的类名,一般都是 org.apache.catalina.core.StandardService name:此服务的名称,默认为Catalina。 连接器(connectors) 分析并接收用户请求,并把它转换成本地jsp文件代码的请求。负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序,通常指的是接收客户发来请求的位置及服务器端分配的端口。 默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接器。 进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类: Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache IIS Nginx。 Tomcat作为独立服务器:请求来自与web浏览器。 Tomcat应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求,一个引擎可以有一个或多个连接器,以适应多种请求方式。 定义连接器可以使用多种属性,有些属性也只是适用于某种特定的连接器类型, 一般来说,常见于server.xml中的连接器类型通常有4种: HTTP连接器 SSL连接器 AJP 1.3连接器 proxy连接器 xml 1 2 3 <Connector port="8080" protocol="HTTP/1....

 ·  · 

tomcat修改日志目录

修改logging.properties conf /usr/local/apache-tomcat-8.5.32/conf/logging.properties bash 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ 1catalina.org.apache.juli.AsyncFileHandler.level = FINE 1catalina.org.apache.juli.AsyncFileHandler.directory = /data/logs 1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 2localhost.org.apache.juli.AsyncFileHandler.level = FINE 2localhost.org.apache.juli.AsyncFileHandler.directory = /data/logs 2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. 3manager.org.apache.juli.AsyncFileHandler.level = FINE 3manager.org.apache.juli.AsyncFileHandler.directory = /data/logs 3manager.org.apache.juli.AsyncFileHandler.prefix = manager. 4host-manager.org.apache.juli.AsyncFileHandler.level = FINE 4host-manager....

 ·  · 

Apache httpd配置集锦

httpd下载地址:Historical releases 安装httpd bash 1 2 3 4 5 6 7 $ ls ABOUT_APACHE buildconf emacs-style INSTALL LICENSE os srclib acinclude.m4 CHANGES httpd.dep InstallBin.dsp Makefile.in README support Apache.dsw config.layout httpd.dsp LAYOUT Makefile.win README.platforms test build configure httpd.mak libhttpd.dep modules README-win32.txt VERSIONING BuildAll.dsp configure.in httpd.spec libhttpd.dsp NOTICE ROADMAP BuildBin.dsp docs include libhttpd.mak NWGNUmakefile server httpd 编译参数 参数选项 注释说明 ./configure 配置源代码树 –prefix=/usr/local/apache2 体系无关文件的顶级安装目录PREFIX,也就Apache的安装目录。 –enable-module=so [-enable-deflate] 打开so模块,so模块是用来提DSO支持的apache核心模块 –enable-deflate=shared [-enable-expires] 支持网页压缩 –enable-expires=shared [-enable-rewrite] 支持缓存过期控制 –enable-rewrite=shared 支持URL重写 –enable-cache 支持缓存 –enable-file-cache 支持文件缓存 –enable-mem-cache 支持记忆缓存 –enable-disk-cache 支持磁盘缓存 –enable-static-support 支持静态连接(默认为动态连接) –enable-static-htpasswd 使用静态连接编译htpasswd–管理用于基本认证的用户文件 –enable-static-htdigest 使用静态连接编译htdigest–管理用于摘要认证的用户文件 –enable-static-rotatelogs 使用静态连接编译rotatelogs–滚动Apache日志的管道日志程序 –enable-static-logresolve 使用静态连接编译logresolve–解析Apache日志中的IP地址为主机名 –enable-static-htdbm 使用静态连接编译htdbm–操作DBM密码数据库 –enable-static-ab 使用静态连接编译ab–Apache服务器性能测试工具 –enable-static-checkgid 使用静态连接编译checkgid –disable-cgid 禁止用一个外部CGI守护进程执行CGI脚本 –disable-cgi 禁止编译CGI版本的PHP –disable-userdir 禁止用户从自己的主目录中提供页面 –with-mpm=worker 让apache以worker方式运行 –enable-authn-dbm=shared 对动态数据库进行操作。Rewrite时需要。 以下是分门别类的更多参数注解,与上面的会有重复 用于apr的configure脚本的选项: 可选特性 –enable-experimental-libtool 启用试验性质的自定义libtool –disable-libtool-lock 取消锁定(可能导致并行编译崩溃) –enable-debug 启用调试编译,仅供开发人员使用。 –enable-maintainer-mode 打开调试和编译时警告,仅供开发人员使用。 –enable-profile 打开编译profiling(GCC) –enable-pool-debug[=yes|no|verbose|verbose-alloc|lifetime|owner|all] 打开pools调试 –enable-malloc-debug 打开BeOS平台上的malloc_debug –disable-lfs 在32-bit平台上禁用大文件支持(large file support) –enable-nonportable-atomics 若只打算在486以上的CPU上运行Apache,那么使用该选项可以启用更加高效的基于互斥执行 的原子操作。 –enable-threads 启用线程支持在线程型的MPM上必须打开它 –disable-threads 禁用线程支持,如果不使用线程化的MPM,可以关闭它以减少系统开销。 –disable-dso 禁用DSO支持 –enable-other-child 启用可靠子进程支持 –disable-ipv6 禁用IPv6支持 **可选的额外程序包** –with-gnu-ld 指定C编译器使用GNU ld –with-pic 只使PIC/non-PIC对象[默认为两者都使用] –with-tags[=TAGS] 包含额外的配置 –with-installbuilddir=DIR 指定APR编译文件的存放位置(默认值为:’${datadir}/build’) –without-libtool 禁止使用libtool连接库文件 –with-efence[=DIR] 指定Electric Fence的安装目录 –with-sendfile 强制使用sendfile(译者注:Linux2....

 ·  ·