一些企业内部管理网站,往往为了快速上线,没有做身份认证,这就给内部数据泄露带来了很大的风险。但是,要想修复这个问题,却不是那么容易,有可能开发这个网站的同事早就转岗或离职了。
为了解决这个问题,《数据安全架构设计与实战》一书提出了在应用网关统一执行身份认证,并在后端限制访问来源,快速解决这些没有身份认证的问题。
在接入网关上执行身份认证
现在,这一理念已在Janusec Application Gateway中落地,支持员工扫码登录原来可任意访问的内部网站了。
目前支持的扫码登录APP包括:企业微信、钉钉、飞书 。
在Janusec Application Gateway的应用配置界面,勾选启用OAuth2选项。
具体配置,参考:OAuth2身份认证
Janusec认证通过后,会在HTTP请求的头部添加两行:
Authorization: Bearer Access-Token
X-Auth-User: UserID
应用不需要修改即可使用,也可以通过X-Auth-User获取用户身份(企业微信/钉钉/飞书),或者借助Access-Token(企业微信/飞书)获取进一步的信息。
以配置的某个PHP应用下,放一个http.php文件,内容为:
<?php
$headers = array();
foreach ($_SERVER as $key => $value) {
if ('HTTP_' == substr($key, 0, 5)) {
$headers[str_replace('_', '-', substr($key, 5))] = $value;
}
}
echo '<pre>';
print_r($headers);
?>
在Janusec Application Gateway的应用管理中,勾选"Enable OAuth2",启用OAuth2 。
访问该http.php页面,浏览器自动跳转到扫码登录页面,扫码通过后,即可查看到该网页的输出:
Array
(
[HOST] => test.janusec.com
[USER-AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
[ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
[ACCEPT-ENCODING] => gzip, deflate, br
[ACCEPT-LANGUAGE] => zh-CN,zh;q=0.9
[AUTHORIZATION] => Bearer hmaEIdtA_EigLd0q6s1grFMuspVTCme8PEU4SkSeWJAv06Rg6u_PWUdU2g
[COOKIE] => uqcJ_2132_saltkey=r55x3tp5; uqcJ_2132_lastvisit=1582979664; janusec-token=MTU4NTQ1Nzc3NnxEdi1CQkFFQ180SUFBUkFCRUFBQV9_
[X-AUTH-USER] => U2
[X-FORWARDED-FOR] => 192.168.100.1
)
可以看到,已添加HTTP头部:
Authorization: Bearer hmaEIdtA_EigLd0q6s1grFMuspVTCme8PEU4SkSeWJAv06Rg6u_PWUdU2g
X-Auth-User: U2
后端的网站,可以不用任何修改,就获得了需要通过身份认证才能访问的效果。
同时,后端网站也可以直接使用HTTP头部传递过来的身份信息。
后端网站只需要添加一个退出链接 /oauth/logout ,即可实现退出效果。
最后,需要说明的是,这种方式配合后端网站的来源访问控制,效果更好,也就是只允许网关过来的请求,这样,切断黑客进入内网后的横向移动通道。
Janusec Application Gateway的来历,在此前的文章中已经介绍过了,参见:基于Golang打造一款开源的WAF网关。它提供了统一的应用接入、WAF (Web Application Firewall, Web应用防火墙)、CC攻击防御、统一Web化管理入口、证书私钥保护,Web路由以及可扩展的负载均衡等功能。
这款开源产品的架构设计理念,在作者的《数据安全架构设计与实战》一书中做了介绍。
本文作者U2(郑云文),资深数据安全与隐私保护专家,同时也是《数据安全架构设计与实战》一书以及Janusec Application Gateway开源应用网关的作者,长期从事数据安全与隐私保护工作。