阿里云CLI(Alibaba Cloud Command Line Interface)是基于OpenAPI构建的通用命令行工具,您可以通过阿里云CLI实现自动化管理和维护STS(Security Token Service)。本文以调用AssumeRole
接口获取临时身份凭证为例,为您介绍使用阿里云CLI调用STS OpenAPI的操作步骤。
前置概念
阅读本文前,您可能需要了解如下概念:
步骤一:安装阿里云CLI
使用阿里云CLI前,您需要先安装阿里云CLI。阿里云CLI为用户提供了Windows、Linux和macOS三种操作系统下的安装服务,请根据您使用设备的操作系统选择对应的安装服务。
Windows:在Windows上安装阿里云CLI。
Linux:在Linux上安装阿里云CLI。
macOS:在macOS上安装阿里云CLI。
您也可使用阿里云提供的云命令行Cloud Shell调试阿里云CLI命令。关于云命令行的更多信息,请参见什么是云命令行。
步骤二:配置阿里云CLI
AssumeRole
接口仅支持使用RAM用户或RAM角色调用,不支持使用阿里云账号(主账号)调用。本文以使用RAM用户身份调用接口为例,
使用阿里云CLI之前,您需要在阿里云CLI中配置身份凭证、地域ID等信息。阿里云CLI支持多种身份凭证,详情请参见身份凭证类型。本文操作以AK类型凭证为例,具体操作步骤如下:
创建一个RAM用户,并创建AccessKey,以便后续配置身份凭证使用。具体操作,请参见创建RAM用户及创建AccessKey。
为RAM用户授权。本文示例需授予RAM用户调用STS服务
AssumeRole
接口的权限AliyunSTSAssumeRoleAccess
。具体操作,请参见为RAM用户授权。获取可用的地域ID,以便后续配置身份凭证使用。阿里云CLI将使用您指定的地域发起OpenAPI调用。STS服务可用的地域请参见服务接入点。
说明使用阿里云CLI过程中您可使用
--region
选项指定地域发起命令调用,该选项在使用时将忽略默认身份凭证配置及环境变量设置中的地域信息。详情请参见API命令可用选项。使用RAM用户的AccessKey配置AK类型凭证,配置文件命名为
AkProfile
。具体操作,请参见配置示例。
步骤三:创建RAM角色
角色全局资源描述符RoleArn
是调用AssumeRole
接口的必填参数。要获取该参数,您需要创建一个可信实体为阿里云账号的RAM角色。
本文示例中,您需要使用步骤二:配置阿里云CLI中创建的RAM用户扮演该角色,所以可信云账号需要设置为步骤二:配置阿里云CLI中RAM用户所属的阿里云账号ID。具体操作,请参见创建可信实体为阿里云账号的RAM角色。
您可以通过修改RAM角色信任策略的方法,修改允许扮演该RAM角色的RAM用户。具体操作 ,请参见修改RAM角色的信任策略。
步骤四:生成CLI命令示例
在OpenAPI门户中,访问AssumeRole调试地址。
在参数配置中输入请求参数,单击CLI示例页签,查看生成的CLI示例。
在云命令行中运行命令,或复制CLI示例。
步骤五:调用STS OpenAPI
示例一:获取支持阿里云CLI调用的STS OpenAPI
以下代码示例将为您展示如何使用--help
选项获取STS支持阿里云CLI调用OpenAPI列表。您也可在API概览中查看支持调用的OpenAPI。
执行命令。
aliyun sts --help
输出结果。
示例二:获取扮演RAM角色的临时身份凭证
以下代码示例将为您展示如何使用阿里云CLI调用STS的AssumeRole
命令,获取一个扮演RAM角色的临时身份凭证。
执行命令。
说明您可通过以下方式获取命令参数帮助信息:
执行
aliyun sts AssumeRole --help
命令,获取命令参数建议。阅读文档AssumeRole - 获取扮演角色的临时身份凭证,查看OpenAPI参数详情。
aliyun sts AssumeRole \ --DurationSeconds 3600 \ --Policy '{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}' \ --RoleSessionName alice \ --RoleArn 'acs:ram::123456789012****:role/adminrole' \ --ExternalId abcd1234
预期输出,其中
SecurityToken
即为所需的临时身份凭证。{ "RequestId": "6894B13B-6D71-4EF5-88FA-F32781734A7F", "AssumedRoleUser": { "AssumedRoleId": "34458433936495****:alice", "Arn": "acs:ram::123456789012****:role/adminrole/alice" }, "Credentials": { "SecurityToken": "********", "Expiration": "2015-04-09T11:52:19Z", "AccessKeySecret": "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****", "AccessKeyId": "STS.L4aBSCSJVMuKg5U1****" } }
说明如果调用安全令牌STS OpenAPI后返回错误,您需要根据返回的错误码提示检查传入的请求参数及其取值是否正确。
您可以记录下调用返回的RequestID或SDK报错信息,通过阿里云OpenAPI诊断平台进行自助诊断。