AK泄露检测

更新时间:
复制 MD 格式

云安全中心通过实时检测 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 泄露且有效

  • 语音通知:根据设置的接收人实时发送。

  • 控制台弹框提示:访问阿里云控制台首页或多数云产品控制台时会弹框提示。

  • 告警通知:根据已配置的通知方式(站内信、邮件或短信)发送。

image

配置 AK 泄露告警通知

云安全中心默认开启 AK 泄露告警通知,可通过短信、语音、邮件、站内信等方式发送告警。

修改通知方式

  1. 访问云安全中心控制台-系统配置-通知设置,在页面左侧顶部,选择需防护资产所在的区域:中国内地非中国内地

  2. 短信/邮件/站内信页签中,找到 AccessKey 泄露情报,选择需要的 通知方式

说明

AK 泄露风险较高,为及时接收通知,建议选中所有通知方式。具体操作,请参见通知设置

添加通知接收人

默认仅账号联系人会收到通知。如需其他联系人接收告警,可通过以下方式添加:

  • 短信、邮件、站内信:

    基本接收管理页面的安全消息 > 云盾安全信息通知区域,修改消息接收人。

    说明

    修改此处的消息接收人后,会对云安全中心的其他通知项同时生效,也会对 DDoS 防护和 Web 应用防火墙等产品的消息通知项生效。

  • 语音:

    语音接收管理页面的安全消息 > 账号安全告警区域,修改消息接收人。

处理 AK 泄露事件

收到 AK 泄露告警通知后,表示阿里云账号或 RAM 用户的 AK 和 SK 信息已外泄。请按以下步骤处理:

步骤一:手动处理泄露事件

云安全中心不支持自动处理 AK 泄露事件,需要先在外部完成以下操作:

  1. 删除或隐藏 GitHub 上的泄露内容:联系相关人员删除或隐藏包含 AK 信息的文件、仓库或代码。

  2. 在 RAM 控制台处理泄露的 AccessKey:在确保核心业务不受影响的前提下,删除或禁用已泄露的 AccessKey,并创建新的 AccessKey。具体操作,请参见删除RAM用户的AccessKey禁用RAM用户的AccessKey

    处理时请注意以下几点:

    • 禁用立即生效:在 RAM 控制台禁用 AccessKey 的操作立即生效,该 AccessKey 将无法再用于 API 调用,可立即阻断基于该密钥发起的操作。

    • 禁用后仍可能收到告警:AccessKey 禁用后,虽然调用会失败,但由于该密钥的记录仍然存在,云安全中心可能继续检测到泄露风险并发送告警。如果确认该 AccessKey 已不再使用,建议在禁用后直接删除该 AccessKey,以彻底消除告警。

    • 业务影响评估与轮换策略:禁用或删除 AccessKey 前,请先核实该密钥是否仍被业务依赖(例如用于 K8s 集群等服务的凭据配置)。如果业务正在使用该 AccessKey,建议先为 RAM 用户创建新的 AccessKey 并替换到相应的业务配置中,验证新密钥可正常工作后,再禁用并删除旧的 AccessKey,避免影响线上服务。

    • 无法轮换时的临时管控:如果因特殊原因暂时无法完成 AccessKey 轮换,可结合业务情况配置网络访问控制策略(IP 白名单),仅允许指定的业务 IP 发起访问,作为临时限制手段。

      说明

      此处的 IP 白名单是指网络侧的访问控制策略,与本文「处理 AK 泄露事件」中控制台内的告警白名单(加白名单处理方式,用于标记误报事件)是不同的概念,请勿混淆。

步骤二:在控制台标注处理状态

手动处理完成后,在云安全中心控制台对该 AK 告警事件进行状态标注:

  1. 访问云安全中心控制台-风险治理-AK泄露检测

  2. 单击目标事件操作列的 处理,选择以下处理方式之一,并单击 立即处理

处理方式

适用场景

我已手动删除

已泄露的 AccessKey 不再继续使用,已删除。

我已手动禁用 AK

已泄露的 AccessKey 仍需继续使用,但需要临时使其失效。选择此方式后,可在 RAM 控制台重新启用该 AccessKey。

说明

如果 AK 已在 RAM 控制台禁用,云安全中心将自动同步 AK 的禁用状态,AK 泄露事件状态变为"我已手动禁用"。

加白名单

该事件为误报或可以安全忽略。选择后状态变为已加白名单,事件进入已处理列表。

需要恢复检测时,可从已处理列表进入 AK 泄露详情页,取消白名单即可。

查看 AK 调用记录

通过查看 AK 调用记录,可以确认 AK 泄露后是否被攻击者利用,从而了解泄露的影响范围。下文介绍通过操作审计服务按时间线查看 AK 调用事件的操作步骤。

说明

如需查看 AK 访问某个云产品的调用记录,可以使用操作审计的 AccessKey 审计功能。具体操作,请参见 查询 AccessKey 日志

  1. 云安全中心控制台 AK 泄露检测页面,获取需要查看的 AccessKey ID。

  2. 登录操作审计控制台。

  3. 在左侧导航栏,选择 事件 > 事件查询

  4. 在顶部导航栏选择要查询事件的地域。

  5. 选择类型为 AccessKey ID,输入待查询的 AccessKey ID,并选择查询时间段。

  6. 查看该 AccessKey ID 的调用事件列表,单击目标事件操作列的查看详情,可查看事件的详细记录信息。

    关于管控事件参数的更多信息,请参见 管控事件结构定义

