Resource Access Management (RAM) ロールには、長期的な認証情報がありません。信頼されたプリンシパルがロールを引き受けて一時的なセキュリティ認証情報を取得し、そのロールの権限を使用する必要があります。このトピックでは、Alibaba Cloud 管理コンソール、Alibaba Cloud CLI、および API を介して RAM ロールを引き受ける方法について説明します。
ロールの引き受けについて
RAM ロールには、パスワードや AccessKey ペアなどの長期的なセキュリティ認証情報はありません。ロールを使用するには、信頼されたプリンシパル (RAM ユーザー、Alibaba Cloud サービス、フェデレーティッドユーザーなど) がロールを引き受ける必要があります。このプロセスはロールの引き受けとして知られ、プリンシパルに一時的なセキュリティ認証情報を提供します。
プリンシパルが RAM ロールを引き受けると、一時的に自身の権限を放棄し、ロールに付与された権限を引き継ぎます。ロールは、プリンシパルと同じ Alibaba Cloud アカウントに存在することも、別のアカウントに存在することもあります (クロスアカウントアクセス)。
仕組み
RAM ロールを引き受けるプロセスには、Alibaba Cloud Security Token Service (STS) によって仲介される以下のステップが含まれます。
資格情報のリクエスト。 プリンシパル(例:RAM ユーザーの Alice)が、STS に対して
AssumeRoleリクエストを送信し、偽装するロールの ARN(例:prod-role)を指定します。権限の検証。 RAM は、(a) Alice がアクセスポリシーに
sts:AssumeRole権限を持っていること、および (b)prod-roleの信頼ポリシーが Alice (またはそのアカウント) を信頼されたプリンシパルとして指定していることの 2 点を検証します。一時的な認証情報の取得。両方のチェックに合格すると、STS は一時的なセキュリティ認証情報 (STS トークン) を返します。
リクエストを作成します。 プリンシパルは STS トークンを使用して、OSS などの Alibaba Cloud サービスにリクエストを送信します。このサービスは、
prod-roleにアタッチされたアクセスポリシーに基づいて、リクエストを承認します。
ロールの引き受け方法
プリンシパルは、ユースケースに応じていくつかの方法でロールを引き受けることができます:
コンソールでのロールの切り替え:認証された RAM ユーザーは、現在の ID から RAM ロールに切り替えて、Alibaba Cloud 管理コンソールでタスクを実行できます。
プログラムによるアクセス (API/CLI/SDK): アプリケーションまたはスクリプトは、API 操作 (
AssumeRoleやAssumeRoleWithSAMLなど) を呼び出して、RAM ロールの一時的な認証情報を取得できます。 Alibaba Cloud CLI および SDK は、このプロセスを簡素化します。ID フェデレーション (SAML/OIDC):外部の ID プロバイダー (IdP) のユーザーに RAM ロールの引き受けを許可することで、コンソールへのシングルサインオン (SSO) やフェデレーティッド API アクセスを有効にできます。詳細については、「ロールベース SSO」をご参照ください。
Alibaba Cloud リソースのサービスロール:Alibaba Cloud サービス (Elastic Compute Service (ECS) や Function Compute など) は、RAM ロールを引き受けて、ユーザーに代わって他のリソースにアクセスできます。これは、Alibaba Cloud インフラストラクチャで実行されているアプリケーションで一般的に使用されます。詳細については、「Alibaba Cloud 上のアプリケーションによる Alibaba Cloud リソースへのアクセス」をご参照ください。
このトピックでは、コンソール、CLI、および API を介したロールの引き受けに焦点を当てています。フェデレーションとサービスロールに関する情報については、関連ドキュメントをご参照ください。
ロールセッションの期間
RAM ロールが引き受けられると、一時的なセッションが作成されます。セッションの期間は、以下の値のうち短い方によって決まります:
RAM ロールの最大セッション期間:ロール自体の属性で、1 時間から 12 時間まで設定可能です (デフォルトは 1 時間)。
リクエストされたセッション期間:
コンソール:期間は、アカウントのグローバルなログインセッションの有効期限設定によって決まります。これはすべての RAM ユーザーとロールに適用されます。この設定は 1 時間から 24 時間まで設定できます (デフォルトは 6 時間)。
API/CLI: 持続時間は、
DurationSecondsパラメーターで指定され、AssumeRole呼び出しで設定されます。この値は、15分(900秒)からロールの最大セッション期間まで設定できます。デフォルトの期間は1時間(3,600秒)です。
たとえば、ロールの最大セッション期間が 4 時間であり、8 時間の期間を要求する AssumeRole 呼び出しを行った場合、セッションは 4 時間のみ継続します。コンソールで同じロールに切り替えた場合、グローバルログインセッションの有効期限が 2 時間であると、ロールセッションは 2 時間継続します。
これらの設定方法については、「RAM ロールの最大セッション期間の指定」および「RAM ユーザーのセキュリティ設定の管理」をご参照ください。
ロールの引き受け方法
コンソールでの RAM ロールの引き受け
RAM ユーザーまたはフェデレーティッドユーザーとしてコンソールにログインした後、RAM ロールに切り替えて、そのロールの権限でタスクを実行できます。
前提条件
RAM ユーザーとしてログイン
ロールを切り替えるプリンシパル(RAM ユーザーまたは他のロール)は、そのアクセスポリシーに
sts:AssumeRole権限を含める必要があります。この権限は、AliyunSTSAssumeRoleAccessシステムポリシーまたはカスタムポリシーをアタッチすることで付与できます。詳細については、「RAM ユーザーの権限を管理する」をご参照ください。説明AliyunSTSAssumeRoleAccessシステムポリシーは、あらゆるロールを偽装する権限を付与します。セキュリティを向上させるために、この権限を特定の RAM ロールの ARN に制限するカスタムポリシーを作成してください。ロールベース SSO を使用してログイン
ターゲット RAM ロールの信頼ポリシーは、プリンシパル (またはプリンシパルのアカウント) がそのロールを引き受けることを許可する必要があります。
手順
RAM コンソールに RAM ユーザーまたはフェデレーティッドユーザーとしてログインします。
右上隅のプロファイル画像にカーソルを合わせ、[ID の切り替え] をクリックします。


