RAM ロールとは
Resource Access Management (RAM) ロールは、RAM ユーザーと同様に特定のポリシーがアタッチされた RAM ID です。ただし、ロールは特定の人物やアプリケーションに一意に関連付けられるものではありません。代わりに、その権限を必要とする信頼されたプリンシパル (ユーザーや他のサービスなど) によって引き受けられます。ロールには、パスワードや AccessKey ペアのような長期的な認証情報はありません。プリンシパルがロールを引き受けると、セキュリティトークンサービス (STS) は、そのセッションでのみ有効な一時的なセキュリティ認証情報を動的に生成します。
各 RAM ロールは、一意の Alibaba Cloud リソース名 (ARN) である acs:ram::<account-id>:role/<role-name> を持つアカウント内のリソースです。ポリシーまたは API 呼び出しでロールを参照するには、ARN を使用します。ロールの ARN を見つける方法については、「RAM ロールの情報の表示」をご参照ください。
RAM ロールを使用する理由
RAM ロールは、Alibaba Cloud リソースへのアクセスを管理するための、より安全で効率的な方法を提供します。
一時的な昇格された権限: ロールを使用して、特定のタスクを実行するために、プリンシパルにより高いレベルの権限を一時的に付与できます。これにより、長期的な高権限の認証情報に関連するリスクが軽減されます。
クロスアカウントリソースアクセス: ロールを使用して、ある Alibaba Cloud アカウントのプリンシパルに、別のアカウントのリソースへのアクセスを付与できます。これにより、重複する ID を作成および管理することなく、一元的な管理と安全なリソース共有が可能になります。
サービスおよびアプリケーションへの安全なアクセス: Elastic Compute Service (ECS) インスタンスまたはその他のサービスで実行されるアプリケーションは、
AssumeRole操作を呼び出してロールを偽装することで、一時的な資格情報を取得できます。これにより、アプリケーションコードに AccessKey ペアをハードコーディングするのを回避できます。
基本概念
RAM ロールを効果的に使用するには、次の概念を理解することが不可欠です。
プリンシパル
プリンシパルは、ロールを引き受けることができる ID です。ロールの信頼ポリシーは、どのプリンシパルが信頼されているかを定義します。プリンシパルは次の3つのタイプに分類されます。
タイプ | 説明 | 一般的なユースケース |
Alibaba Cloud アカウント | アカウント自体、またはそのアカウント内の RAM ユーザーや他の RAM ロールがロールを引き受けることができます。アカウントは、ロールを所有する同じアカウントでも、別のアカウントでもかまいません。 | RAM ユーザーは、コンソールで ID を切り替えるか、CLI または SDK を使用して |
Alibaba Cloud サービス | 指定されたクラウドサービスがロールを引き受けることができます。このタイプのロールはサービスロールと呼ばれます。 | ユーザーに代わって動作するようにクラウドサービスを委任します。たとえば、インスタンス RAM ロールを ECS インスタンスに割り当てて、その上で実行されているアプリケーションが Object Storage Service (OSS) バケット内のデータにアクセスできるようにします。 多くのクラウドサービスは、その機能を有効にするために、サービスにリンクされた事前定義されたロールであるサービスリンクロールも使用します。 |
ID プロバイダー (IdP) | 指定された IdP (SAML 2.0 または OIDC をサポート) のユーザーは、ロールを引き受けることができます。これにより、ID フェデレーションが可能になります。 | 企業の IdP のユーザーは、ロールベースのシングルサインオン (SSO) を使用して Alibaba Cloud コンソールにログインできます。 フェデレーションユーザーは、IdP からのトークン (SAML アサーションまたは ID トークン) を提供することで、 |
Alibaba Cloud アカウントが信頼されたプリンシパルとして指定されている場合、そのアカウント内の任意の ID はデフォルトでロールを引き受けることができます。ロールの信頼ポリシーを変更して、特定の RAM ユーザーまたはロールへのアクセスを制限することで、これをさらに絞り込むことができます。詳細については、「RAM ロールの信頼ポリシーの変更」をご参照ください。
ロールの引き受け
RAM ロールの引き受けは、信頼されたプリンシパルがロールの権限を一時的に取得するプロセスです。ロールが引き受けられると、セキュリティトークンサービス (STS) は一時的なセキュリティ認証情報のセットを発行します。このアクションにより、ロールセッションが開始され、その間、元の ID の権限は一時停止されます。引き受けられたロールは、同じアカウントまたは別のアカウント (クロスアカウントロールの引き受け) に属することができます。
コンソールで ID を切り替えるか、AssumeRole や AssumeRoleWithSAML / AssumeRoleWithOIDC などの API 操作を呼び出すことで、ロールを引き受けることができます。
信頼ポリシー
信頼ポリシーは、RAM ロールにアタッチされる必須の JSON 形式のドキュメントです。これは、どのプリンシパル (アカウント、ユーザー、ロール、またはクラウドサービス) がロールを引き受けることができるかを定義します。このポリシーは、リソースがロール自体であるリソースベースのポリシーです。
主要な機能:
ロールを引き受けることができるユーザーの定義: 信頼ポリシーの
Principal要素は、信頼されたプリンシパルを指定します。引き受けの条件の制御:
Condition要素を追加して、MFA や特定の送信元 IP アドレスを要求するなど、ロールを引き受けることができるタイミングをさらに制限できます。アクセス権限ポリシーとの連携: 信頼ポリシーはロールを引き受けることができるユーザーを定義し、ロールにアタッチされたアクセス権限ポリシーは、ロールが引き受けられた後に何ができるかを定義します。
例:
次の信頼ポリシーは、アカウント 123456789012**** 内の任意の ID がロールを引き受けることを許可します。
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::123456789012****:root"
]
}
}
],
"Version": "1"
}ロールセッション
プリンシパルがロールを引き受けると、ロールセッションが開始されます。セキュリティトークンサービス (STS) によって発行された一時的な認証情報は、このセッションに関連付けられます。これらの認証情報を使用して実行されたすべてのアクションは、ロールセッションに帰属します。
ロールセッションには次のものがあります。
セッション名 (
RoleSessionName): セッションのユーザーが提供する識別子。ActionTrail ログに表示されるため、アクションをロールを引き受けたユーザーまたはアプリケーションに追跡できます。セッション期間: 固定されたライフサイクル。セッションが終了すると認証情報は期限切れになります。
ロールを引き受ける際に、インラインセッションポリシーを渡すことができます。ロールセッションの有効な権限は、ロールのアクセスポリシーとセッションポリシーの積集合です。これにより、特定のセッションについてロールの権限を動的に範囲を絞り込むことができます。詳細については、「AssumeRole API リファレンス」の Policy パラメーターをご参照ください。
ロールチェイニング
ロールチェイニングは、ロールを使用して2番目のロールを引き受けるときに発生します。たとえば、RAM ユーザーがロール A を引き受け、ロール A のセキュリティトークンサービス (STS) トークンを使用してロール B を引き受けます。ロールは、同じアカウントまたは異なるアカウントに属することができます。
ロールチェイニングは、複雑なマルチアカウント環境で一般的です。たとえば、開発者は中央の「ジャンプ」アカウントにフェデレーションし (ロール A を引き受け)、そこから本番アカウントでより特権的なロール (ロール B) を引き受けて特定のタスクを実行する場合があります。
Alibaba Cloud CLI、SDK、またはコンソールでロールを切り替えることで、ロールをチェイニングできます。詳細については、「ロールチェイニングの使用」をご参照ください。
RAM ロールと RAM ユーザーの違い
RAM ロールと RAM ユーザーはどちらも RAM ID ですが、異なる目的を果たします。次の表は、主要な違いを強調しています。
比較項目 | RAM ユーザー | RAM ロール |
用途 | 特定の人物またはアプリケーションを表し、直接使用されます | 一連の権限を表し、プリンシパルによって引き受けられる必要があります |
認証情報 | 長期的な認証情報 (パスワードおよび/または AccessKey ペア) があります | 長期的な認証情報はありません。引き受け時に一時的な認証情報 (STS トークン) が生成されます |
認証情報の有効性 | 長期的 (手動で変更または削除されるまで) | 一時的で、設定可能な期間後に期限切れになります |
信頼ポリシー | なし | ロールを引き受けることができるユーザーを定義するために信頼ポリシーが必要です |
RAM ロールの制限事項については、「制限事項」をご参照ください。
ユースケース
一時的な昇格された権限の付与
開発者は、限られた権限を持つ RAM ユーザーで日常的に作業します。本番データベースの変更など、機密性の高い操作を実行する必要がある場合、そのタスクに必要な管理権限を付与するロールを引き受けることができます。タスクの完了後、ロールの使用を停止すると、権限は限られたセットに戻ります。これは、最小権限の原則 (PoLP) に準拠しています。
詳細については、「RAM ロールを引き受ける方法」をご参照ください。
アカウント間のアクセス委任
組織に開発 (アカウント A) と本番 (アカウント B) 用の別々の Alibaba Cloud アカウントがあるとします。アカウント A で実行されている CI/CD パイプラインがアカウント B の ECS にアプリケーションをデプロイできるようにするには、次の手順を実行します。
アカウント A を信頼するロールをアカウント B に作成します。
アカウント A の CI/CD サービスロールに、アカウント B のそのロールを引き受ける権限を付与します。
CI/CD パイプラインはアカウント B のロールを引き受けて、アプリケーションをデプロイするための認証情報を取得します。
詳細については、「クロスアカウントリソースアクセス」をご参照ください。
Alibaba Cloud サービスへのアクセス付与
ECS インスタンスで実行されているアプリケーションが OSS バケットからオブジェクトを読み取る必要があるとします。アプリケーションに AccessKey ペアを埋め込む代わりに、バケットに対する読み取り権限を持つ ECS 用のサービスロールを作成します。次に、このロールを ECS インスタンスにアタッチします。アプリケーションは、自動的に提供される一時的な認証情報を使用して、OSS に安全にアクセスできます。
詳細については、「インスタンス RAM ロール」をご参照ください。
フェデレーションユーザーへのアクセス提供
企業が外部 IdP (Microsoft Entra ID や Okta など) を使用しているとします。従業員が Alibaba Cloud コンソールにアクセスできるようにするには、SAML 2.0 または OIDC を使用して ID フェデレーションを構成し、IdP を信頼する RAM ロールを作成します。ユーザーがログインすると、IdP がそれらを認証し、ユーザーはロールを引き受けて Alibaba Cloud にアクセスします。これにより、Alibaba Cloud で個別の RAM ユーザーを作成することなく、IdP でユーザーを一元的に管理できます。
詳細については、「SAML を使用したロールベース SSO の概要」および「OIDC を使用したロールベース SSO の概要」をご参照ください。