为阿里云CLI配置OAuth认证

本文介绍如何为阿里云CLI配置并使用基于OAuth的交互式登录,以替代传统的访问密钥(AK)认证,从而提升凭证管理的安全性。

概览

阿里云CLI自 v3.0.299 版本起,支持使用OAuth作为凭证类型。该方式通过交互式的浏览器登录流程(基于OAuth2.0 PKCE)获取代表用户身份的令牌,用于访问阿里云资源。

与传统的访问密钥(AK)认证相比,OAuth认证的优势如下:

  • 提升安全性:无需在本地配置文件中存储明文AK,可降低凭证泄露风险。

  • 集成现有认证体系:支持与通行密钥、多因素认证(MFA)、SSO(用户SSO或角色SSO)等登录方式结合使用。

准备工作

在开始之前,请确保满足以下条件:

  • CLI版本:阿里云CLI版本为 v3.0.299 或更高。

  • 管理员权限:执行首次配置的管理员账号拥有 AliyunRAMFullAccess 权限。

  • 环境要求:阿里云CLI与用于授权的浏览器必须运行在同一台设备上。不支持在无图形界面的服务器(例如,通过SSH连接的Linux终端)上执行授权操作。

配置流程

  1. 管理员创建CLI应用 您可以通过以下两种方式来在阿里云账号的访问控制(RAM)中创建CLI应用:

    • 通过管理员授权创建。由RAM管理员在CLI中首次发起OAuth登录,并在浏览器中完成认证和管理员授权操作。完成后,系统会自动创建一个名为 offical-cli 的官方OAuth应用。

    • 通过控制台主动安装。由RAM管理员通过控制台主动安装CLI应用offical-cli,省去了执行管理员授权的操作。

  2. 管理员分配身份。CLI应用创建完成后,管理员(主账号除外)需要为应用分配身份(RAM用户或角色),被分配的身份才可以用该方式登录CLI。

  3. 用户授权并登录CLI被分配的RAM用户在自己的设备上运行CLI配置命令,CLI会自动打开浏览器。用户在浏览器中完成登录和授权后,CLI便能成功获取令牌并完成认证。

步骤一:管理员创建CLI应用

本步骤需要由具备 AliyunRAMFullAccess 权限的RAM管理员执行,为整个组织创建应用。

通过管理员授权创建

  1. 选择OAuth认证模式。在管理员的终端中执行以下命令,开始配置OAuth登录信息。建议为Profile指定一个易于理解的名称,例如 OAuthProfile

    aliyun configure --profile OAuthProfile --mode OAuth
  2. 选择登录站点。根据提示输入登录站点OAuth Site Type

    aliyun configure --profile OAuthProfile --mode OAuth
    Configuring profile 'OAuthProfile' in 'OAuth' authenticate mode...
    OAuth Site Type (CN: 0 or INTL: 1, default: CN): 
    • 输入0CN:设置登录站点为阿里云中国站

    • 输入1INTL:设置登录站点为阿里云国际站。

    • 直接回车:默认选择中国站(CN)。

  3. 管理员登录。CLI将自动打开浏览器。如果浏览器窗口未弹出,您可以根据CLI的提示信息,手动复制登录URL(SignIn url)至浏览器中,完成登录。

    提示信息示例:

    If the browser does not open automatically, use the following URL to complete the login process:
    
    SignIn url: https://signin.aliyun.com/oauth2/v1/auth?response_type=code&client_id=...
  4. 执行管理员授权操作。在浏览器打开的官方应用授权页面,单击授权。 此操作将在您的账号中创建 显示名称为offical-cli 的OAuth第三方应用除非offical-cli 应用被删除,否则管理员授权操作只需执行一次

    26044A84-9853-42D9-96FD-E53AAF76D6AB

    在授权过程中,CLI会请求以下OAuth范围(OAuth服务通过OAuth范围来限定应用扮演用户登录阿里云后可以访问的范围):

    OAuth范围

    OAuth范围描述

    openid

    获取RAM用户的OpenID。OpenID是一个唯一标识用户的字符串,不包含阿里云UID、用户名等敏感信息。

    /internal/ram/usersts

    用于获取STS凭证,以调用阿里云服务API。

    说明

    该范围目前仅允许CLI官方应用使用。

