Alibaba Cloud CLI は、OpenAPI 上に構築された汎用コマンドラインツールで、セキュリティトークンサービス (STS) の管理とメンテナンスを自動化できます。次の例では、AssumeRole API オペレーションを呼び出して、一時的なセキュリティ認証情報を取得します。
前提条件
先に進む前に、次の概念をよく理解しておいてください。
ステップ 1:Alibaba Cloud CLI のインストール
使用する前に Alibaba Cloud CLI をインストールします。インストールパッケージは、Windows、Linux、macOS で利用できます。ご利用のオペレーティングシステムに適したパッケージを選択してください。
また、Cloud Shell を使用して Alibaba Cloud CLI コマンドをデバッグすることもできます。詳細については、「Cloud Shell とは」をご参照ください。
ステップ 2:Alibaba Cloud CLI の設定
AssumeRole API オペレーションは、RAM ユーザーとして、または RAM ロールを引き受けることによってのみ呼び出すことができます。Alibaba Cloud アカウント (ルートアカウント) でこのオペレーションを呼び出すことはできません。このトピックの例では、RAM ユーザーを使用します。
Alibaba Cloud CLI を使用する前に、認証情報とリージョン ID を設定します。Alibaba Cloud CLI は複数の認証情報タイプをサポートしています。詳細については、「認証情報の設定と管理」をご参照ください。この例では、AccessKey ペアを使用します。次の手順に従ってください。
-
設定に使用する RAM ユーザーと AccessKey ペアを作成します。詳細については、「RAM ユーザーの作成」および「AccessKey の作成」をご参照ください。
-
RAM ユーザーに権限を付与します。この例では、
AliyunSTSAssumeRoleAccessポリシーをアタッチして、STS のAssumeRoleAPI オペレーションを呼び出す権限を RAM ユーザーに付与する必要があります。詳細については、「RAM ユーザーの権限管理」をご参照ください。 -
利用可能なリージョンの ID を取得します。Alibaba Cloud CLI は、指定したリージョンに API リクエストを送信します。利用可能な STS リージョンの一覧については、「エンドポイント」をご参照ください。
説明Alibaba Cloud CLI を使用する場合、コマンドに
--regionオプションを追加して、リクエストのリージョンを指定できます。このオプションを追加すると、プロファイルと環境変数で指定されたリージョンがオーバーライドされます。詳細については、「コマンドラインオプション」をご参照ください。 -
RAM ユーザーの AccessKey ペアを使用して認証情報を設定します。設定プロファイルに
AkProfileという名前を付けます。詳細については、「認証情報の設定と管理」をご参照ください。
ステップ 3:RAM ロールの作成
AssumeRole API オペレーションを呼び出すには、RoleArn パラメーターで指定されるロールの Alibaba Cloud リソースネーム (ARN) が必要です。ARN を取得するには、Alibaba Cloud アカウントを信頼する RAM ロールを作成します。
この例では、「ステップ 2:Alibaba Cloud CLI の設定」で作成した RAM ユーザーを使用してこのロールを引き受けます。したがって、信頼できる Alibaba Cloud アカウントは、「ステップ 2:Alibaba Cloud CLI の設定」の RAM ユーザーが属する Alibaba Cloud アカウントの ID に設定する必要があります。詳細については、「信頼できる Alibaba Cloud アカウント用の RAM ロールの作成」をご参照ください。
RAM ロールの信頼ポリシーを変更して、どの RAM ユーザーがそのロールを引き受けることができるかを指定できます。詳細については、「RAM ロールの信頼ポリシーの変更」をご参照ください。
ステップ 4:CLI コマンド例の生成
-
OpenAPI Explorer で、AssumeRole デバッグページに移動します。
-
[パラメーター] タブで、リクエストパラメーターを入力します。 次に、[CLI の例] タブをクリックすると、生成されたコマンドが表示されます。
-
Cloud Shell でコマンドを実行するか、コマンド例をコピーします。
-
[Cloud Shell で実行]
をクリックして Cloud Shell を開き、コマンドをすばやくデバッグします。 -
クローン
をクリックして、コマンドをクリップボードにコピーします。その後、ローカルシェルに貼り付けて実行できます。説明-
コマンドをローカルシェルにコピーしてデバッグする場合は、パラメーターのフォーマットが正しいことを確認してください。Alibaba Cloud CLI のコマンドパラメーターの詳細については、「コマンドパラメーターの理解」をご参照ください。
-
デフォルトでは、OpenAPI Explorer は生成されたコマンドに
--regionオプションを追加します。コマンドをローカルで実行すると、このオプションはデフォルトのプロファイルと環境変数のリージョン設定をオーバーライドします。必要に応じて、このオプションを保持または削除できます。
-
-
ステップ 5:STS API の呼び出し
例 1:利用可能な STS API の一覧表示
次の例では、--help オプションを使用して、Alibaba Cloud CLI で利用可能な STS API オペレーションを一覧表示します。「API 概要」でも利用可能な API オペレーションを表示できます。
-
コマンドを実行します。
aliyun sts --help -
次の出力が返されます。
Usage: aliyun sts <ApiName> --parameter1 value1 --parameter2 value2 ... Product: Sts (Security Token Service) Version: 2015-04-01 Available Api List: AssumeRole Calls the AssumeRole operation to obtain temporary security credentials (an STS Token) to assume a RAM role. AssumeRoleWithOIDC [Anonymous] Calls the AssumeRoleWithOIDC operation to obtain temporary security credentials (an STS Token) for a RAM role during OIDC-based role SSO. AssumeRoleWithSAML [Anonymous] Calls the AssumeRoleWithSAML operation to obtain temporary security credentials (an STS Token) for a RAM role during SAML-based role SSO. GetCallerIdentity Calls the GetCallerIdentity operation to obtain information about the current caller's identity.
例 2:RAM ロールの引き受け
次の例では、AssumeRole コマンドを呼び出して、RAM ロールを引き受けるための一時的なセキュリティ認証情報を取得します。
-
コマンドを実行します。
説明コマンドパラメーターに関するヘルプを取得するには:
-
aliyun sts AssumeRole --helpコマンドを実行して、パラメーターの提案を取得します。 -
パラメーターの詳細な説明については、「AssumeRole」をご参照ください。
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 API オペレーションの呼び出し時にエラーが発生した場合は、返されたエラーコードを確認して、リクエストパラメーターと値が有効であることを確認してください。
応答または SDK のエラーメッセージから得られるリクエスト ID を OpenAPI Troubleshoot で使用して、問題を診断できます。