本文为您介绍访问密钥(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后,您可以再次查看AccessKey ID、状态、最后使用云服务、最后使用时间和创建时间等基本信息。关于如何查看RAM用户的AccessKey信息,请参见查看RAM用户的AccessKey信息。
创建AccessKey后,能否再次查看AccessKey ID?
可以。
创建AccessKey后,能否再次查看AccessKey Secret?
不能。为降低AccessKey泄露的风险,阿里云账号(主账号)和RAM用户的AccessKey Secret只在创建时显示,后续不支持查看,请妥善保管。
如何判断AccessKey是否还在使用?
您可以通过控制台或API查看AccessKey的最后使用时间,以此判断AccessKey是否还在使用。具体如下:
阿里云账号(主账号)登录时,查看该阿里云账号AccessKey的最后使用时间。RAM用户登录时,查看该RAM用户AccessKey的最后使用时间。
阿里云账号(主账号)或具有管理员权限的RAM用户登录时,查看所有RAM用户AccessKey的最后使用时间。具体操作,请参见查看RAM用户的AccessKey信息。
GetAccessKeyLastUsed - 查询指定访问密钥的最后使用时间
您可以调用该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归属信息:
遇到报错“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地址。