本文为您介绍访问密钥(AccessKey)相关的一些常见问题。包括什么是AccessKey、如何查看AccessKey、AccessKey是否还在使用、AccessKey泄露后如何处理等。
什么是AccessKey
访问密钥AccessKey(简称AK)是阿里云提供给用户的长期访问凭证,由AccessKey ID和AccessKey Secret组成的一组密钥对。
-
AccessKey ID:访问密钥的唯一公开标识符。
-
AccessKey Secret:访问密钥的密文部分。用于对API请求进行签名,以验证请求的真实性和完整性。AccessKey Secret必须严格保密。
为降低AccessKey泄露的风险,AccessKey Secret 只在创建时显示一次,后续无法查看。请务必妥善保管。
如何使用AccessKey
AccessKey不能用于控制台登录,而是用于以程序性的方式(如使用CLI、SDK、Terraform等)调用阿里云API。
根据阿里云的最佳实践,程序或服务应尽可能避免直接使用AccessKey来访问阿里云资源。阿里云提供了多种无AK方案,帮助您使用安全性更高的临时身份凭证(STS Token)访问阿里云资源。具体使用案例请参考:应用开发场景。
如确有需要创建和使用AccessKey,请参考使用AccessKey的最佳实践:正确保管和使用不可避免的AccessKey。
AccessKey的工作原理
AccessKey ID和AccessKey Secret由访问控制(RAM)根据算法生成,阿里云对其存储及传输均进行加密。
当程序使用AK发起请求时,请求会携带AccessKey ID以及使用AccessKey Secret加密请求内容生成的签名。阿里云收到请求后,会对其进行身份验证及请求合法性校验。关于阿里云所采用的具体签名机制,请参见V3版本请求体&签名机制。
阿里云有几种AccessKey?
-
阿里云账号(主账号)AccessKey(不推荐)
由阿里云账号(主账号)直接创建,默认拥有当前账号下的全部操作权限,可对所有资源执行管理。一旦主账号 AccessKey 泄露,风险极高。强烈建议不创建和使用主账号AccessKey。
-
RAM用户AccessKey(推荐)
属于RAM用户的程序访问凭证。需要先创建RAM用户,然后才能为其创建AccessKey。RAM用户AccessKey继承RAM用户的权限,可以进行最小化权限管理。建议针对每一个独立业务应用分配一个独立的RAM用户和AccessKey,防止因混用造成权限过大或泄露风险扩大。
主账号AccessKey默认拥有当前账号下的全部操作权限(等同于管理员权限),使用主账号AccessKey调用任何云服务API(例如短信服务、ECS、OSS等)均无需单独授权。
由于主账号AccessKey权限过大,一旦泄露将导致账号下所有资源面临安全风险。强烈建议使用RAM用户AccessKey替代主账号AccessKey,并遵循最小权限原则进行授权。
创建AccessKey后,可以查看哪些信息?
创建AccessKey后,您可以再次查看AccessKey ID、状态、最后使用云服务、最后使用时间和创建时间等基本信息。关于如何查看RAM用户的AccessKey信息,请参见查看RAM用户的AccessKey信息。
创建AccessKey后,能否再次查看AccessKey ID?
可以。
创建AccessKey后,能否再次查看AccessKey Secret?
不能。AccessKey Secret不仅无法再次查看,也不支持修改。为降低AccessKey泄露的风险,阿里云账号(主账号)和RAM用户的AccessKey Secret只在创建时显示,后续不支持查看或修改,请妥善保管。
如果AccessKey Secret丢失或需要更换,唯一的解决方法是创建一个新的AccessKey对。请在保存好新的AccessKey Secret后,禁用或删除旧的AccessKey。
每个阿里云账号(主账号)最多创建 2 个AccessKey。创建新AccessKey前,请确认是否有空余配额。如已达上限,需先禁用或删除不再使用的AccessKey。
创建AccessKey时,AccessKey Secret仅在创建成功的弹窗中显示一次。请务必在关闭弹窗前复制并妥善保存,关闭后将无法再次获取。
如何判断AccessKey是否还在使用?
您可以通过控制台或API查看AccessKey的最后使用时间,以此判断AccessKey是否还在使用。具体如下:
阿里云账号(主账号)登录时,查看该阿里云账号AccessKey的最后使用时间。RAM用户登录时,查看该RAM用户AccessKey的最后使用时间。
阿里云账号(主账号)或具有管理员权限的RAM用户登录时,查看所有RAM用户AccessKey的最后使用时间。具体操作,请参见查看RAM用户的AccessKey信息。
您可以调用该API查看阿里云账号(主账号)或RAM用户AccessKey的最后使用时间。
创建AccessKey后,能否修改AccessKey ID?
AccessKey ID不能修改。您只能禁用、启用或删除AccessKey。
AccessKey删除后能否恢复?
RAM提供了回收站功能,删除RAM用户的AccessKey时,会先将AccessKey移入回收站,回收站中的AccessKey支持恢复。
但是,回收站中的AccessKey保存期限为30天,超过期限系统会自动清理这些AccessKey,也就是彻底删除AccessKey。您也可以在回收站中手动彻底删除Accesskey。对于彻底删除的AccessKey,无法恢复。
更多信息,请参见删除RAM用户的AccessKey。
删除AccessKey需慎重,在使用中的AccessKey一旦删除,可能会造成您的应用系统故障。
AccessKey疑似泄露时如何处理?
具体操作,请参见AccessKey泄露处理方案。
如何查询AccessKey归属的账号?
AccessKey是一种程序访问凭证,属于敏感信息,阿里云无法向您提供查询任意AccessKey归属账号的能力。
如您确实有此类需求,您可以尝试以下方法,查询您权限范围内的AccessKey归属信息:
您可以使用自己的阿里云账号登录RAM控制台,在用户页面的搜索框中,输入AccessKey ID查询。如您有多个阿里云账号时,需要在各个账号中依次查询。
如果您开通了资源目录,且在操作审计中创建多账号跟踪,将资源目录内所有成员的操作事件投递到日志服务SLS或对象存储OSS,您就可以在审计日志中尝试查询AccessKey归属信息。
查询时需确保输入的AccessKey ID完全正确,注意区分大小写和相似字符(如数字 0 与字母 O、数字 1 与字母 l)。输入错误的 ID 会导致查询结果提示"不存在"。
RAM用户无法直接查看主账号的AccessKey信息(包括AccessKey ID和AccessKey Secret),只能查看自己所属的主账号名称。如需查询主账号的AccessKey,请使用主账号登录AccessKey管理页面,或通过资源目录和操作审计的多账号跟踪功能进行查询。
遇到报错“There is a risk of leakage of this AccessKey.”时,如何处理?
该报错表示当前用于身份验证的AccessKey已被限制性保护。解决办法,请参见AccessKey限制性保护说明。
当出现API调用被网络访问限制策略拒绝,且该拒绝不符合您的预期时,该怎么办?
问题现象
AccessKey网络访问限制策略生效后,调用来源IP地址不在允许范围内将会被拒绝,常见的报错如下:
Message: The specified parameter "AccessKeyId.AccessPolicyDenied" is not valid.Message: code: 400, Specified access key denied due to access policy.
解决方案
当出现调用被网络访问限制策略拒绝,且该拒绝不符合您的预期时,您可以按如下操作尝试解决:
-
确认被限制的AccessKey是否设置了AccessKey级网络访问限制策略。
-
是:修改AccessKey级网络访问限制策略,将来源IP地址加入到策略中。
-
否:继续下一步检查。
-
-
使用RAM管理员检查并修改账号级AccessKey网络访问限制策略,将来源IP地址加入到策略中。
-
如果还存在问题,可能考虑是因为来源IP地址不准确,您需要检查并获取准确的IP地址。
您可以通过操作审计辅助查询AccessKey的历史调用来源IP地址。更多信息,请参见在操作审计查看历史调用IP地址。
收到报错码 InvalidAccessKeyId.AccessPolicyDenied 时,如何处理?
当您收到报错码InvalidAccessKeyId.AccessPolicyDenied时,该报错同样表示当前AccessKey因网络访问限制策略被拒绝访问。处理方式与AccessKeyId.AccessPolicyDenied一致:检查AccessKey级别或账号级别的网络访问限制策略,将请求来源IP添加到白名单中。如无法确定来源IP,可尝试新建一个AccessKey进行测试排查。
为什么AccessKey已禁用或删除,仍收到异常调用告警?
AccessKey已禁用或删除后仍收到安全告警属于正常情况,主要原因如下:
告警基于行为模型分析:安全检测系统基于底层流量和行为模型进行实时分析。即使AccessKey已被禁用,如果在禁用前曾发生泄露或被攻击者使用,系统仍会基于历史行为模式推送告警通知。
日志查询范围差异:控制台操作记录默认仅展示部分写操作日志,读类接口(如
QueryAccountBalance)的调用记录可能不显示。如需查看完整的调用详情,建议通过以下方式查询:登录RAM控制台,查看安全信息中的站内信通知。
通过操作审计(ActionTrail)查询完整的操作事件日志。
历史告警处理:如果已确认AccessKey已禁用且已使用新的AccessKey替代,收到的告警可能是针对禁用前的历史调用事件。核实确认后可忽略该告警。
误报排查:如果怀疑告警为误报,可通过操作审计查询该AccessKey的具体调用记录,核实是否存在异常调用行为。
为什么收到的AccessKey异常告警IP归属地与第三方工具查询结果不一致?
阿里云安全告警及操作审计中显示的IP归属地信息以阿里云内部IP地址库为准。该地址库与百度IP查询等第三方工具使用的地址库不同,因此对同一IP地址的地理位置判定可能存在差异(例如阿里云显示为中国香港,而第三方工具显示为新加坡)。
遇到IP归属地不一致的情况时,请以阿里云系统的识别结果为准。
RAM用户已删除或主账号已注销,为何仍收到AccessKey异常告警?
根据不同场景,处理方式有所不同:
RAM用户已删除
告警中涉及的AccessKey可能并非已删除RAM用户的AccessKey,而是主账号下仍处于启用状态的其他AccessKey。建议使用主账号登录AccessKey管理页面,核实告警中的AccessKey ID归属,并对异常的AccessKey进行禁用或删除处理。
主账号已注销
账号注销完成后,该账号下的所有资源(包括AccessKey)会被系统自动清除,无需手动操作。如果注销后仍收到告警或发现AccessKey可用,请核实以下事项:
账号是否已真正完成注销流程(未完成注销的账号资源不会被清除)。
告警中的AccessKey是否属于其他未注销的账号。
AccessKey异常告警中的调用是通过API还是控制台登录触发的?
AccessKey异常告警中涉及的调用均为API调用,不涉及控制台登录。
AccessKey仅用于API、CLI、SDK等程序化方式访问阿里云服务,不能用于登录阿里云控制台。控制台登录使用的是账号密码或其他身份验证方式,与AccessKey无关。
此外,当通过RAM用户的AccessKey调用API时,操作审计日志中会显示该RAM用户名,这是正常的身份追溯机制。无论API调用成功或失败,操作审计都会记录对应的调用事件。
AccessKey网络访问限制策略是否支持配置IP黑名单?
AccessKey网络访问限制策略仅支持IP白名单模式,不支持直接配置IP黑名单。启用该策略后,只有白名单中的IP地址才能使用对应的AccessKey调用API。
如果需要限制特定IP地址访问云服务资源,可以通过以下方式实现:
在对应云产品的控制台配置访问控制策略。例如,OSS支持通过Bucket Policy配置IP黑名单,拒绝来自指定IP地址的访问请求。
在RAM中启用AccessKey网络访问限制策略,仅将允许访问的IP地址添加到白名单中。未在白名单中的IP地址将被自动拒绝,从而间接实现黑名单效果。
配置AccessKey网络访问限制后仍收到异常调用告警是否正常?
正常。启用AccessKey网络访问限制策略后,来自非白名单IP地址的API调用会被系统拦截并返回AccessPolicyDenied错误,调用不会实际执行。但该拦截行为本身仍会被安全检测系统记录并触发告警。
收到此类告警表示有非授信IP尝试使用您的AccessKey访问云服务,但请求已被网络访问限制策略有效阻断。这属于预期的安全防护行为,不代表调用成功。
RAM网络访问限制策略添加IP失败或无法提交怎么办?
配置网络访问限制策略时遇到添加IP失败或无法提交的情况,请按以下要点排查:
公网策略:确保输入的IP地址格式正确(支持单个IP地址或CIDR格式,如
192.168.1.0/24)。如果仅需限制公网访问来源,应明确添加允许的目标IP地址,而非依赖"允许所有公网访问"选项。专有网络策略:必须填写真实存在的VPC ID。您可以登录VPC控制台核实VPC ID是否正确。填写不存在或格式错误的VPC ID会导致提交失败。
无需限制的网络类型:如果不使用某类网络(例如未使用VPC),可以不配置对应的网络策略,避免因填写无效信息导致校验失败。
修改 RAM 用户登录名/显示名,AccessKey 会变吗?
不会。AccessKey ID/Secret 不变,API/SDK/CLI 可继续调用;控制台登录需用新登录名。若脚本、SSO、策略或内部系统引用旧登录名,请同步更新。禁用/删除 AccessKey 或删除 RAM 用户才会失效。