RAM ロールと STS トークンに関する一般的な質問 (権限、有効期間、レート制限、セキュリティなど) について説明します。
AssumeRole の呼び出し時に "You are not authorized..." エラーが発生するのはなぜですか?
AssumeRole API を呼び出すと、次のエラーが返されることがあります。
Error message: You are not authorized to do this action. You should be authorized by RAM.
考えられる原因は次のとおりです。
-
Alibaba Cloud アカウントで API を呼び出している。
AssumeRole API は、Alibaba Cloud アカウントでは呼び出せません。代わりに RAM ユーザーまたは RAM ロールを使用してください。
-
呼び出し元アイデンティティにロールを引き受ける権限がない。
AliyunSTSAssumeRoleAccess ポリシーまたはカスタムポリシーを呼び出し元アイデンティティにアタッチします。カスタムポリシーでは、以下のポリシー例に示すように、sts:AssumeRole アクションを許可する必要があります。
-
ロールの信頼ポリシーに、呼び出し元アイデンティティがプリンシパルとして含まれていない。
対象ロールの信頼ポリシーを更新して、呼び出し元アイデンティティがそのロールを引き受けることを許可します。詳細については、「RAM ロールの信頼ポリシーの変更」をご参照ください。
AssumeRole API を呼び出せるのは誰ですか?
RAM ユーザーまたは RAM ロールのみがAssumeRole API を呼び出して、RAM ロールの一時的な認証情報を取得できます。Alibaba Cloud アカウントはこの API を呼び出すことはできません。
RAM ロールの種類と、それを引き受けることができるプリンシパル
Resource Access Management (RAM) は、プリンシパルに基づいて次の種類のロールを提供します。
|
タイプ |
説明 |
一般的なユースケース |
|
Alibaba Cloud アカウント |
アカウント内の任意のアイデンティティ (アカウント自体、RAM ユーザー、または他の RAM ロール) がロールを引き受けることができます。アカウントは、ロールの所有者である場合も、別のアカウントである場合もあります。 |
RAM ユーザーは、コンソールで ID を切り替えるか、CLI または SDK 経由で |
|
Alibaba Cloud サービス |
指定されたクラウドサービスがロールを引き受けることができます。これはサービスロールと呼ばれます。 |
クラウドサービスが代理で操作を実行できるようにします。たとえば、インスタンス RAM ロールを ECS インスタンスにアタッチして、そのアプリケーションが Object Storage Service (OSS) バケットにアクセスできるようにします。 多くのクラウドサービスでは、その機能を有効にするために、サービスにリンクされた事前定義済みのロールである サービスリンクロール も使用します。 |
|
ID プロバイダー (IdP) |
指定された ID プロバイダー (IdP) (SAML 2.0 または OIDC をサポート) のユーザーがロールを引き受けることができます。これにより、ID フェデレーションが可能になります。 |
企業の ID プロバイダー (IdP) のユーザーは、ロールベースのシングルサインオン (SSO) を使用して Alibaba Cloud コンソールにログオンできます。 フェデレーションユーザーは、IdP からのトークン (SAML アサーションまたは ID トークン) を提供して |
特定の RAM ユーザーによる特定の RAM ロールの引き受けを制限する方法
-
RAM ロールの信頼ポリシーを更新する。
RAM ロールの信頼ポリシーでは、
Principal要素を使用してロールを引き受けることが許可されている RAM ユーザーを指定します。 ポリシーでは、<account-id>をお使いの Alibaba Cloud アカウントの ID に、<user-name>を RAM ユーザーの名前に置き換えます。 詳細については、「RAM ロールの信頼ポリシーを変更する」をご参照ください。ポリシー例:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<account-id>:user/<user-name>" ] } } ], "Version": "1" } -
RAM ユーザーにロールを引き受ける権限を付与する。
AliyunSTSAssumeRoleAccess ポリシーまたはカスタムポリシーを RAM ユーザーにアタッチします。カスタムポリシーを使用すると、ユーザーが引き受けることができるロールを制限できます。
カスタムポリシーで、
Resource要素を使用して、引き受けることができる RAM ロールの ARN を指定します。ポリシー内で、<account-id>をお使いの Alibaba Cloud アカウントの ID に、<role-name>を RAM ロールの名前に置き換えます。詳細については、「カスタムポリシーの作成」および「RAM ユーザーの権限の管理」をご参照ください。ポリシー例:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": "acs:ram:*:<account-id>:role/<role-name>" } ], "Version": "1" }
RAM ロールの ARN を表示する方法
-
RAM コンソールにログインします。
-
左側メニューで、 を選択します。
-
対象の RAM ロールの名前をクリックします。
-
[基本情報] セクションで、ロールの ARN を見つけてコピーします。

STS には API リクエストの制限がありますか?
AssumeRole API は、Alibaba Cloud アカウントごとに毎秒 100 リクエストに制限されています (アカウント内のすべての RAM ユーザーと RAM ロールで共有)。
この制限を超えると、STS は次のいずれかのエラーメッセージを返します。
-
エラーメッセージ
エラーコード
エラーメッセージ
Throttling.Api
Request was denied due to api flow control.
Throttling.User
Request was denied due to user flow control.
Throttling
Request was denied due to flow control.
-
ステータスコード
302
これらのエラーを解決するには、リクエストレートを下げてください。より高いクォータをリクエストするには、チケットを起票してください。
STS トークンの権限の制限
STS トークンの権限は、ロールのアイデンティティベースのポリシーと、AssumeRole API の呼び出し時にPolicy パラメーターで渡すセッションポリシーの共通部分です。
AssumeRole API の呼び出し時にセッションポリシーを指定しない場合、返される STS トークンはロールと同じ権限を持ちます。
STS トークンの有効期間
STS トークンのデフォルトの有効期間は 3,600 秒 (1 時間) です。設定可能な期間は、900 秒 (15 分) からロールの最大セッション期間までの範囲です。
-
トークンの有効期間は、AssumeRole API の DurationSeconds パラメーターで設定します。
-
ロールの最大セッション期間を設定する方法については、「RAM ロールの最大セッション期間の設定」をご参照ください。
同じロールに対して複数の STS トークンが同時に有効になりますか?
はい。各トークンは有効期限が切れるまで有効です。新しいトークンを作成しても、既存のトークンは無効になりません。
STS トークンが漏洩した場合はどうすればよいですか?
STS トークンが漏洩した場合は、ロールから権限を削除するか、ロール自体を削除することで、そのロールのすべてのアクティブなトークンを無効化します。
-
RAM コンソールにログインします。
-
RAM ロールからすべてのポリシーをデタッチします。
詳細については、「RAM ロールからの権限の取り消し」をご参照ください。
-
または、RAM ロールを完全に削除します。
詳細については、「RAM ロールの削除」をご参照ください。
この操作により、そのロールの有効期限が切れていないすべての STS トークンが直ちに無効になります。
その後、ロールの使用を再開するには、同じ名前とポリシーで新しいロールを作成します。
STS トークンの長さに上限はありますか?
いいえ。トークンの長さは可変です。コード内で最大長を想定しないでください。