このトピックでは、Security Token Service (STS) SDK for Pythonを使用してAssumeRole操作を呼び出してリソースアクセス管理 (RAM) ロールを引き受ける方法について説明します。
手順1: APIドキュメントの表示
RAMロールを引き受けるには、AssumeRole操作を呼び出します。 詳細については、「機能別操作一覧」をご参照ください。 この操作を呼び出すために必要な情報とアクセス許可の詳細については、「AssumeRole」をご参照ください。 リクエストパラメーターやアクセス許可などの情報は、APIリファレンスで取得できます。
手順2: RAMユーザーを作成し、RAMユーザーに権限を付与する
アイデンティティ
RAMユーザーまたはRAMロールを使用して、この操作を呼び出すことができます。 Alibaba Cloudアカウントを使用してこの操作を呼び出すことはできません。 ID間の違いの詳細については、「ID」をご参照ください。
この例では、RAMユーザーを使用してこの操作を呼び出します。
RAM コンソールにログインして、RAM ユーザーを作成します。 RAMユーザーの作成方法の詳細については、「RAMユーザーの作成」をご参照ください。
資格情報
RAMユーザーの詳細ページに移動します。 [認証] タブの [AccessKey] セクションで、[AccessKeyの作成] をクリックしてAccessKeyペアを作成します。 詳細については、「AccessKeyペアの作成」をご参照ください。
RAMユーザーのAccessKeyシークレットは、RAMユーザーの作成時にのみ表示されます。 RAMユーザーの作成後は、AccessKeyシークレットを表示できません。 AccessKeyの秘密を書き留め、機密を保持します。
権限付与
RAMコンソールの [ユーザー] ページに移動し、管理する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ユーザーを変更することもできます。 詳細については、「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 Resource Name (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"
}
}