全部產品
Search
文件中心

Resource Access Management:使用阿里雲CLI調用STS OpenAPI

更新時間:Nov 23, 2024

阿里雲CLI(Alibaba Cloud Command Line Interface)是基於OpenAPI構建的通用命令列工具,您可以通過阿里雲CLI實現自動化管理和維護STS(Security Token Service)。本文以調用AssumeRole介面擷取臨時身份憑證為例,為您介紹使用阿里雲CLI調用STS OpenAPI的操作步驟。

前置概念

閱讀本文前,您可能需要瞭解如下概念:

步驟一:安裝阿里雲CLI

使用阿里雲CLI前,您需要先安裝阿里雲CLI。阿里雲CLI為使用者提供了Windows、Linux和macOS三種作業系統下的安裝服務,請根據您使用裝置的作業系統選擇對應的安裝服務。

您也可使用阿里雲提供的雲命令列Cloud Shell調試阿里雲CLI命令。關於雲命令列的更多資訊,請參見什麼是雲命令列

步驟二:配置阿里雲CLI

重要

AssumeRole介面僅支援使用RAM使用者或RAM角色調用,不支援使用阿里雲帳號(主帳號)調用。本文以使用RAM使用者身份調用介面為例,

使用阿里雲CLI之前,您需要在阿里雲CLI中配置身份憑證、地區ID等資訊。阿里雲CLI支援多種身份憑證,詳情請參見身份憑證類型。本文操作以AK類型憑證為例,具體操作步驟如下:

  1. 建立一個RAM使用者,並建立AccessKey,以便後續配置身份憑證使用。具體操作,請參見建立RAM使用者建立AccessKey

  2. 為RAM使用者授權。本文樣本需授予RAM使用者調用STS服務AssumeRole介面的許可權AliyunSTSAssumeRoleAccess。具體操作,請參見為RAM使用者授權

  3. 擷取可用的地區ID,以便後續配置身份憑證使用。阿里雲CLI將使用您指定的地區發起OpenAPI調用。STS服務可用的地區請參見服務存取點

    說明

    使用阿里雲CLI過程中您可使用--region選項指定地區發起命令調用,該選項在使用時將忽略預設身份憑證配置及環境變數設定中的地區資訊。詳情請參見API命令可用選項

  4. 使用RAM使用者的AccessKey配置AK類型憑證,設定檔命名為AkProfile。具體操作,請參見配置樣本

步驟三:建立RAM角色

重要

角色全域資源描述符RoleArn是調用AssumeRole介面的必填參數。要擷取該參數,您需要建立一個可信實體為阿里雲帳號的RAM角色。

本文樣本中,您需要使用步驟二:配置阿里雲CLI中建立的RAM使用者扮演該角色,所以可信雲帳號需要設定為步驟二:配置阿里雲CLI中RAM使用者所屬的阿里雲帳號ID。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色

您可以通過修改RAM角色信任策略的方法,修改允許扮演該RAM角色的RAM使用者。具體操作 ,請參見修改RAM角色的信任策略

步驟四:產生CLI命令樣本

  1. 在OpenAPI門戶中,訪問AssumeRole調試地址

  2. 參數配置中輸入請求參數,單擊CLI樣本頁簽,查看產生的CLI樣本。

  3. 在雲命令列中運行命令,或複製CLI樣本。

    • 單擊運行命令image按鈕,可喚出雲命令列並快速完成命令調試。

    • 單擊複製image按鈕,將CLI樣本複製到剪貼簿中,可粘貼至本地Shell工具中運行。

      說明
      • 複製CLI樣本到本地Shell工具中進行調試時請注意參數格式。關於阿里雲CLI命令參數使用格式的詳細資料,請參見參數格式說明

      • OpenAPI門戶產生樣本中會預設添加--region選項,複製命令到本地調用時阿里雲CLI將忽略預設身份憑證配置及環境變數設定中的地區資訊,優先使用指定的地區調用命令,您可根據需要對該選項進行刪除或保留。

image

步驟五:調用STS OpenAPI

樣本一:擷取支援阿里雲CLI調用的STS OpenAPI

以下程式碼範例將為您展示如何使用--help選項擷取STS支援阿里雲CLI調用OpenAPI列表。您也可在API概覽中查看支援調用的OpenAPI。

  1. 執行命令。

    aliyun sts --help
  2. 輸出結果。

    image

樣本二:擷取扮演RAM角色的臨時身份憑證

以下程式碼範例將為您展示如何使用阿里雲CLI調用STS的AssumeRole命令,擷取一個扮演RAM角色的臨時身份憑證。

  1. 執行命令。

    說明

    您可通過以下方式擷取命令參數協助資訊:

    aliyun sts AssumeRole \
      --DurationSeconds 3600 \
      --Policy '{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}' \
      --RoleSessionName alice \
      --RoleArn 'acs:ram::123456789012****:role/adminrole' \
      --ExternalId abcd1234
  2. 預期輸出,其中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診斷平台進行自助診斷。