更新时间:2026-01-12 gmt 08:00

使用访问凭证访问华为云openapi最佳实践-j9九游会登录

应用访问云服务openapi需要进行认证,常用的方式是在应用程序中维护一个访问密钥,使用访问密钥签名并调用云服务的openapi。但访问密钥一旦生成,除非主动禁用或删除,否则长期有效。一旦泄露,攻击者可以长期利用,并访问访问密钥所属用户有权限操作的所有云资源。为避免访问密钥泄露,应用程序需要对其进行安全防护,比如限制使用范围,加密存储、定期轮转等,无形中增加了访问密钥的使用门槛和使用成本。

访问凭证类型

访问凭证分为访问密钥和临时安全凭证:

  • 访问密钥,即ak/sk(access key id/secret access key),是您访问华为云时的一种永久身份凭证,不能登录控制台。系统通过ak识别访问用户的身份,通过sk进行签名验证,通过加密签名验证可以确保请求的机密性、完整性和请求者身份的正确性。具体请参见访问密钥
  • 临时安全凭证,包括临时访问密钥(临时ak/sk)和securitytoken。临时安全凭证除了具备访问密钥特性,还具备时效性,可对有效期进行设置,到期后无法重复使用,只能重新获取。临时安全凭证生命周期较短,因此相比永久访问密钥更加安全,而且也支持对原有的操作权限进行进一步约束。具体请参见临时安全凭证

典型的访问凭证泄露场景

  • 公开资料中存在明文的访问凭证。
  • 将包含访问凭证的代码上传至公开的github等公共代码仓。
  • 业务代码中有硬编码的明文访问凭证,并交给第三方员工使用。

访问凭证的安全使用方案

常见场景下,为了降低访问凭证泄露,对应的访问凭证安全使用方案如下表所示。

表1 访问凭证安全使用方案

方案名称

适用场景

在华为云命令行工具(koocli)中使用配置项参数设置访问凭证

您需要通过koocli调用云服务时,可以在koocli配置项中配置临时安全凭证、ecsagency(当在被委托的ecs服务器中使用koocli调用云服务时,会根据ecs委托自动获取临时认证信息)、sso登录的方式设置身份凭证,代替访问密钥。详细方案请参考。

在ecs上通过委托的临时访问密钥访问其他云服务

客户开发的应用程序运行的ecs实例上,该应用程序需要调用openapi访问云服务资源,此时需要为应用程序配置访问凭证进行身份验证。您可以创建ecs云服务委托,授权ecs服务从iam获取临时安全凭证,应用程序无需关注访问凭证的管理和维护,直接从ecs元数据服务获取临时安全凭证,即可签名后调用云服务openapi。ecs会为您自动轮换这些临时安全凭证,从而确保每次申请的临时安全凭证安全有效。详细方案请参考操作指导

其他场景

若以上方案均不适用于您的场景,建议您合理配置并保存访问凭证,并定期轮转。

在华为云命令行工具(koocli)中使用配置项参数设置访问凭证

  • 场景描述

    客户在命令行工具(koocli)上调用云服务,可以通过增加配置项的方式,设置访问凭证。已配置多个配置项的情况下,您可在命令中以“--cli-profile”指定要操作或使用的配置项的名称,以“--cli-mode”指定认证模式。

    认证模式取值范围:
    • 访问凭证:分为访问密钥和临时安全凭证。访问密钥即为永久ak/sk,临时安全凭证即为临时ak/sk和securitytoken。
    • ecsagency:当委托给ecs服务器时,在ecs服务器中使用koocli调用云服务时自动获取临时认证信息。建议使用该方式设置访问凭证,避免在命令行的历史信息中可查询到明文的访问凭证。
    • sso:开通iam身份中心并完成配置后,允许用户使用特定用户名和密码登录统一的用户门户网站,访问为其分配的多个账号下的资源。认证信息有效期内,无需多次登录。
  • 设置访问凭证
    • 设置认证模式为ak/sk的配置项,其中认证参数为临时安全凭证,即临时ak(cli-access-key),sk(cli-secret-key)和securitytoken(cli-security-token),使用临时安全凭证相比访问密钥,降低了凭证的暴露时间:
      hcloud configure set --cli-profile=testakskst --cli-mode=aksk --cli-region=cn-north-4 --cli-access-key=******** --cli-secret-key=******** --cli-security-token=******** --cli-project-id=068119468****************af89d2e --cli-domain-id=094518e46****************cfbc4c0 --cli-read-timeout=10 --cli-connect-timeout=5
    • 当配置项的认证模式为ak/sk时,若该配置项中同时配置了cli-security-token参数值,则默认其中cli-access-key和cli-secret-key为临时ak/sk,否则为永久ak/sk。
    • 设置认证模式为ecsagency的配置项,无需添加认证参数:
      hcloud configure set --cli-profile=testecsagency --cli-mode=ecsagency --cli-region=cn-north-4 --cli-read-timeout=10 --cli-connect-timeout=5
    • 当在被委托的ecs服务器中使用koocli调用云服务时,会根据ecs委托自动获取临时认证信息。
    • 设置认证模式为sso的配置项,其中认证参数为用户门户url(cli-sso-start-url),开通iam身份中心实例所在的区域(cli-sso-region),账号名(cli-sso-account-name),权限集名称(cli-sso-permission-set-name),其中参数cli-sso-account-name与cli-sso-permission-set-name非必填:
      1. 先新增认证模式为sso的配置项:
        hcloud configure set --cli-profile=testsso --cli-mode=sso --cli-region=cn-north-4 --cli-sso-start-url=https://idcenter.huaweicloud.com/d-3********6/portal --cli-sso-region=cn-north-4 --cli-sso-account-name=account_01 --cli-sso-permission-set-name=permission_01
      2. 进行sso登录,若第一步中未配置cli-sso-account-name与cli-sso-permission-set-name参数,登录过程中需按照提示选择账号名与权限集名称:
        hcloud configure sso --cli-profile=testsso

在ecs上通过委托的临时访问密钥访问其他云服务

  • 场景描述
    假如您是一位开发者,开发了一个应用程序,这个应用程序运行在ecs实例上,应用程序的代码中涉及调用openapi访问华为云服务。您的应用程序若想要以更安全的方式访问云服务,需要获取临时访问凭证,而iam的委托功能,则支持通过ecs委托获取临时访问密钥。
    图1 通过ecs委托获取临时访问密钥
  • 操作步骤
    通过ecs委托获取临时访问密钥的操作流程如下图所示。详细操作步骤请参见操作指导
    图2 通过ecs委托获取临时访问密钥的操作流程

其他场景

若以上方案均不适用,必须使用访问密钥时,建议按照以下最佳实践妥善管理:

  • 不为华为账号创建访问密钥。
  • 不为仅需要访问控制台的iam用户创建访问密钥。
  • 不将访问密钥明文嵌入代码。
  • 妥善保管访问密钥,不随意分享,不记录在公开文档中。
  • 为iam用户仅授予最小必要权限。
  • 访问密钥停用后,及时删除。
  • 定期轮转访问密钥:一个iam用户启用一对访问密钥后,另一对仅用于轮转。

相关文档

网站地图