RAM (Resource Access Management) と STS (Security Token Service) は、Alibaba Cloud が提供するアクセス制御システムです。 RAM と STS について詳しくは、「RAM のヘルプ」をご参照ください。

RAMは、アカウントのアクセス権限を制御する際に使用します。 RAMを使用すると、RAMユーザーの作成と管理が行えます。 さまざまなアクセス権限を与えることで、RAM ユーザーがアクセスできるリソースを制御できます。

STS はセキュリティトークン管理システムです。 これは、RAM ユーザーに付与された短期間のアクセス権限を管理するために使用します。 STS を使用すると、ユーザーに一時的なアクセス権限を与えることができます。

背景

RAM と STS を使用すると、プライマリアカウントの AccessKey を開示することなく、安全にユーザーへアクセス権を付与することができます。 プライマリアカウントの AccessKey が漏洩すると、リソースは大きなセキュリティリスクにさらされます。 AccessKey を入手すれば、そのユーザーのリソースに対するあらゆる操作が実行でき、個人情報を盗むこともできます。

RAM は、長期間のアクセス権限を制御するためのメカニズムです。 RAM ユーザーを作成すると、各 RAM ユーザーごとに異なる権限を与えることができます。 もし RAM ユーザーの AccessKey が漏洩しても、プライマリアカウントの AccessKey が漏洩した場合ほどのリスクはありません。 RAM ユーザーの AccessKey が漏洩しても、そこから漏れる可能性のある情報は限られています。 RAM ユーザーは長期間有効です。

ユーザーに長期間のアクセス許可を与えることができる RAM とは異なり、STS ではユーザーに一時的なアクセス権を与えることができます。 STS API を呼び出すことで、一時的なAccessKey とトークンを取得できます。 一時的な AccessKey と トークンを RAM ユーザーに割り当てることで、特定のリソースにアクセスすることができるようになります。 STS で取得できる権限は厳しく制限されており、有効期限も設定されています。 したがって、たとえ情報が予期せず流出したとしても、システムが重大なセキュリティ侵害を負うということはありません。

RAM および STS の使用方法について詳細は、「用例」をご参照ください。

基本概念

RAM および STS を使用する前に、次の基本概念について簡単に理解しておくことを推奨します。

  • RAM ユーザー: RAM コンソールを使用して作成したユーザー。 RAM ユーザーの作成中または作成後に、AccessKey を生成することができます。 RAM ユーザーを作成したら、パスワードを設定し、権限を付与する必要があります。 これが完了すると、RAM ユーザーは許可された操作を実行できるようになります。 RAM ユーザーは、特定の操作権限を持つユーザーと考えることができます。
  • ロール: 権限のグループを表す仮想的なエンティティ。 ロール自体には、ログインパスワードや AccessKey はありません。 RAM ユーザーにロールを割り当てることができます。 ロールが割り当てられるた RAM ユーザーは、そのロールに付与された権限を持ちます。
  • ポリシー: ポリシーはアクセス権を定義します。 たとえば、ポリシーは、 RAM ユーザーが特定のリソースを読み書きするための権限を定義します。
  • リソース: RAM ユーザーがアクセス可能なクラウドリソースを指します。たとえば、全ての Table Store インスタンス、ある 1 つの Table Store インスタンス、または 1 つの Table Store インスタンス内のある 1 つのテーブルなどです。

RAM ユーザーとロールとの関係は、個人とその立場との関係に似ています。 たとえば、ある人物の役割 (ロール) は、職場では従業員であり、自宅では父親であるということがいえるでしょう。 同じ 1 人の人物でも、状況 (シナリオ) が変われば役割 (ロール) も変わります。 ある人物が特定のロールを引き受けると、その人はそのロールに伴う権限を持ちます。 ロール自体は操作上のエンティティではありません。 ユーザーがロールを引き受けることによって初めて、ロールは完全な操作エンティティとなります。 複数のユーザーが共同で 1 つのロールを引き受けることができます。

アカウントの AccessKey が漏洩した場合にセキュリティリスクにさらされるのを防ぐため、アカウント管理者は 2 つの RAM ユーザーを作成します。 2 つの RAM ユーザーは A と B とします。各々について、AccessKey が生成されます。 A には読み取り権限があり、B には書き込み権限があります。 管理者は、RAM コンソールからいつでも RAM ユーザーの権限を取り消すことができます。

さらに、IoT Platform の API に対する一時的なアクセス権を関係者に与える必要があるとします。 このとき、A の AccessKey を開示してはいけません。 代わりに、管理者はロール (C とします) を作成します。 そして、そのロールに IoT Platform の API へのアクセス権を与えます。 この段階では、直接 C を使用することはできないということにご注意ください。C の AccessKey は存在せず、C は IoT Platform API へのアクセス権を持つ仮想エンティティに過ぎないからです。

管理者は、STS API のAssumeRole を呼び出して、IoT Platform API へのアクセスに使用できる一時的なセキュリティ認証情報を取得する必要があります。 AssumeRole を呼び出す際、RoleArn の値は C の ARN (Alibaba Cloud resource name) となります。AssumeRole の呼び出しが成功すると、STS はセキュリティ認証情報として 一時的なAccessKeyId、AccessKeySecret、SecurityToken を返します。 これらの認証情報の有効期間は、AssumeRole を呼び出す際に指定できます。 アカウント管理者は、IoT Platform の API にアクセスする必要があるユーザーにこれらの認証情報を提供することができます。 この認証情報による API へのアクセス権は一時的なものです。

RAM と STS の使用方法が複雑な理由

RAM と STS の概念および使用方法は複雑です。 サービスの利便性と引き換えに、アカウントのセキュリティと柔軟なアクセス制御を保証しています。

操作を実行するエンティティと、権限グループを表す仮想エンティティと分離して保持するために、RAM ユーザーとロールは分離されています。 あるユーザーが複数のアクセス権限 (読み取り権限と書き込み権限など) を必要としていますが、実際には一度に 1 つのアクセス権限しか必要としない場合は、2 つのロールを作成することができます。 作成した 2 つのロールに、それぞれ読み取り権限と書き込み権限を与えます。 次に、RAM ユーザーを 1 つ作成し、そのユーザーに両方のロールを割り当てます。 その RAM ユーザーが読み取り権限を必要とする場合は、読み取り権限を持つロールを利用し、 書き込み権限を必要とする場合は、書き込み権限を持つロールを利用することになります。 これによって、各操作で必要とする以上の権限が与えられることを防ぎ、リスクを軽減することができます。 さらに、ロールを他のアカウントや RAM ユーザーに割り当て、ロールに含まれる権限を付与することもできます。 これにより、ロールのアクセス権限は使用しやすくなります。

STS を使用すると、より柔軟なアクセス制御が可能になります。 たとえば、認証情報の有効期間を設定することができます。 ただし、長期的な認証情報が必要な場合は、RAM のみを使用して RAM ユーザーの管理を行ってください。

これに続く文書では、RAM と STS を使用するためのガイドラインとその使用例を示します。 RAM と STS が提供する API について詳しくは、 「API リファレンス - RAM 」、「API リファレンス - STS」をご参照ください。