RAM ロールを引き受けることで、そのロールの権限を一時的に取得し、Alibaba Cloud リソースにアクセスできます。RAM ロールの引き受けは、コンソール、Alibaba Cloud CLI、または Security Token Service (STS) の API オペレーションを呼び出すことで実行できます。
ロールの引き受けとは
RAM ユーザーとは異なり、RAM ロールはコンソールに直接ログインするために使用することはできません。まず RAM ユーザーとして、またはシングルサインオン (SSO) を通じてコンソールにログインし、その後、対象の RAM ロールに切り替える必要があります。このプロセスをロールの引き受けと呼びます。
コンソールで ID を切り替えると、元の ID の権限は一時的に停止され、代わりに引き受けた RAM ロールの権限で操作することになります。引き受けた RAM ロールは、ログインしている RAM ユーザーと同じ Alibaba Cloud アカウントに属することも、別のアカウントに属することもできます (アカウント間のロールの引き受け)。
仕組み
以下の例は、ロールの引き受けの仕組みを示しています。この例では、RAM ユーザーの田中が RAM ロール prod-role を引き受け、そのロールとして OSS にアクセスします。
RAM ロールの引き受けをリクエスト:RAM ユーザーの田中が、Alibaba Cloud Security Token Service (STS) に RAM ロール
prod-roleのための一時的な認証情報 (STS トークン) をリクエストします。RAM は、田中の ID (例えば、AccessKey ペアを使用) を検証し、田中がロールを引き受ける権限 (sts:AssumeRole) を持っているか、そしてprod-roleの信頼ポリシーが田中の引き受けを許可しているか (Principalが田中と一致するか) を確認します。STS トークンの取得。検証に合格すると、Alice は STS から返された STS トークンを取得します。
ロールとしてクラウドリソースにアクセス:田中は STS トークンを使用して、
prod-roleロールとして OSS などのクラウドリソースにアクセスします。これらのリクエストは、prod-roleロールのアクセスポリシー (例えば、oss:*) に基づいて評価されます。田中の元の認証情報は有効なままであり、STS トークンで行われたリクエストのみがロールの権限を使用します。
ロールの引き受け方法
以下の方法で RAM ロールを引き受けることができます。
コンソールでの ID の切り替え — RAM ユーザーが Alibaba Cloud 管理コンソールにログインした後、[ID の切り替え] 機能を使用して対象のロールに切り替えます。この方法は、このトピックで詳しく説明します。
API オペレーションの呼び出し — 管理者または開発者が Alibaba Cloud CLI、SDK、または OpenAPI を使用して
AssumeRoleオペレーション (またはAssumeRoleWithSAMLなどの他のロール引き受けオペレーション) を呼び出し、STS トークンを取得します。この方法は、このトピックで詳しく説明します。ロールベース SSO — ユーザーは、自社の ID プロバイダー (IdP) を使用して、ロールベース SSO (SAML 2.0 プロトコルに基づく) を通じてコンソールにログインします。コンソールへのログインが完了すると、ユーザーはすでに RAM ロールを引き受けた状態になります。
ロールを Alibaba Cloud リソースにバインドする — ロールを特定の Alibaba Cloud リソース (ECS インスタンス、Function Compute、または ACK/ACS Pod など) にバインドまたは関連付け、Alibaba Cloud プラットフォームの組み込み機能を使用してロールの引き受けを完了します。 詳細については、「Alibaba Cloud 上のアプリケーションによる Alibaba Cloud リソースへのアクセス」をご参照ください。
RAM ロールの引き受け方法
シナリオに基づいて方法を選択してください。利用可能なすべてのロール引き受け方法については、「ロールの引き受け方法」をご参照ください。
コンソールでの手動操作 — コンソールで RAM ロールに切り替えて、インタラクティブに操作を実行します。
プログラムまたはサービスのための自動化 — STS のオペレーションを呼び出して STS トークンを取得し、そのトークンを使用してプログラムで Alibaba Cloud リソースにアクセスします。
コマンドラインでのインタラクティブな操作 — Alibaba Cloud CLI を使用して、RAM ロールとして操作を実行します。
前提条件
RAM ロールを引き受ける前に、以下の要件が満たされていることを確認してください。
対象の RAM ロール — 対象の RAM ロールが利用可能であり、その信頼ポリシーが元の ID によるロールの引き受けを許可していること。例えば、信頼ポリシーの
Principalキーワードが元の ID と一致している必要があります。元の ID の権限 — 元の ID に、対象のロールを引き受ける権限が付与されていること。システムポリシー
AliyunSTSAssumeRoleAccessまたはsts:AssumeRoleオペレーションを含むカスタムポリシーを元の ID にアタッチします。システムポリシーAliyunSTSAssumeRoleAccessは、RAM ユーザーがすべての RAM ロールを引き受けることを許可します。権限付与の詳細については、「RAM ユーザーへの権限付与」をご参照ください。ロールベース SSO ログイン — ロールベース SSO を通じてログインした場合、すでに RAM ロールとしてログインしています。別のロールに切り替えるには、現在のロールが対象のロールを引き受ける権限を持っていることを確認してください。例えば、ロールベース SSO ログイン後の ID がロール A で、ロール B に切り替えたい場合、ロール A にはロール B の引き受けを許可するアクセスポリシーが必要です。
AccessKey ペア (API および CLI のみ) — プログラムによる認証のために、RAM ユーザーの AccessKey ペアが準備されていること。詳細な手順については、「プログラムによるアクセスのための AccessKey ペアの作成と使用」をご参照ください。
コンソールでの RAM ロールの引き受け
RAM ユーザーとして、またはロールベース SSO を通じてコンソールにログインした後、ID を切り替えることで RAM ロールを引き受けることができます。
操作手順1. RAM ユーザーとして、またはロールベース SSO を通じて RAM コンソールにログインします。
右上のプロフィール画像にカーソルを合わせ、[ID の切り替え] をクリックします。

