安全策略
在当今数字化时代,系统安全极其重要,本框架针对常见场景进行了诸多安全方面的设计,主要分为网络安全和数据安全两大部分。尽管这些安全策略还远远不够,但聊胜于无,后续还会不断增加更多安全策略。
#
网络安全#
连接限制如果需要对下载速度进行限制,可以设定限流策略,下面的实例进行了下载速率和并发限制:
以上对基本的限流做了演示,还有许多IP方面的策略,例如IP黑白名单、按url设定IP策略、按请求头设定IP策略等等,后续逐步完善更多具体的文档,并对重点内容进行专题描述。
#
跨域请求(CORS)框架支持2中方式设定跨域请求参数:
- 在Controller类或其action方法上通过@EnableCORS注解设置。
- 通过配置文件设置,例如:
然后在应用启动时开启CorsServerModule模块:
#
SSL/TLS支持#
创建证书如果只是让web服务器支持https,只需要下面第一步即可。后面的第2步到第6步是为客户端和服务端建立点对点双向认证的安全通道。
1)创建server的keystore文件,生成server的公钥/私钥密钥对。需要指定keystore的密码(storepass)和密钥对的密码(keypass)。
访问keystore需要storepass。访问密钥对需要keypass。
keytool -genkey -alias readyserver -keyalg rsa -keysize 1024 -sigalg sha256withrsa -keypass 123456 -keystore readyserver.keystore -storepass 123456 -validity 36500 -dname "CN=localhost,CN=ready.work,OU=ReadyWork,O=ReadyWork,L=WuHan,ST=HuBei,C=CN"
2)创建client的keystore文件。同样需要指定keystore的密码和密钥对的密码。
keytool -genkey -alias readyclient -keyalg dsa -keysize 1024 -sigalg sha1withdsa -keypass 654321 -keystore readyclient.keystore -storepass 654321 -validity 36500 -dname "CN=localhost,CN=ready.work,OU=ReadyWork,O=ReadyWork,L=WuHan,ST=HuBei,C=CN"
3)从server的keystore中导出server的证书(其中包括server的公钥)。
keytool -export -alias readyserver -keystore readyserver.keystore -storepass 123456 -file readyserver.cer
4)从client的keystore中导出client的证书(其中包括client的公钥)。
keytool -export -alias readyclient -keystore readyclient.keystore -storepass 654321 -file readyclient.cer
5)创建server的truststore文件并导入client的证书(其中包括client的公钥)。
keytool -import -alias readyclient -keystore readyserver.truststore -storepass 123456 -file readyclient.cer
6)创建client的truststore文件并导入server的证书(其中包括server的公钥)。
keytool -import -alias readyserver -keystore readyclient.truststore -storepass 654321 -file readyserver.cer
提醒
需要注意的是,上面创建的证书属于私有证书,未经过第三方权威机构认证,也不是由国际安全证书公司签发,所以浏览器认为是非法证书。 如果你是向公众提供服务,那么建议你购买专业HTTPS证书,或者申请 Let’s Encrypt 与 TrustAsia CA 的免费 HTTPS 证书。 如果是集群内部或内网之间的HTTPS安全认证,可以使用上面的方式创建私有证书即可,注意storepass和keypass密码的保密。
#
开启HTTPS开启HTTPS服务只需要进行配置即可,首先要开启enableHttps=true,并设置https端口,例如httpsPort: 8443,然后将上面生成的证书放到项目的resources根目录,或者其他目录,最后在配置文件中指定证书路径信息和密码即可。请参考下面的实例:
上述证书是放置在了当前项目的resources根目录,也可以放置到项目工作空间下面的子目录,配置中设置好路径后,系统会自动寻找。 经过上面的配置后,启动服务即可通过https://localhost:8443/方式访问,如果chrome浏览器弹出警告,输入(盲敲)thisisunsafe即可通过,这是chrome浏览器的暗号。
#
分布式OAUTH2原生分布式OAUTH2,无外部依赖,但未实现全部OAUTH2标准,无需单独部署,随节点增加自动扩容。分布式OAUTH2是本框架提供的一个重要安全模块,即将开放。
网络安全方面还有更多内容,以上只列举部分重点内容。后续逐步完善更多具体的文档,并对重点内容进行专题描述。
#
数据安全数据安全属于本框架提供的另外一个重大模块,即将开放: 基于本框架的所有SQL操作都将经过审计,并可以动态按表、按类、按类的方法、按角色配置字段级别数据权限。 基于框架controller的输入(GET/PUT/POST…)与输出(页面/Json/Xml)都将经过审计,可动态按表、按类、按类的方法、按角色配置输入、输出字段级别数据权限。