服务凭证管理(API Key)

更新时间:
复制 MD 格式

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(含 ActiveInactive),不可提升。已过期的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:ServiceCredentialServiceName Condition 限定到具体云服务。在不放开全账号自主管理的前提下精确授权所需用户。

警告

开启 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

系统自动生成,前缀 SC。后续启用、禁用、删除等操作均通过此 ID 定位。

ServiceCredentialName

名称

用户友好的标识名,便于识别用途。控制台默认填充为 {云服务名}_apikey_{随机字符},可在创建后修改。

ServiceName

云服务

绑定的云服务标识(如 ak.aliyuncs.com),创建时确定,不可修改。

ServiceCredentialSecret

API Key

凭证密钥明文,仅在创建成功的弹窗中返回一次。后续 List/Get 接口与控制台均不再返回明文。

CreateTime

创建时间

UTC 时间,ISO-8601 格式。控制台展示为本地时间。

ExpirationTime

过期时间

到期后凭证失效,状态变为 Expired。永不过期时为 null,控制台显示为"永不过期"。

Status

状态

凭证状态,取值 Active/Inactive/Expired

UserPrincipalName

所属用户

RAM 用户登录名(UPN,形如 us**@account.onaliyun.com)。

安全建议

  • 为 API Key 设置过期时间:短期测试避免设置永不过期。其他情况下建议设置有效期,建议根据云服务的使用周期设定 30 天或 90 天,并在到期前轮转。

  • 创建后务必立即复制或下载 CSV 保存 API Key 明文,关闭弹窗后将无法再次获取;遗失只能删除后重新创建。

  • 将 API Key 视为高敏感凭证,禁止以明文形式提交到代码仓库、配置文件或日志,建议接入凭证托管或 KMS 加密存储。