[ロールの切り替え] ページで、次の情報を入力します:
[エンタープライズエイリアス/ドメイン/アカウント UID]:RAM ユーザーのデフォルトのログインサフィックス、またはロールを所有する Alibaba Cloud アカウントのアカウント ID またはエイリアスを入力します。
[ロール名]:引き受けたい RAM ロールの名前を入力します。
[送信] をクリックします。
現在、偽装された RAM ロールの権限を使用しています。右上隅のナビゲーションバーには、現在のロールと元のログイン ID が
CurrentRole/LogonIdentityの形式で表示されます。
ログイン方法
表示される ID
(
CurrentRole/LogonIdentity)RAM ユーザーとしてログイン
AssumedRoleName/RAMUserNameSSO 経由でログイン (最初に引き受けたロール)
AssumedRoleName/RoleSessionNameFromIdPSSO ロールからログイン (ロールチェーン)
SecondAssumedRole/RoleSessionNameFromIdP(オプション) RAM ロールの使用を停止するには、右上隅のプロファイル画像にカーソルを合わせ、[ログイン ID に戻る] をクリックします。これにより、元の権限が復元されます。
切り替えに失敗した場合、RAM ユーザーのアクセスポリシーとターゲット RAM ロールの信頼ポリシーが正しく設定されていることを確認してください。信頼ポリシーに sts:ExternalId や sts:SourceIdentity など、セッションで満たされない条件が含まれている場合、失敗が発生することがあります。
プログラムによる RAM ロールの引き受け (API)
アプリケーションは API 操作を呼び出して RAM ロールを引き受け、一時的な認証情報を受け取ることができます。
API 操作
API 操作 | 説明 |
ロールを引き受けるための主要な操作です。呼び出し元は認証されたプリンシパル (RAM ユーザーまたはロール) である必要があります。 | |
フェデレーションシナリオで使用され、IdP からの SAML アサーションを一時的なロール認証情報と交換します。SAML アサーションは、呼び出し時に有効で期限切れでない必要があります。 | |
フェデレーションシナリオで使用され、IdP からの OIDC ID トークンを一時的なロール認証情報と交換します。OIDC トークンは、呼び出し時に有効で期限切れでない必要があります。 |
前提条件
「
AssumeRole」を呼び出すには、呼び出し元のプリンシパルが、対象の RAM ロールに対して「sts:AssumeRole」権限を持っている必要があります。たとえば、呼び出し元のプリンシパルに「AliyunSTSAssumeRoleAccess」システムポリシーをアタッチできます。AssumeRoleWithSAMLまたはAssumeRoleWithOIDCを呼び出すには、対象の RAM ロールの信頼ポリシーが対応する IdP を信頼する必要があります。呼び出し元にはアクセスポリシーは不要です。
これらの API 操作を呼び出すには、Alibaba Cloud SDK を使用することを推奨します。SDK は認証情報の取得とログインを管理します。例については、「AccessKey ペアと RamRoleArn を使用して STS トークンを取得する (Python SDK)」をご参照ください。
切り替えに失敗した場合、RAM ユーザーのアクセスポリシーとターゲット RAM ロールの信頼ポリシーが正しく設定されていることを確認してください。信頼ポリシーに、セッションで満たされない sts:ExternalId や sts:SourceIdentity などの条件が含まれている場合、失敗が発生する可能性があります。
CLI を使用した RAM ロールの引き受け
Alibaba Cloud CLI プロファイルを設定して、コマンド実行時に自動的に RAM ロールを引き受けるようにできます。
「
RamRoleArn」モードを使用してプロファイルを作成します。このモードでは、ソースプロファイル(例:RAM ユーザーの AccessKey ペア)の認証情報を使用して、RAM ロールを偽装します。aliyun configure --profile RamRoleArnProfile --mode RamRoleArnプロンプトで、ロールを引き受ける RAM ユーザーの AccessKey ID とシークレット、および引き受けるロールの ARN(Amazon リソースネーム (ARN))を入力します (
Ram Role 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.コマンドを実行するには、
--profileオプションを使用します。CLI は自動的にロールを偽装し、一時的な認証情報を使用してコマンドを実行します。aliyun ram ListUsers --profile RamRoleArnProfile
詳細な手順については、「プログラムによるアクセスのための AccessKey ペアの作成と使用」をご参照ください。
高度なユースケース
クロスアカウントアクセス
RAM ロールを使用して、あるアカウントのプリンシパルが別のアカウントのリソースにアクセスできるようにすることができます。
これには、主に 2 つの権限設定が必要です:
宛先アカウントの RAM ロールの信頼ポリシーは、ソースアカウント (またはその中の特定のプリンシパル) を信頼されたプリンシパルとして指定する必要があります。
ソースアカウントのプリンシパルは、そのアクセスポリシーに
sts:AssumeRole権限を有している必要があります。
詳細については、「Alibaba Cloud アカウント間でのリソースへのアクセス」をご参照ください。
ロールチェイニング
ロールチェーンとは、ある RAM ロールの認証情報を使用して 2 番目のロールを引き受けることです。例えば、ユーザーが Role-A を引き受け、次に Role-A からの一時的な認証情報を使用して Role-B を引き受けます。
ロールチェイニングを有効にするには、最初のロール (Role-A) に、2 番目のロール (Role-B) に対して sts:AssumeRole を呼び出すことを許可するアクセスポリシーが必要です。さらに、Role-B の信頼ポリシーでは、Role-A を信頼されたプリンシパルとして指定する必要があります。
以下の例は、CLI を使用してロールチェーンを設定する方法を示しています。
チェーン内の初期ロール(例:
admin-role)を偽装するために、CLI プロファイル(例:RamRoleArnProfile)を設定します。手順については、このトピックの「CLI で RAM ロールを偽装する」セクションをご参照ください。ソースロールに他のロールを偽装する権限を付与します。たとえば、ソースロールに
AliyunSTSAssumeRoleAccessポリシーをアタッチします。ターゲットロール (
target-roleなど) を作成し、ソースロールを信頼するようにその信頼ポリシーを設定します。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<ACCOUNT_ID>:role/admin-role" ] } } ], "Version": "1" }新しい CLI プロファイルを、
ChainableRamRoleArnモードを使用して設定します。aliyun configure --profile ChainableProfile --mode ChainableRamRoleArnプロンプトで、ソースプロファイルの名前 (
RamRoleArnProfile) と対象ロールの Amazon リソースネーム (ARN) を指定します。Configuring profile 'ChainableProfile' in 'ChainableRamRoleArn' authenticate mode... Source Profile []: RamRoleArnProfile Sts Region []: cn-shanghai Ram Role Arn []: acs:ram::012345678910****:role/target-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] zh: en Saving profile[ChainableProfile] ...Done.新しいチェーンプロファイルを使用してコマンドを実行します。このコマンドは、チェーン内の最終ロールの権限で実行されます。これは、
sts GetCallerIdentityを呼び出すことによって確認できます。aliyun sts GetCallerIdentity
ロールチェーンにより、ActionTrail ログで元のユーザーを特定することが困難になる場合があります。トレーサビリティを向上させるために、ロールチェーンを通じて元のユーザーの ID を渡すために、SourceIdentity 条件キーを使用できます。詳細については、「監査とアクセスの制御に SourceIdentity を使用する」をご参照ください。
よくある質問
RAM ユーザーに特定の RAM ロールのみを引き受けることを許可する方法
AliyunSTSAssumeRoleAccess システムポリシーをアタッチするのではなく、ユーザーのカスタムポリシーを作成します。このポリシーでは、Action を sts:AssumeRole に設定し、Resource 要素で偽装を許可されている特定のロールの ARN を指定します。詳細については、RAM ロールと STS トークンに関するよくある質問にある「特定の RAM ユーザーが特定の RAM ロールを偽装できないように制限するにはどうすればよいですか?」セクションをご参照ください。
Alibaba Cloud アカウントの所有者は RAM ロールを引き受けることができるか
いいえ。Alibaba Cloud アカウントの所有者は RAM ロールを引き受けることはできません。ロールの引き受けは、RAM ユーザーとロール、およびフェデレーティッドユーザー向けに設計されています。
RAM ロールの一時的な認証情報が漏洩した場合の対処法
一時的な認証情報が漏洩した疑いがある場合は、その RAM ロールのアクティブなすべてのトークンを直ちに無効にすることができます。手順については、「RAM ロールと STS トークンに関するよくある質問」の「STS トークンが漏洩した場合はどうすればよいですか?」セクションをご参照ください。