1. 概述
阿里云资源除了可以通过控制台进行管理,还可以通过访问密钥(AccessKey,包含AccessKey ID和AccessKey Secret)进行管理。一般我们可通过操作审计云产品对其调用记录进行查看,但AccessKey调用记录根据用户配置的endpoint地址不同,记录的调用源IP也不一样(如果配置的是公网endpoint,调用源IP一般为客户侧公网EIP出口IP地址,如果为内网endpoint,调用源一般记录的是客户侧VPC IP地址),所以如果想要进行全链路溯源,需要结合多个云产品日志进行关联查询,本文将为大家介绍整体AccessKey溯源方法和注意事项。
2. 方案介绍
本方案将介绍访问控制、操作审计、VPC、SLS等多个云产品结合使用,对AccessKey调用日志进行全链路溯源(办公网和互联网的调用溯源不在本方案范围),尽可能缩小调用范围,定位到实际使用方。
3. 目标读者
运维人员:访问密钥使用记录查看。
开发人员:应用系统配置文件梳理。
安全人员:事件调查、策略实施、应急处置。
4. 适用场景
应用系统迁移,梳理AccessKey调用源IP。
AccessKey泄露应急处置,梳理AccessKey调用源IP,完成密钥替换。
梳理AccessKey调用源IP,完成密钥ACL安全加固。
查询AccessKey调用情况,完成运维管理事件调查。
查询AccessKey最后调用时间,完成长期闲置密钥下线。
5. 相关概念
RAM用户:RAM用户是RAM中的一种身份,对应某一个操作实体(运维操作人员或应用程序),通过创建新的RAM用户并授权,RAM用户便可以访问相关资源。
AccessKey:AccessKey可通过阿里云主账号和阿里云RAM创建,是在调用阿里云API时需要使用完成身份验证的长期凭证。
Endpoint:表示OSS对外服务的访问域名,分为内网Endpoint(如oss-cn-hangzhou-internal.aliyuncs.com)和外网Endpoint(如oss-cn-hangzhou.aliyuncs.com)。
6. 方案架构
6.1 AccessKey访问阿里云过程图
如果配置的是公网Endpoint,需要先通过VPC和NAT转换成出口EIP,然后到API网关请求目标资源数据,操作审计记录的调用源IP为公网出口IP地址。
AccessKey访问云产品根据配置的Endpoint不同,调用过程也不同。
如果配置的是内网Endpoint,用户密钥直接通过VPC内网IP地址到API网关请求目标资源数据,而操作审计记录的调用源IP为VPC IP地址。
6.2 调用溯源架构
用户AccessKey使用过程中会将访问源IP地址、源端口、目标域名、目标端口、时间请求时间等信息进行日志保存。
一般AccessKey请求日志会在网关进行统一记录,然后操作审计、访问控制等云产品获取网关日志进行统一展示,供用户查询使用。
VPC流日志、NAT日志等可协助溯源内网和出口EIP映射关系。
OSS、MQ等部分云产品具体对象请求类日志量较大,操作审计日志未记录,需单独通过云产品自身日志功能开启进行查询。
7. 方案实施
7.1 操作审计日志转储配置
操作审计默认为每个阿里云账号记录最近90天的操作事件,必须创建跟踪才能记录更长时间的操作事件,否则将无法追溯90天以前的操作事件。同时为方便做数据统计分析以及多字段关联查询,建议也开启操作审计日志转储配置。
7.2 VPC流日志转储配置
VPC提供流日志功能,可以记录VPC网络中弹性网卡ENI(Elastic Network Interface)传入和传出的流量信息,可帮助检查访问控制规则、监控网络流量和排查网络故障。
7.3全链路溯源案例01
前提条件
开通操作审计日志和VPC流日志转储,日志保留时间大于事件发生时间。
场景描述
查找用户AccessKey最后一次调用的时间、内网IP、调用云产品和接口信息。
详细溯源步骤
通过主账号或RAM子账号登录阿里云控制台,选择云产品日志服务 SLS。
输入操作审计转储的日志服务 SLSproject名称,点击进入。
选择要查询的时间段(近30天),输入查询SQL进行查询。
*|select "event.acsregion" ,"event.errormessage","event.eventid","event.eventsource","event.eventname","event.requestid","event.servicename","event.sourceipaddress","event.useridentity.accesskeyid",from_unixtime(__time__) time from log where "event.userIdentity.accessKeyId"='用户AccessKeyID order by from_unixtime(__time__) desc limit 2
得到执行时间(time)为:2022-01-04 13:59:34.000,云产品(event.servicename):kms,接口(event.eventname):Decrypt,源IP(event.sourceipaddress):xx.xxx.xx.xx,目标域名或IP(event.eventsource):kms.xxxxx.aliyuncs.com。发现调用源IP为EIP出口IP,解析目标域名对应的IP地址。
目标域名先解析为IP地址:nslookup kms.xxxxx.aliyuncs.com。
得到解析的目标IP地址Dest1和Dest2。
根据VPC流日志和操作审计查询信息进行EIP和VPC IP映射查询。
进入VPC流日志转储Project,根据目标IP地址、调用时间输入SQL进行查询。
*|select srcaddr,dstaddr, from_unixtime(start) start ,from_unixtime(__time__) time from log where (dstaddr='Dest1' or dstaddr='Dest2') and from_unixtime(start)>='2022-1-4 13:59:33' and from_unixtime(start)<='2022-1-4 13:59:35' order by start desc
根据映射关系可查到具体内网VPC IP地址。
说明
如需进一步做配置查询、应用归属查询、ACL防护策略加固等,可结合自身资产管理系统和访问控制云产品对AccessKey进一步处置。
7.4 全链路溯源案例02
前提条件
拥有云产品访问控制权限。
场景描述
超过6个月未使用的AccessKey梳理和禁用。
详细溯源步骤
用户AccessKey最后使用时间查询可通过登录阿里云控制台,在云产品访问控制界面进行逐个查询,记录AccessKeyID、最后使用时间、状态等基础信息。
为方便快速高效的进行批量查询,可通过阿里云OpenAPI进行查询。
列出所有RAM用户信息。
根据RAM用户信息,列数对应的AccessKey信息。
根据最后访问时间,筛选出最近6个月未访问的AccessKey,然后在访问控制对其执行禁用。
重要
部分云产品的AccessKey调用信息未记录操作审计,因此我们主要依托访问控制最后调用时间来评估其是否长期未使用。
7.5 全链路溯源案例03
前提条件
开通操作审计日志转储,日志保留时间大于统计需求时间。
场景描述
用户想通过AccessKeyID查询指定时间内所有访问源IP统计数据,方便实施访问控制白名单。
详细溯源步骤
用户提供AccessKeyID,去云产品操作审计转储的SLS Project进行查询和统计数据分析。
根据要做分级分析的时间,进行SQL统计分析查询。SQL语句可参考:
* |select "event.sourceIpAddress" as "源IP" ,count(*) as "IP统计数量" from log where from_unixtime(__time__)>='2021-12-31' group by "event.sourceIpAddress" order by count(*) desc
对AccessKey实施白名单访问控制。
根据上一步梳理的访问源,通过访问控制自定义策略进行安全白名单设置,Accesskey ACL实施文档参考。
警告
部分云产品或接口AccessKey调用信息未记录在操作审计日志,因此通过操作审计梳理的访问源IP仅为主要参考,实施ACL访问控制还需谨慎操作。
OSS、MQ等云产品的AccessKey调用信息源IP梳理需结合其自身云产品日志,用于确定其全面的访问源信息。
建议用户侧VPC网段、出口EIP以及阿里云内网IP网段默认作为可访问的白名单列表。
7.6 全链路溯源案例04
前提条件
开通操作审计日志,日志保留时间大于事件发生时间。
场景描述
用户想查看某个AccessKey在什么时间通过什么IP做了什么高风险操作。
详细溯源步骤
操作审计控制台直接查看。
通过日志服务 SLS做查询。查询SQL语句参考:
*|select * from log where "event.eventName"='DeleteInstance' and "event.userIdentity.accessKeyId" ='用户AccessKey ID'
说明
操作审计控制台筛选条件有限,如想通过多个字段进行过滤,推荐使用操作审计转储至SLS的日志进行查询。
8. 常见问题
8.1 EIP出口IP无法通过流量日志溯源到内网IP地址
请检查流量日志保存时间是否在查询时间范围内,如保留周期超过查询时间则无法追溯内网IP映射关系。
请检查流日志是否采集全全部VPC交换机流量,如未采集全可能会漏掉部分流量导致无法追溯内网IP映射关系。
请检查SQL语句以及响应筛选条件(时间、端口、目标IP、进、出流量等)是否和操作审计事件时间等信息一致,如不一致可能导致无法追随内网IP映射关系。
8.2 操作审计无法找到对应AccessKey执行记录
对应云产品暂未接入操作审计日志,具体接入操作审计的云产品列表请参考。
对应云产品部分接口或事件未接入操作审计日志,需要单独开通对应云产品事件日志进行查询,如OSS、MQ等。
8.3 企业账号VPC云产品下无流日志菜单,无法完成流日志开通
目前流日志处于公测阶段,如未找到流日志菜单,可联系阿里云客户支持进行开通,具体开通区域说明请参考。