[ロールの切り替え] ページで、引き受けたい RAM ロールの情報を入力します。
a. 企業エイリアス / デフォルトドメイン名 / Alibaba Cloud アカウント ID:RAM ロールを所有するアカウントの企業エイリアス (アカウントエイリアス)、デフォルトドメイン名、または Alibaba Cloud アカウント ID のいずれかを入力します。アカウントをまたいで切り替える場合は、対象アカウントの Alibaba Cloud アカウント ID を入力します。
b. ロール名:引き受けたい RAM ロールの名前。管理者に問い合わせるか、RAM コンソールの [ID 管理] > [ロール] ページで確認してください。
[送信] をクリックします。
ID が切り替わると、RAM ロールとしてコンソールを操作します。コンソールの右上のプロフィール画像エリアには、現在の ID とログイン ID (元の ID) が表示されます。パネルには、現在の ID タイプを識別する RAM ロールラベルが含まれています。下部には、[ログイン ID に戻る] ボタンと [サインアウト] ボタンがあります。
(オプション) 元のログイン ID に戻るには、コンソールの右上のプロフィール画像にカーソルを合わせ、[ログイン ID に戻る] をクリックします。切り替え後、RAM ロールの権限は無効になり、元の ID の権限が復元されます。
以下の表は、ログイン ID と現在の ID の表示形式を説明しています。
| ログインシナリオ | ログイン ID | 現在の ID |
| RAM ユーザーログイン | <RAM ユーザー名> | <ロール名>/<RAM ユーザー名> |
| ロールベース SSO ログイン (初回) | 表示されません | <ロール名>/<ロールセッション名> |
| ロールベース SSO ログイン後の ID 切り替え | <SSO ロール名>/<RoleSessionName> | <切り替え後のロール名>/<RoleSessionName> |
フィールドの説明
RoleName:現在引き受けているロールの名前。RoleSessionName:セッション名。RAM ユーザーがログインした場合は RAM ユーザー名です。ロールベース SSO ログインの場合は、IdP によって提供され、ID を切り替えても変更されません。
例
ユーザー Tom (UPN:tom@example.com、UPN はユーザープリンシパル名) が、ロール test-saml-role1 としてロールベース SSO を通じてコンソールにログインし、その後ロール alice-testrole に切り替えます。RoleSessionName がユーザーの UPN であると仮定します。ログイン ID と現在の ID は次のようになります。
ログイン ID:
test-saml-role1/tom@example.com現在の ID:
alice-testrole/tom@example.com
API オペレーションの呼び出しによる RAM ロールの引き受け
STS のオペレーションを呼び出して RAM ロールを引き受け、引き受けたロールの STS トークンを取得できます。プログラムやサービスが STS トークンを使用して Alibaba Cloud リソースにアクセスすると、引き受けたロールの権限の範囲内で操作を実行できます。
ロール引き受けオペレーション
以下の表は、STS のロール引き受けオペレーションを説明しています。呼び出し元の認証情報または ID フェデレーションの方法に基づいてオペレーションを選択してください。
| API | 説明 |
| AssumeRole | RAM ロールを引き受けるための STS トークンを取得します。AccessKey ペアや STS トークンなどの認証情報を使用するロール引き受けシナリオに適用されます。 |
| AssumeRoleWithSAML | SAML アサーションを使用して STS トークンを取得します。SAML ロールベース SSO シナリオに適用されます。 |
| AssumeRoleWithOIDC | OpenID Connect (OIDC) トークンを使用して STS トークンを取得します。OIDC ロールベース SSO シナリオに適用されます。 |
上記のオペレーションを呼び出す際には、RoleArn パラメーターを使用して、引き受けたい RAM ロールを指定する必要があります。ARN のフォーマットは acs:ram::<Alibaba Cloud アカウント ID>:role/<ロール名> です。
また、Policy パラメーター (セッションポリシー) を渡して、現在のロールセッション内で引き受けたロールの権限をさらに制限することもできます。
必要な権限
必要な権限は、ロールの引き受けに使用するオペレーションによって異なります。
AssumeRole オペレーションを使用する場合、呼び出し元には
sts:AssumeRoleオペレーション権限が付与されている必要があります。例えば、AliyunSTSAssumeRoleAccessシステムポリシーを呼び出し元にアタッチできます。AssumeRoleWithSAML または AssumeRoleWithOIDC オペレーションを使用する場合、対象の RAM ロールの信頼ポリシーで信頼できる SAML または OIDC IdP を正しく設定するだけで済みます。外部 ID に RAM アクセスポリシーを別途割り当てる必要はありません。
Alibaba Cloud ソフトウェア開発キット (SDK) を使用して、ロール引き受けオペレーションを呼び出し、RAM ロールを引き受けることができます。サンプルコードについては、「AccessKey ペアとRamRoleArnを使用して STS トークンを取得する (Python SDK)」などの関連 SDK ドキュメントをご参照ください。
STS トークンが機能することを確認するには、それを使用して STS の GetCallerIdentity オペレーションを呼び出します。応答には、引き受けたロールの ARN が含まれます。
Alibaba Cloud CLI を使用した RAM ロールの引き受け
以下の例は、Alibaba Cloud CLI を使用して RAM ロール admin-role を引き受け、そのロールとして管理タスクを完了する方法を示しています。
Alibaba Cloud CLI の認証情報を設定します。この例では、RAM ユーザーの AccessKey ペアを認証方式として使用し、ロールの引き受けを完了する
RamRoleArnモードを使用します。aliyun configure --profile RamRoleArnProfile --mode RamRoleArnプロンプトに従って、AccessKey ID、AccessKey Secret、引き受けたいロールの ARN、ロールセッション名、その他の情報を入力します。パラメーターと使用方法の詳細については、「Alibaba Cloud CLI の認証情報の設定」をご参照ください。
Configuring profile 'RamRoleArnProfile' in 'RamRoleArn' authenticate mode... Access Key Id []: <yourAccessKeyID> Access Key Secret []: <yourAccessKeySecret> Sts Region []: cn-shanghai Ram Role Arn []: acs:ram::012345678910****:role/admin-role Role Session Name []: user-name External ID []: abcd1234 Expired Seconds [900]: 900 Default Region Id []: cn-shanghai Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[RamRoleArnProfile] ...Done.Expired Secondsは、CLI プロンプトに表示されるデフォルト値の 900 秒 (15 分) を維持します。この値は、AssumeRole*オペレーションのDurationSecondsパラメーターのデフォルト値 (3,600 秒) とは異なります。認証が完了したら、プロファイルを使用して必要なコマンドを実行します。コマンドの実行に使用される ID は、AccessKey ペアを所有する RAM ユーザーではなく、引き受けた RAM ロール
admin-roleです。aliyun ram ListUsers --profile RamRoleArnProfilealiyun sts GetCallerIdentity --profile RamRoleArnProfile。応答には、引き受けたロールの ARN が含まれます。 引き受けたロールとして別の RAM ロールを引き受けるには、「ロールチェーン」をご参照ください。
ロールの引き受けが失敗した場合
管理者が対象の RAM ロールに sts:ExternalId や sts:SourceIdentity などの特別な条件ルールを設定している場合、または対象のロールが特定の RAM ユーザーなどの特定のプリンシパルのみを信頼している場合、ロールの引き受けが失敗することがあります。
ロールの引き受けが失敗した場合、または API 呼び出しが権限関連のエラーを返した場合は、元の ID に付与されたアクセスポリシーと対象ロールの信頼ポリシーを確認してください。
アカウント間のロールの引き受け
アカウント間のロールの引き受けにより、ある Alibaba Cloud アカウントの ID (RAM ユーザーまたは RAM ロール) を使用して、別の Alibaba Cloud アカウントの RAM ロールを引き受け、そのアカウントのリソースにアクセスすることができます。
アカウント間のロールの引き受けには、以下の条件が必要です。
対象のロールは、ソースアカウント、またはソースアカウントの RAM ユーザーまたは RAM ロールを信頼している必要があります。これは、対象ロールの信頼ポリシーの
Principalキーワードによって定義されます。元の ID には
詳細については、「アカウント間のロールの引き受けの実行」をご参照ください。sts:AssumeRoleオペレーション権限が必要です。
ロールチェーン
ロールチェーンとは、RAM ID (またはロールベース SSO ID) が 1 つのロールを引き受けた後、そのロールとしてさらに他のロールを引き受け続けるプロセスです。ロールチェーンは、このトピックで説明されている標準的なロール引き受けメカニズムに基づいています。
ロール A がロール B を引き受け続けることを許可するには、ロール A に sts:AssumeRole オペレーション権限が付与され、ロール B がロール A を信頼している必要があります。
以下の例では、Alibaba Cloud CLI を使用してロールチェーンを使用する方法を示します。
「CLI を使用した RAM ロールの引き受け」の例に従って、Alibaba Cloud CLI を設定し、ロール
admin-role(ソースロール) を引き受けます。システムポリシー
AliyunSTSAssumeRoleAccessをロールadmin-roleに追加します。対象の RAM ロールを作成します。例えば、
target-roleという名前を付けます。対象ロールの信頼ポリシーを変更し、Principalキーワードで ID をadmin-roleとして指定します。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<ACCOUNT_ID>:role/admin-role" ] } } ], "Version": "1" }ChainableProfile モードを使用して Alibaba Cloud CLI を設定します。
aliyun configure --profile ChainableProfile --mode ChainableRamRoleArnプロンプトに従って、ソースプロファイル名、引き続き引き受けたいロールの ARN、およびその他の情報を入力します。
'ChainableRamRoleArn' 認証モードでプロファイル 'ChainableProfile' を設定しています... ソースプロファイル []: RamRoleArnProfile Sts リージョン []: cn-shanghai Ram ロール Arn []: acs:ram::012345678910****:role/target-role ロールセッション名 []: user-name 外部 ID []: abcd1234 有効期間 (秒) [900]: 900 デフォルトのリージョン ID []: cn-shanghai デフォルトの出力形式 [json]: json (json のみをサポート) デフォルト言語 [zh|en] zh: en プロファイル [ChainableProfile] を保存しています...完了。認証が完了したら、次のコマンドを実行して現在の呼び出し元の ID 情報を表示します。応答には、対象ロールの ARN が含まれます。
ロールチェーンのシナリオでは、監査ログを通じて最初のロール呼び出し元の ID を追跡することが困難になります。ベストプラクティスとして、「ロールの引き受けの監査を有効にする」ことを推奨します。aliyun sts GetCallerIdentity --profile ChainableProfile
ロールセッションの期間
ロールセッションは、RAM ユーザーや他の信頼できるエンティティなどのプリンシパルがロールの引き受けに成功した後に確立される、時間制限のあるアクセスセッションです。ロールセッションの期間は、ロールとして操作を実行できる時間を制御します。セッションが期限切れになった後、新しいセッションを取得するには、再度ロールを引き受ける必要があります。
コンソール
| 決定要因 | デフォルト値 | 有効範囲 | 説明 |
| 最大セッション期間 | 1 時間 | 1 ~ 12 時間 | ロールごとに個別に設定できます。 |
| ログインセッションの有効期限 | 6 時間 | 1 ~ 24 時間 | すべての RAM ユーザーと RAM ロールに影響するグローバル設定です。 |
有効なセッション期間は、上記の 2 つの要因のうち短い方です。例えば、ログインセッションの有効期限が 8 時間に設定され、ロール A の最大セッション期間が 1 時間に設定されている場合、ロール A に切り替えた後のセッション期間は 1 時間です。セッションが期限切れになった後、再度 ID を切り替えてロールを引き受けます。
OpenAPI
| 決定要因 | デフォルト値 | 有効範囲 | 説明 |
| 最大セッション期間 | 1 時間 | 1 ~ 12 時間 | ロールごとに個別に設定できます。 |
DurationSeconds パラメーター | 3,600 秒 (1 時間) | 900 秒 (15 分) ~ 最大セッション期間 | AssumeRole* オペレーションを呼び出すときに指定します。 |
| SAML 応答/OIDC トークン の有効性 | IdP によって決定されます (通常は 1 時間) | IdP によって決定されます | AssumeRoleWithSAML または AssumeRoleWithOIDC オペレーションを通じて STS トークンを取得する場合の、ロールベース SSO シナリオのみ。 |
有効なセッション期間は、上記の要因のうち短い方です。セッションが期限切れになった後、再度 AssumeRole* オペレーションを呼び出してロールを引き受けます。
最大セッション期間とログインセッションの有効期限の設定方法については、「RAM ロールの最大セッション期間の設定」および「ログインセッションの有効期限の設定」をご参照ください。
よくある質問
特定の RAM ロールのみを引き受けるようにユーザーを制限する方法
システムポリシー AliyunSTSAssumeRoleAccess は、すべての RAM ロールの引き受けを許可します。ロールの引き受けを特定の RAM ロールに制限するには、元の ID にカスタムアクセスポリシーを設定し、対象ロールの信頼ポリシーを変更します。詳細については、「特定の RAM ユーザーが特定の RAM ロールを引き受けることを制限する方法」をご参照ください。
Alibaba Cloud アカウントは RAM ロールを引き受けることができるか
いいえ。Alibaba Cloud アカウント (ルートアカウント) は、コンソールで RAM ロールに切り替えることも、AssumeRole オペレーションを呼び出して RAM ロールを引き受けることもできません。
ロールの引き受けによって取得した一時的な認証情報が漏洩した場合の対処法
ロールの引き受けによって取得した一時的な認証情報が漏洩した場合は、発行済みのすべての STS トークンを取り消すことができます。詳細については、「STS トークンが漏洩した場合の対処法」をご参照ください。