このトピックでは、Security Token Service (STS) SDK for Python を使用して AssumeRole 操作を呼び出し、Resource Access Management (RAM) ロールを引き受ける方法について説明します。
ステップ 1:API ドキュメントの確認
RAM ロールを偽装するには、AssumeRole 操作を呼び出します。詳細については、「機能別の操作一覧」をご参照ください。この操作の呼び出しに必要な情報と権限の詳細については、「AssumeRole」をご参照ください。リクエストパラメーターや権限などの情報は、API リファレンスで取得できます。
ステップ 2:RAM ユーザーの作成と権限付与
アイデンティティ
この操作は、RAM ユーザーまたは RAM ロールを使用して呼び出すことができますが、Alibaba Cloud アカウントでは呼び出せません。各エンティティの違いについては、「エンティティ」をご参照ください。
本例では、RAM ユーザーを使用してこの操作を呼び出します。
RAM コンソールにログインし、RAM ユーザーを作成します。RAM ユーザーの作成方法については、「RAM ユーザーの作成」をご参照ください。
認証情報
RAM ユーザーの詳細ページに移動します。[認証] タブの [AccessKey] セクションで、[AccessKey の作成] をクリックして AccessKey ペアを作成します。詳細については、「AccessKey ペアを作成する」をご参照ください。
RAM ユーザーの AccessKey Secret は、ユーザー作成時にのみ表示されます。作成後に再度表示することはできません。AccessKey Secret を必ず記録し、機密情報を厳重に管理してください。
権限付与
ユーザー ページで、管理対象の RAM ユーザーを検索し、権限の追加 をクリックします(操作 列)。
検索ボックスにキーワード
stsを入力し、システムポリシー AliyunSTSAssumeRoleAccess を選択します。AliyunSTSAssumeRoleAccess:STS の AssumeRole 操作を呼び出すために必要な権限を付与します。
権限の付与 をクリックして、権限付与を完了します。
ステップ 3:RAM ロールの作成
RAM コンソールにログインし、信頼できるエンティティとして Alibaba Cloud アカウントを指定した RAM ロールを作成します。信頼される Alibaba Cloud アカウントには、現在の Alibaba Cloud アカウントまたは他の Alibaba Cloud アカウントを指定できます:
現在の Alibaba Cloud アカウント:ご自身の Alibaba Cloud アカウントに属する RAM ユーザーがこの RAM ロールを引き受ける場合、現在の Alibaba Cloud アカウント を選択します。
その他の Alibaba Cloud アカウント:別の Alibaba Cloud アカウントに属する RAM ユーザーがこの RAM ロールを引き受ける場合、その他の Alibaba Cloud アカウント を選択し、該当する Alibaba Cloud アカウント ID を入力します。このオプションは、異なる Alibaba Cloud アカウント間での権限付与を目的として提供されています。
本例では、ステップ 2 で作成した RAM ユーザーを使用して RAM ロールを引き受ける必要があります。そのため、信頼される Alibaba Cloud アカウントには、ステップ 2 で作成した RAM ユーザーが属する Alibaba Cloud アカウント ID を設定する必要があります。詳細については、「信頼される Alibaba Cloud アカウント向け RAM ロールの作成」をご参照ください。
また、RAM ロールにアタッチされた信頼ポリシーを編集することで、引き受け可能な RAM ユーザーを変更することもできます。詳細については、「RAM ロールの信頼ポリシーの編集」をご参照ください。
ステップ 4:操作の呼び出し
本トピックでは、STS SDK for Python を使用してこの操作を呼び出します。他のプログラミング言語の SDK を使用する場合も、同様の手順で呼び出せます。詳細については、「STS SDK」をご参照ください。ビジネス要件に応じて、その他の方法で操作を呼び出すことも可能です。詳細については、「概要」をご参照ください。
Python 環境の準備
Python 3 をダウンロードしてインストールします。
Python 3 のインストール後、ターミナルで python --version コマンドを実行して、Python 3 のバージョンを確認します。
環境変数の設定
本例では、環境変数を設定して AccessKey ペアを管理し、ビジネスコードへの AccessKey ペアのハードコーディングによるセキュリティリスクを回避します。詳細については、「Linux、macOS、Windows における環境変数の設定」をご参照ください。
依存関係のインストール
pip install alibabacloud_credentials
pip install alibabacloud_sts20150401==1.1.3
pip install alibabacloud_tea_consoleサンプルコードのダウンロード
OpenAPI Explorer で、ステップ 2 で作成した RAM ユーザーを使用して、AssumeRole 操作を呼び出します。
リクエストパラメーターを入力し、呼び出し開始 をクリックしてデバッグが成功するか確認します。
リクエストパラメーターの RoleArn には、ステップ 3 で作成した RAM ロールの Alibaba Cloud リソース名 (ARN) を設定します。RAM ロールの ARN の確認方法については、「RAM ロールの ARN の確認方法」をご参照ください。
SDK サンプルコード タブの Python タブで、プロジェクトのダウンロード をクリックして、CloudSSO SDK for Python のサンプルコードパッケージをダウンロードします。
サンプルコードパッケージをパソコンで展開し、alibabacloud_sample ディレクトリに移動します。
サンプルコードの実行
以下のコマンドを実行します:
python sample.py以下のようなコマンド出力が表示されます:
"headers": {
"date": "Thu, 17 Aug 2023 10:17:04 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "846",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "79E360B6-FAC5-5B18-8081-BC0F8E90A238",
"x-acs-trace-id": "b2fb071a47e03e6d6cd507fd05438021",
"etag": "8bZ4pA7U/ulImlQiwhQnxXw6"
},
"statusCode": 200,
"body": {
"AssumedRoleUser": {
"Arn": "acs:ram::151266687691****:role/test-role/test",
"AssumedRoleId": "30081280744271****:test"
},
"Credentials": {
"AccessKeyId": "STS.NTdbdgE5zgL2qcb5pAify****",
"AccessKeySecret": "Fyk6ab1xfCFn88hXFxzV44QnF6cDi9T2PiTJgsqU****",
"Expiration": "2023-08-17T11:17:04Z",
"SecurityToken": "CAIS7AF1q6Ft5B2yfSjIr5fRKd7TqOpb0ISgUnocHLFUE6eDM****"
},
"RequestId": "79E360B6-FAC5-5B18-8081-BC0F8E90A238"
}
}