在查看调用记录时,可参考以下思路排查攻击行为并溯源:

  • 内网 IP 调用源排查:如果发现 AK 调用来源 IP 为阿里云内网 IP,可能是由于云上主机被入侵并沦为肉鸡所致,建议立即排查相关云主机的安全状况,并加强主机侧防护。

  • 恶意 RAM 用户创建溯源:如果怀疑攻击者通过泄露的 AccessKey 创建了恶意 RAM 用户,可通过操作审计或告警邮件中的详细信息(异常 AccessKey、IP、时间)确认该 RAM 用户具体是由哪个 AccessKey 通过 API 创建的,并区分是通过控制台登录创建,还是通过 API 调用创建。

  • 告警接口类型与预期产品不一致:AK 异常调用告警中显示的调用接口类型(例如 Ecs:DescribeInstances)可能与预期涉及的产品(例如 OSS)不一致。请以告警中实际显示的接口为准,在操作审计中查询对应产品的调用记录,避免因查询了错误产品的日志而遗漏风险。

  • 风险评估边界:如果调用记录显示攻击者仅通过 API 查询了资源信息(例如仅调用了 Describe 类接口),通常不会直接导致进一步的安全入侵,可据此合理评估此次泄露的影响范围。

持续关注 AK 异常调用

处理完 AK 泄露事件后,建议持续关注 AK 调用是否异常,防止类似事件再次发生,并在泄露发生时快速响应,缩小事件影响范围。

调用接口字段说明:调用接口指通过 API 使用 AccessKey 访问的具体云服务操作。接口名称格式为{产品前缀}:{API名称},其中:

  • 产品前缀:对应阿里云产品名称(如 Ecs→ECS、Oss→OSS、Rds→RDS)。

  • API 名称:对应具体的 API 操作(如 DescribeRegions→查询可用地域)。

常见接口名称映射示例如下:

接口名称

产品

操作说明

Ecs:DescribeRegions

ECS

查询可用地域

Oss:GetBucket

OSS

获取 Bucket 信息

Rds:DescribeDBInstances

RDS

查询数据库实例列表

从攻击视角监测 AK 异常调用

云安全中心基于安全攻防经验和大模型,可检测常见的 AK 调用异常。例如:调用 AK 的 IP 地址在近期发起过攻击行为、该 IP 在云上批量调用多个用户的 AK、调用的 API 较为敏感且该 AK 出现过泄露等。当 AK 从非常用地域的 IP 调用敏感 API 时,系统将其识别为异常行为并触发告警。如果确认告警为正常业务行为,通过操作审计查询该 AK 的调用记录核实,确认后在告警详情中将告警状态标记为误报。当前不支持配置信任 IP。

  1. 登录云安全中心控制台

  2. 在左侧导航栏,选择检测响应 > 告警。在控制台左上角,选择需防护资产所在的区域:中国内地非中国内地

    说明

    若已开通 Agentic SOC,请选择Agentic SOC > 管理 > 告警

  3. 将告警类型选择为云产品威胁检测,查看是否存在 AK 异常调用告警。

    说明

    如果存在 AK 异常调用告警,需要查看详情,及时确认该 AK 调用是否为正常行为。

  4. (可选)配置安全告警通知。

    进入云安全中心控制台 系统设置 > 通知设置 页面,配置安全告警的通知方式,以便及时收到 AK 调用异常告警。免费版仅支持配置站内信通知方式。具体操作,请参见 通知设置

监测阿里云账号调用 AK 等异常

操作审计服务提供内置告警,可监控阿里云账号调用 AK 及 AK 异常调用。在操作审计控制台启用内置告警 AK 使用的异常频率告警Root 账号 AK 使用检测,以便在出现 AK 异常调用时收到通知。具体操作,请参见 设置事件告警

基于历史行为检测 AK 异常调用

操作审计服务提供的审计事件洞察(Insights 事件)功能,可基于历史行为分析调用率异常的 AK,及时发现异常行为。开通并查看 Insights 事件的具体操作,请参见 通过操作审计控制台查询 Insights 事件

使用建议

  • 不使用阿里云账号(主账号)AccessKey。更多信息,请参见 不使用主账号 AccessKey

  • 避免将 AccessKey 信息硬编码到代码中,可通过配置环境变量的方式管理 AccessKey。更多信息,请参见 凭据的安全使用方案

  • 使用私有的 GitHub 代码仓库管理代码,或搭建企业内部代码托管系统,防止源代码和敏感信息泄露。

FAQ

使用第三方 SDK 本地测试上传文件,是否会导致 AccessKey 泄露?

使用第三方 SDK 完成本地测试上传文件的流程本身不会直接导致 AccessKey 泄露。AccessKey 泄露通常是因为 AccessKey 以明文形式硬编码在应用程序代码或公共代码仓库中,随后被他人获取。建议采取以下措施:

  • 删除已泄露的 AccessKey 及对应的 RAM 用户。

  • 定期轮转 AccessKey。

  • 通过环境变量等方式管理 AccessKey 等凭据,避免在代码中明文保存。