云安全中心通过实时检测 GitHub 平台公开源代码中存在的阿里云账号或 RAM 用户的访问密钥 AccessKey(以下简称 AK)信息,识别 AK 是否泄露并提供告警。本文介绍 AK 泄露检测的原理及处理方法。
功能原理
适用范围
-
检测平台:仅支持检测 GitHub 平台公开源代码中的 AK 泄露,暂不支持其他代码托管平台。
-
检测对象:阿里云账号(主账号)及 RAM 用户的 AccessKey(包括 AccessKey ID 和 AccessKey Secret)。
通知方式
云安全中心根据泄露的 AccessKey ID(以下简称 AK)和 AccessKey Secret(以下简称 SK)是否有效,采用不同的通知方式:
只有 AK 和 SK 同时泄露时,第三方才可能利用该访问密钥,进而获取该账号下所有资源的控制权。
|
通知条件 |
通知方式 |
|
AK 泄露,无论 SK 是否有效。 |
AK 泄露检测页面告警 |
|
SK 泄露且有效 |
|
配置 AK 泄露告警通知
云安全中心默认开启 AK 泄露告警通知,可通过短信、语音、邮件、站内信等方式发送告警。
修改通知方式
-
访问云安全中心控制台-系统配置-通知设置,在页面左侧顶部,选择需防护资产所在的区域:中国内地或非中国内地。
-
在 短信/邮件/站内信页签中,找到 AccessKey 泄露情报,选择需要的 通知方式。
AK 泄露风险较高,为及时接收通知,建议选中所有通知方式。具体操作,请参见通知设置。
添加通知接收人
默认仅账号联系人会收到通知。如需其他联系人接收告警,可通过以下方式添加:
处理 AK 泄露事件
收到 AK 泄露告警通知后,表示阿里云账号或 RAM 用户的 AK 和 SK 信息已外泄。请按以下步骤处理:
步骤一:手动处理泄露事件
云安全中心不支持自动处理 AK 泄露事件,需要先在外部完成以下操作:
-
删除或隐藏 GitHub 上的泄露内容:联系相关人员删除或隐藏包含 AK 信息的文件、仓库或代码。
-
在 RAM 控制台处理泄露的 AccessKey:在确保核心业务不受影响的前提下,删除或禁用已泄露的 AccessKey,并创建新的 AccessKey。具体操作,请参见删除RAM用户的AccessKey和禁用RAM用户的AccessKey。
步骤二:在控制台标注处理状态
手动处理完成后,在云安全中心控制台对该 AK 告警事件进行状态标注:
-
单击目标事件操作列的 处理,选择以下处理方式之一,并单击 立即处理。
|
处理方式 |
适用场景 |
|
我已手动删除 |
已泄露的 AccessKey 不再继续使用,已删除。 |
|
我已手动禁用 AK |
已泄露的 AccessKey 仍需继续使用,但需要临时使其失效。选择此方式后,可在 RAM 控制台重新启用该 AccessKey。 说明
如果 AK 已在 RAM 控制台禁用,云安全中心将自动同步 AK 的禁用状态,AK 泄露事件状态变为"我已手动禁用"。 |
|
加白名单 |
该事件为误报或可以安全忽略。选择后状态变为已加白名单,事件进入已处理列表。 需要恢复检测时,可从已处理列表进入 AK 泄露详情页,取消白名单即可。 |
查看 AK 调用记录
通过查看 AK 调用记录,可以确认 AK 泄露后是否被攻击者利用,从而了解泄露的影响范围。下文介绍通过操作审计服务按时间线查看 AK 调用事件的操作步骤。
如需查看 AK 访问某个云产品的调用记录,可以使用操作审计的 AccessKey 审计功能。具体操作,请参见 查询 AccessKey 日志。
持续关注 AK 异常调用
处理完 AK 泄露事件后,建议持续关注 AK 调用是否异常,防止类似事件再次发生,并在泄露发生时快速响应,缩小事件影响范围。
从攻击视角监测 AK 异常调用
云安全中心基于安全攻防经验和大模型,可检测常见的 AK 调用异常。例如:调用 AK 的 IP 地址在近期发起过攻击行为、该 IP 在云上批量调用多个用户的 AK、调用的 API 较为敏感且该 AK 出现过泄露等。
监测阿里云账号调用 AK 等异常
操作审计服务提供内置告警,可监控阿里云账号调用 AK 及 AK 异常调用。在操作审计控制台启用内置告警 AK 使用的异常频率告警 和 Root 账号 AK 使用检测,以便在出现 AK 异常调用时收到通知。具体操作,请参见 设置事件告警。
基于历史行为检测 AK 异常调用
操作审计服务提供的审计事件洞察(Insights 事件)功能,可基于历史行为分析调用率异常的 AK,及时发现异常行为。开通并查看 Insights 事件的具体操作,请参见 通过操作审计控制台查询 Insights 事件。
使用建议
-
不使用阿里云账号(主账号)AccessKey。更多信息,请参见 不使用主账号 AccessKey。
-
避免将 AccessKey 信息硬编码到代码中,可通过配置环境变量的方式管理 AccessKey。更多信息,请参见 凭据的安全使用方案。
-
使用私有的 GitHub 代码仓库管理代码,或搭建企业内部代码托管系统,防止源代码和敏感信息泄露。