访问密钥(AccessKey)是您调用阿里云API时用于完成身份验证的凭证,AccessKey泄露会对该账号下所有资源的安全带来威胁,产生非预期的费用以及恶意勒索等,严重情况下甚至可能给阿里云或其他用户带来危害。本文为您介绍疑似泄露的AccessKey的处理方案,避免AccessKey泄露造成更大范围的身份凭证冒用风险。
阿里云安全措施
阿里云一直致力于提升云服务的安全性,并尽最大努力支持您更好地保护您的账户及资产安全。当阿里云根据外部线索,掌握到您的AccessKey已经被公开,阿里云将通过您预留的联系方式及时通知您。同时,为保障您的业务及数据安全,阿里云将对该AccessKey进行限制性保护,禁止该AccessKey调用部分云产品的高危权限API,详情请参见AccessKey限制性保护说明。
请您务必及时关注短信、邮箱、站内消息等渠道的通知,并结合业务实际需求进行及时处置,同时关注您账号下的云资源异动,以免影响业务的正常运行。
阿里云无法也不可能掌握您全部AccessKey的使用安全情况。根据安全责任共担模型,云上的安全由您和阿里云共同分担。其中AccessKey属于云客户的账号和身份访问凭证,相关安全责任仍需要由您负责承担,请您务必关注。
AccessKey泄露导致RAM用户无法登录或提示账号被冻结怎么办?
当阿里云安全系统检测到AccessKey存在泄露风险后,会自动触发保护机制,限制关联RAM用户登录控制台。您可能会遇到Authentication.Block.AccountFrozen、"当前账号不允许登录"等报错信息。
处理方法如下:
使用阿里云账号(主账号)登录RAM控制台,立即禁用或删除泄露的AccessKey,然后创建新的AccessKey完成轮转。仅禁用AccessKey可能不足以解除限制,必须完成删除或轮转操作。
完成AccessKey处置后,若RAM用户仍无法登录,请提交工单申请解除安全风控限制。
若安全手机和支付宝均无法接收验证码,导致无法登录控制台完成上述操作,可通过账号申诉流程修改安全手机号,恢复登录后再禁用泄露的AccessKey。具体操作,请参见无法完成身份验证,如何申诉?。
阿里云账号(主账号)AccessKey疑似泄露手动处理措施
若确认AccessKey不在使用中,请访问AccessKey管理页面,直接禁用和删除AccessKey。
若确认AccessKey在使用中,请访问AccessKey管理页面,轮转AccessKey。
您可以先创建一个新的AccessKey,妥善保管AccessKey Secret。将原AccessKey替换为新的AccessKey,验证正常运行后,禁用和删除AccessKey。
RAM用户AccessKey疑似泄露手动处理措施
若确认AccessKey不在使用中,访问RAM控制台,直接禁用和删除RAM用户的AccessKey。具体操作,请参见禁用RAM用户的AccessKey、删除RAM用户的AccessKey。
禁用AccessKey时,系统会要求您完成安全验证(多因素认证MFA),验证通过后AccessKey状态才会变更为已禁用。如果该AccessKey最近60天内有调用记录,系统会提示禁用可能造成业务中断,请确认无业务依赖后再继续操作。
若确认AccessKey在使用中且可以直接轮转,请尽快轮转。
创建新的AccessKey时,系统会弹出使用场景选择对话框,请从CLI、本地开发、ECS、ACK、第三方、其他中选择实际使用场景。您可以创建新的AccessKey,妥善保管AccessKey Secret。将原AccessKey替换为新的AccessKey,验证正常运行后,禁用和删除旧的AccessKey。具体操作,请参见轮转RAM用户的AccessKey。
删除AccessKey时,需手动输入AccessKey ID完成二次确认。如果该AccessKey禁用未满7天,系统会提示删除可能造成业务中断,请确认无业务依赖后再继续操作。删除后AccessKey不会立即销毁,而是移入回收站,保留30天后自动清理,如需恢复请在保留期内操作。
若确认AccessKey在使用中且短期内无法顺利轮转,为降低被盗用的影响,您可以按照下图所示步骤进行处置。完成后务必尽快轮转。
步骤一:缩小AccessKey权限
请先明确业务场景,在不影响当前业务运行的前提下,尽快缩小疑似泄露的AccessKey权限,限制高风险权限,降低业务和资费受损的风险。在AccessKey禁用和删除之前请不要解除该策略(限制高风险权限)的授权。
建议限制的高风险权限,例如:禁止该RAM用户在访问控制(RAM)中创建新的RAM用户及授权,禁止ECS、RDS、OSS、SLS资源的释放,禁止发送短信等。
以下提供一个禁用高风险权限的自定义权限策略示例,请您充分评估影响,根据业务情况设置。
{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": [ "ram:AddUserToGroup", "ram:AttachPolicyToGroup", "ram:AttachPolicyToRole", "ram:AttachPolicyToUser", "ram:ChangePassword", "ram:CreateAccessKey", "ram:CreateLoginProfile", "ram:CreatePolicyVersion", "ram:CreateRole", "ram:CreateUser", "ram:DetachPolicyFromUser", "ram:PassRole", "ram:SetDefaultPolicyVersion", "ram:UpdateAccessKey", "ram:SetPasswordPolicy", "ram:UpdateRole", "ram:UpdateLoginProfile", "ram:UpdateUser" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "ecs:DeleteInstance", "ecs:DeleteInstances", "ecs:DeregisterManagedInstance", "ecs:ReleaseDedicatedHost" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "rds:DeleteAccount", "rds:DeleteDatabase", "rds:DeleteDBInstance", "rds:DestroyDBInstance" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "oss:DeleteBucket", "oss:DeleteObject", "oss:PutBucketAcl", "oss:PutBucketPolicy" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "log:DeleteLogStore", "log:DeleteProject", "log:PutProjectPolicy", "log:DeleteProjectPolicy" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "dysms:CreateProductNew", "dysms:CreateSmsTemplateNew", "dysms:AddSmsTemplate", "dysms:SendSms", "dysms:SendBatchSms" ], "Resource": "*" } ] }具体操作,请参见创建自定义权限策略、管理RAM用户的权限。
建议您明确AccessKey所需要的业务权限,将不需要的权限全部移除。
步骤二:开启RAM用户的MFA
按照最佳实践,建议您阿里云账号(主账号)下所有用于控制台访问的RAM用户开启多因素认证(MFA)。
设置主账号下的RAM用户登录控制台必须开启MFA。
具体操作,请参见管理RAM用户登录设置。
为用户绑定MFA设备。
具体操作,请参见RAM用户自行绑定MFA设备。
步骤三:检查是否存在AccessKey异常操作
检查AccessKey是否存在异常操作行为,以及排查是否有其他疑似泄露的身份。重点关注异常的访问IP、非业务需要的资源创建或删除操作等。
泄露期间需重点排查的危险操作包括:
身份与权限变更:创建RAM用户(
CreateUser)、创建AccessKey(CreateAccessKey)、附加权限策略(AttachPolicyToUser)、创建角色(CreateRole)、开通控制台登录(CreateLoginProfile)等。CreateLoginProfile、AttachPolicyToUser、CreateUser等事件通常意味着攻击者正在创建后门账号或提权,需重点核查调用源IP及UserAgent。资源删除与释放:删除ECS实例(
DeleteInstance)、删除RDS实例(DeleteDBInstance)、删除OSS存储空间(DeleteBucket)等。数据外泄操作:修改OSS存储空间访问权限(
PutBucketAcl)、修改OSS存储空间策略(PutBucketPolicy)等。异常调用行为:短时间内大量发起API请求、从非常用IP地址或地域发起操作、非工作时间段的批量操作等。
检查方式:在RAM控制台查找RAM用户的AccessKey列表,在列表中查看操作记录,或在操作审计控制台的AccessKey 审计页面直接输入AccessKey ID查询操作记录。
除操作审计外,您还可以登录云安全中心控制台查看AccessKey泄露告警详情,获取被恶意创建的具体RAM用户名、异常调用IP等信息。
通过操作审计的AccessKey审计功能,您可以查看指定AccessKey在最近90天内的所有API调用记录,包括调用时间、操作名称、源IP地址和访问的云服务等信息。具体操作,请参见使用操作审计监控AccessKey的使用。
说明未接入操作审计的数据类操作日志,如OSS、SLS等,需要使用各云产品的日志功能查询。
您可以通过安全邮箱、站内信通知确认具体泄露的AccessKey ID。若通知中仅包含一个AccessKey且无其他告警,则通常仅该AccessKey存在泄露。
进一步排查除了已知存在泄露风险的AccessKey之外,是否还有其他RAM用户和AccessKey存在异常操作行为。若发现存在异常行为,与相关人员确认操作是否由本人执行,若存在疑似泄露风险,建议按以下方式处理:
RAM用户如果需要继续使用,建议您立即修改RAM用户密码并开启多因素认证(MFA)。
RAM用户并非正常创建的,或确认为闲置用户不需要继续使用的,可进行删除。RAM用户删除后会进入回收站,观察业务是否受到影响,如有影响该RAM用户可快速恢复。
AccessKey异常操作,参照上文所述方法进行权限限制,然后进行轮转。
排查AccessKey的使用范围
操作审计记录的源IP仅能反映已接入管控事件(如OSS的
GetService、GetBucketInfo等管理类操作)的调用记录;未接入操作审计的数据类操作(如OSS对象上传、下载)默认不会记录,因此仅凭源IP列表无法还原AccessKey的全部使用范围。禁用或删除原AccessKey之前,请逐一确认以下环境中是否仍配置了该AccessKey:本地开发机:开发人员的环境变量、SDK配置文件、CLI凭证文件等。
CI/CD流水线:构建任务的环境变量、凭证仓库、部署脚本等。
第三方应用与SaaS服务:授权给外部平台用于调用阿里云API的凭证。
容器与镜像:容器镜像层、Kubernetes Secret、编排模板中的凭证配置等。
定时任务与运维脚本:服务器上的crontab、备份脚本、监控采集脚本等。
短信等消息通知类服务的调用方:例如调用短信服务发送短信的业务应用。
请确认以上环境全部替换为新的AccessKey并验证业务正常运行后,再禁用或删除原AccessKey,避免遗漏调用方导致业务中断。
步骤四:检查是否存在异常费用
在费用与成本检查是否存在异常的费用产生,结合上一步结果,针对性采取产品的防护措施。
仅删除恶意创建的RAM用户不足以消除泄露风险。核心风险在于阿里云账号(主账号)或高权限RAM用户的AccessKey已泄露,攻击者可利用该AccessKey持续创建新用户或提权。您必须执行AccessKey轮转(创建新AccessKey替换旧AccessKey,并禁用和删除旧AccessKey),同时排查AccessKey泄露途径(如代码、配置文件、服务器安全等),否则风险将持续存在。
员工离职场景AccessKey回收
员工离职后,需及时检查并回收其名下的AccessKey,避免遗留的凭证被滥用。请按以下步骤操作:
登录RAM控制台,在用户列表中找到已离职员工对应的RAM用户。
单击该用户,进入用户详情页,切换到凭证管理页签。
检查该用户名下所有AccessKey的状态。
对状态为已启用的AccessKey,先执行禁用操作。禁用需通过安全验证(多因素认证MFA),如果该AccessKey最近60天内有调用记录,系统会提示禁用可能造成业务中断。
确认该AccessKey无业务依赖后,执行删除。删除时需手动输入AccessKey ID完成二次确认,删除后AccessKey会移入回收站,保留30天后自动清理。
为什么AccessKey存储在私有仓库、Nacos或离线数据库中仍被检测为泄露?
即使您认为AccessKey已安全存储,仍可能通过以下常见途径被检测或窃取:
代码仓库:私有仓库若曾公开、被Fork或协作者上传至其他位置,AccessKey仍可被扫描服务检测到。
配置中心(如Nacos):若未做权限控制、存在漏洞或服务器被入侵,明文存储的AccessKey可能被窃取。
离线存储:若读取AccessKey的应用或脚本曾联网调用API,密钥可能在传输过程中被截获或被日志记录。
应用漏洞:RCE(远程代码执行)或任意文件读取漏洞可导致服务器内配置文件中的AccessKey被窃取。
防范建议:
使用Credentials工具管理凭据,避免硬编码AccessKey。
配置AccessKey的网络访问限制(IP白名单)。
避免将AccessKey直接写入源代码或配置文件。
泄露后子账号安全使用规范
主账号AccessKey泄露后,按以下规范恢复安全使用:
创建独立子账号:不要使用主账号创建AccessKey。在RAM控制台创建独立的RAM用户,仅授予所需最小权限。创建时请注意以下实测要点:
选择访问方式时,界面文案已由“OpenAPI 调用访问”更新为使用永久 AccessKey 访问。
勾选我确认必须创建 AccessKey 确认框后,需完成安全验证(多因素认证 MFA)才能继续创建。
AccessKey Secret 仅在创建时显示一次,关闭对话框后无法再次查询,请立即妥善保存。
授权时,
AdministratorAccess会标记为“高风险”;请遵循最小权限原则,仅授权该 RAM 用户所需产品的最小权限(如AliyunOSSReadOnlyAccess),避免授予AdministratorAccess。如非长期免密调用场景,控制台推荐优先使用 STS Token 临时凭证替代永久 AccessKey,可进一步降低泄露风险。
AccessKey权限范围:子账号AccessKey权限仅限所附加的权限策略范围,不继承主账号的全部权限。
检查代码中的AccessKey配置:检查代码中所有AccessKey配置参数,删除明文AccessKey。如代码已上传至GitHub等第三方代码托管平台,可通过云安全中心的AK泄露检测功能排查。
使用安全凭证存储:使用环境变量或密钥管理服务(KMS)存储AccessKey,避免硬编码。具体操作,请参见使用访问凭据访问阿里云OpenAPI最佳实践。
发现非本账号的AccessKey泄露,能否申请紧急禁用?
由于隐私保护及权限隔离,阿里云无法直接根据泄露的AccessKey禁用非当前登录账号下的密钥。建议按以下方式处理:
若知晓AccessKey归属账号,应联系该账号持有者自行处理。
若拥有该AccessKey对应账号的权限,可通过
DeleteAccessKeyAPI或RAM控制台自行删除。跨账号或非己方账号的泄露AccessKey,需通过法律或安全合规渠道协调处理。