API Key 是访问控制 RAM 为接入云服务签发的服务凭证(OpenAPI 中称为 ServiceCredential),专用于调用该云服务的 OpenAPI。本章介绍 API Key 的概念与全生命周期管理。
在调用特定云服务的OpenAPI时,您可以使用 API Key 作为认证凭证。API Key 在创建时绑定单一云服务,仅可用于调用该云服务的 API,安全风险范围相比 AccessKey 更可控。
核心特征
服务范围隔离:每个 API Key 在创建时指定一个云服务(ServiceName),仅可调用该云服务接入的 API;不能跨服务调用,也不能通过授权扩大服务范围。
权限叠加最小化:API Key 的最终权限 = 所属 RAM 用户的权限 ∩ 该云服务 Scope。即使 RAM 用户拥有多服务权限,API Key 也只能在指定服务范围内生效。
身份限定:仅 RAM 用户可创建 API Key,阿里云账号(主账号)不支持创建,以减少凭证泄露的影响范围。
名称差异:OpenAPI、SDK 中使用
ServiceCredential(服务凭证),控制台为便于理解使用 API Key。两者指同一资源。
API Key 与 AccessKey 的区别
API Key 与 AccessKey 都是 RAM 用户的长期身份凭证,但服务范围、签发方式和适用场景不同。
对比项 | API Key | AccessKey |
服务范围 | 创建时绑定单一云服务,仅可调用该服务的 OpenAPI | 无服务范围限制,可调用 RAM 用户已授权的所有云服务 |
权限模型 | RAM 用户权限 ∩ 云服务 Scope,最小化权限 | 完全继承 RAM 用户的全部已授权权限 |
支持的身份 | 仅 RAM 用户可创建,不支持阿里云账号(主账号) | 阿里云账号、RAM 用户均可创建 |
配额 | 每个 RAM 用户在每个云服务下最多 2 个,不可提升 | 每个身份最多 2 个 |
有效期 | 创建时设置 1–36600 天,或永不过期;过期后自动失效,不可恢复 | 长期有效,无内置过期机制 |
典型用途 | AI 模型调用、第三方平台/开发工具集成、需要按服务隔离的场景 | 通用 OpenAPI/SDK 调用、跨服务编排、CI/CD 自动化 |
生命周期状态
API Key 在生命周期内可处于以下三种状态:
已启用:凭证可用于调用绑定云服务的 OpenAPI。创建后默认为该状态。
已禁用:凭证暂时不可用。可通过启用恢复为
Active。删除前必须先进入此状态。已过期:到达过期时间后系统自动转入此状态,凭证永久失效,不可恢复。需重新创建。
配额与有效期
配额:每个 RAM 用户在每个云服务下最多创建 2 个 API Key(含
Active与Inactive),不可提升。已过期的API Key仍占用配额,已删除的 API Key 不占用配额。有效期单位:天。
取值范围:控制台预置 1 / 7 / 30 / 90 天与永不过期,并支持自定义。
OpenAPI 默认:调用
CreateServiceCredential时不传CredentialAgeDays,默认永不过期。过期不可恢复:到期后凭证状态变为
Expired且永久失效,无法通过启用恢复为可用状态,需删除并重新创建。
建议根据云服务的实际使用周期为 API Key 设置合理的过期时间,避免长期使用永不过期的凭证。请在到期前完成应用侧的凭证轮转,避免业务中断。
支持的云服务
在 RAM 控制台 用户详情 页 > 凭证管理 标签页 > API Keys 区块中点击 创建 API Key,云服务 下拉中可选项即为账号当前可用的云服务。每个云服务支持调用的 API 范围请参阅相应云产品文档。
RAM 用户如何自主管理
阿里云账号或具备相应权限的 RAM 管理员,可在 RAM 安全设置中通过 AllowUserToManageServiceCredential 控制是否允许 RAM 用户自主管理自己的 API Key。该开关的两种状态及其影响如下:
允许自主管理:RAM 用户可登录控制台或调用 OpenAPI 自行创建、更新、删除自己的 API Key,前提是未被管理员通过权限策略明确拒绝(即不存在显式 Deny 策略)。
不允许自主管理:RAM 用户无法管理自己的 API Key,须由具备
ram:CreateServiceCredential等权限的管理员代为创建与维护。
授权方式
在实际授权时,可根据管控强度从以下三种方式中选择:
授予 RAM 管理员系统策略(集中管控):为账号管理员授予
AliyunRAMFullAccess,由其代用户创建与维护 API Key。该策略包含完整的 RAM 管理权限,适用于由专人统一管控所有 RAM 用户凭证的场景。开启全局自主管理开关(不建议生产环境):在 RAM 安全设置中打开
AllowUserToManageServiceCredential后,账号下所有 RAM 用户均可自主管理自己的 API Key(除非通过显式 Deny 策略约束)。便于团队自助使用,但放权范围最广,建议仅在受控的测试或沙箱场景使用。下发自定义策略(推荐):保持全局开关关闭,仅向需要自主管理 API Key 的特定 RAM 用户下发自定义策略,将
Resource限定到用户本人;必要时再通过ram:ServiceCredentialServiceNameCondition 限定到具体云服务。在不放开全账号自主管理的前提下精确授权所需用户。
开启 AllowUserToManageServiceCredential 全局开关后,所有 RAM 用户均可自主管理自己的 API Key(包括创建、启用、禁用、删除等操作),除非管理员为其分配拒绝相关操作的权限策略。生产环境强烈建议关闭该开关,仅通过自定义策略精细授权。
自定义策略示例
下列示例策略将 Resource 限定到 RAM 用户本人,附加给目标 RAM 用户后,该用户即可在自身账户上执行允许的操作。使用前请将 ACCOUNT_ID 替换为账号 ID(可在 阿里云账号中心查看),将 USER_NAME 替换为目标 RAM 用户的登录名(不含 @ 后缀部分)。
允许用户自主创建 API Key
仅允许用户为自己创建并查看 API Key,不允许修改或删除。适合最小权限原则下的轻量授权。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}允许用户自主管理 API Key(全生命周期)
允许用户自行完成创建、查看、改名、启用、禁用、删除等全部 API Key 操作,覆盖完整生命周期。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}限定到特定云服务
在管理权限的基础上叠加 ram:ServiceCredentialServiceName Condition,仅允许用户管理某个云服务(示例为 ak.aliyuncs.com)下的 API Key,可用于"按云服务划分凭证管理权"的精细化授权场景。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME",
"Condition": {
"StringEquals": {
"ram:ServiceCredentialServiceName": "ak.aliyuncs.com"
}
}
}
]
}API Key 数据结构
每个 API Key 由以下核心字段组成。OpenAPI 返回的字段名以 ServiceCredential 为命名前缀;控制台中字段名经过翻译呈现。
OpenAPI 字段 | 控制台字段 | 说明 |
ServiceCredentialId | ID | 系统自动生成,前缀 |
ServiceCredentialName | 名称 | 用户友好的标识名,便于识别用途。控制台默认填充为 |
ServiceName | 云服务 | 绑定的云服务标识(如 |
ServiceCredentialSecret | API Key | 凭证密钥明文,仅在创建成功的弹窗中返回一次。后续 List/Get 接口与控制台均不再返回明文。 |
CreateTime | 创建时间 | UTC 时间,ISO-8601 格式。控制台展示为本地时间。 |
ExpirationTime | 过期时间 | 到期后凭证失效,状态变为 |
Status | 状态 | 凭证状态,取值 |
UserPrincipalName | 所属用户 | RAM 用户登录名(UPN,形如 |
安全建议
为 API Key 设置过期时间:短期测试避免设置永不过期。其他情况下建议设置有效期,建议根据云服务的使用周期设定 30 天或 90 天,并在到期前轮转。
创建后务必立即复制或下载 CSV 保存 API Key 明文,关闭弹窗后将无法再次获取;遗失只能删除后重新创建。
将 API Key 视为高敏感凭证,禁止以明文形式提交到代码仓库、配置文件或日志,建议接入凭证托管或 KMS 加密存储。