通过控制台主动安装

  1. 登录RAM控制台

  2. 导航到集成管理 > OAuth应用,单击第三方应用页签。

  3. 第三方应用页签下,单击安装官方应用

  4. 在弹出的安装官方应用对话框中,选择官方CLI,并单击确定

    C5F0E52E-378B-4FD6-9E64-6935C3A6E904

  5. 第三方应用列表中,确认显示名称为offical-cli的应用已被创建。

步骤二:管理员分配身份

如果您是通过管理员授权的方式创建的CLI应用,在授权成功后,页面会提示您为应用分配用户。如果您是通过控制台主动安装的CLI,请跳过步骤1。

  1. 单击立即前往,页面将跳转至访问控制(RAM)控制台OAuth第三方应用详情页面。 

    3376963A-C832-49E4-834A-A78FFFCA3165

    或者,您也可以直接登录阿里云RAM控制台并导航到集成管理 > OAuth应用,单击第三方应用页签。在第三方应用列表中,找到并单击显示名称为offical-cli的应用。 

  2. 在控制台offical-cli应用详情页,单击分配页签,然后单击创建分配。 

  3. 在弹出的创建分配面板中,勾选需要通过OAuth方式登录CLIRAM身份(RAM用户或RAM角色),然后单击确定完成分配。 

    FDF196E1-E821-46E0-B6DC-2BD407BD99D6

步骤三:用户授权并登录CLI

本步骤由已被管理员分配给 offical-cli 应用的RAM用户在自己的设备上执行。

  1. 选择OAuth认证模式。在终端中执行以下命令,开始配置OAuth登录信息。

    aliyun configure --profile OAuthProfile --mode OAuth
  2. 选择登录站点。根据提示选择登录站点(CN 或 INTL)。

  3. 用户登录。在自动弹出的浏览器窗口中,使用您的RAM用户身份登录,

  4. 执行用户授权操作。在浏览器打开的用户授权页面,单击授权,以完成用户授权。除非offical-cli 应用被删除,否则用户授权仅需在首次登录时完成一次,后续该用户登录无需再次授权

    ED1E8AA1-4FA3-4DDB-8B55-BD09945222AC

    角色登录。 CLIOAuth认证方式也支持RAM角色。您可以在浏览器中先使用角色SSO的方式从身份提供商(IdP)侧完成控制台登录,或在登录控制台后切换身份到对应RAM角色。然后再执行步骤1从终端触发OAuth登录,这样即可以RAM角色的身份登录CLI。

    说明

    管理员授权与用户授权的目的不同,即便完成了管理员授权,用户授权也不可省略。

    • 管理员授权:将official-cli应用添加到阿里云账号中,允许账号内身份经过分配后访问该应用。

    • 用户授权:授权阿里云CLI代表用户访问所许可的阿里云资源或执行特定操作。

  5. 设置默认地域。授权成功后返回终端,根据提示输入默认地域。

    Default Region Id []: cn-hangzhou
    说明

    部分云产品不支持跨地域访问,建议您优先将默认地域设置为已购资源所在地域。

  6. 终端显示 Configure Done 及欢迎信息,表示配置成功。

  7. (可选)验证登录身份。执行以下命令来查看当前登录CLI的身份信息:

    aliyun sts GetCallerIdentity --profile OAuthProfile

使用限制

  • 不支持通过用户组为 offical-cli 应用进行分配,必须明确指定到RAM用户或角色。

  • CLI与浏览器必须运行在同一台设备上,不支持在无图形化界面的环境(例如,通过SSH连接的Linux服务器)中执行授权。

常见故障排除

在管理员授权页面,单击“授权”后出现“调用未被授权”的错误

928A24C5-F30E-42E4-A0DF-D51A71F11442

原因:当前在浏览器中登录的账号不具备 AliyunRAMFullAccess 权限,即不是RAM管理员账号。 

解决方案:在阿里云控制台中退出登录,使用具备AliyunRAMFullAccess权限的RAM管理员账号登录并执行授权操作。若您不具备权限请联系相关管理员进行操作。

相关文档