当您需要精确控制用户对服务的访问权限时,可以在ASM网关中配置黑白名单。ASM网关支持从源地址、HTTP域名、端口、远程源IP四个维度对流量进行精确控制,以保障网格内应用的安全。本文以源地址为例,介绍如何在ASM网关中配置IP黑名单和白名单。
前提条件
已部署应用到ASM实例的集群。具体操作,请参见在ASM实例关联的集群中部署应用。
配置说明
每条请求匹配规则内部的关系为AND,请求匹配规则之间的关系为OR。
关闭黑白名单,对应的授权策略会被删除。
HTTP域名(Host)支持精确匹配、前缀和后缀匹配。配置示例如下:
精确匹配:aliyun.com
前缀匹配:aliyun*
后缀匹配:*aliyun.com
使用网关日志获取客户端源IP地址
对于南北向流量,客户端先请求负载均衡,然后将请求转给Istio IngressGateway,最后转给后端服务。由于IngressGateway的存在,获取客户端源IP地址变得更为复杂。关于如何在网关中设置南北向流量保留源IP地址,请参见为南北向流量保留源IP地址。
在浏览器中输入http://{您的ASM网关IP地址}/productpage,访问Productpage服务,产生访问日志。
关于如何获取ASM网关IP地址,请参见获取入口网关地址。
使用数据面集群的KubeConfig,执行以下命令,使用网关日志获取客户端源IP地址。
kubectl -n istio-system logs ${您的网关Pod名称} -c istio-proxy | grep "/productpage" | tail -n 1
示例输出:
{"method":"GET","authority":"47.99.XXX.XXX","response_flags":"-","start_time":"XXXXXX","requested_server_name":null,"request_id":"*****","upstream_local_address":null,"duration":0,"downstream_local_address":"10.34.0.25:80","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.X.X Safari/537.36","upstream_host":null,"bytes_received":0,"istio_policy_status":null,"protocol":"HTTP/1.1","bytes_sent":19,"downstream_remote_address":"XXXXXXX","response_code":403,"x_forwarded_for":"112.124.XXX.XX","upstream_cluster":"outbound|9080||productpage.default.svc.cluster.local","trace_id":null,"path":"/productpage","upstream_transport_failure_reason":null,"upstream_service_time":null,"route_name":null}
示例输出中的
downstream_remote_address
即为当前客户端源IP地址。
为网关配置IP黑名单,禁止当前客户端IP访问
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在入口网关页面,单击目标网关名称,然后在网关概览页面左侧,选择
。在黑白名单匹配规则配置向导,打开启用网关黑白名单开关,匹配模式选择黑名单,打开源地址(IPBlock)开关,输入客户端源IP地址,然后单击提交。
说明若您需要配置多条匹配规则,请单击添加请求匹配规则,实现同时拦截或放行多类请求。
创建完成后,页面会显示网关黑白名单创建成功,表示当前网关黑白名单策略已经生效。您可以单击AuthorizationPolicy右侧的查看YAML,查看已配置的黑白名单语义信息。
在浏览器中输入http://{您的ASM网关IP地址}/productpage,访问Productpage服务。
出现如下页面,表示访问被拒绝,说明黑名单规则已经生效。
为网关配置IP白名单,只允许当前客户端IP访问
下文将在已配置的IP黑名单的基础上,通过修改匹配模式,验证说明IP白名单功能。
在入口网关页面,单击目标网关名称,在网关概览页面左侧,选择
。在黑白名单匹配规则配置向导,将匹配模式改为白名单,然后单击提交。
访问Productpage服务。
在浏览器中输入http://{您的ASM网关IP地址}/productpage。
可以看到页面能够正常访问。
使用其他IP的客户端,在浏览器中输入http://{ASM网关IP地址}/productpage。
出现如下页面,表示其他客户端IP访问被拒绝,说明白名单规则已经生效。
相关文档
如果您需要采集ASM网关的访问日志,请参见生成和采集ASM网关访问日志。