STS の概要

OSS では、一時的なアクセス許可を Alibaba Cloud STS (Security Token Service) を使用して付与することができます。 Alibaba Cloud STS は、一時的なアクセストークンをクラウドコンピューティングユーザーに提供する Web サービスです。 STS を使用すると、 サードパーティ製アプリケーションまたはフェデレーションユーザー (ユーザー ID を管理できます) に対して、権限と有効期間をカスタマイズしたアクセス資格情報を付与することができます。 サードパーティ製アプリケーションまたはフェデレーション ユーザーは、これらのアクセス資格情報を使用して、Alibaba Cloud プロダクトの API を呼び出したり、Alibaba Cloud プロダクト提供の SDK を使用してクラウドプロダクトの API にアクセスすることができます。

  • サードパーティ製アプリケーションに長期キー (AccessKey) を公開する必要はありません。アクセストークンを生成してサードパーティ製アプリケーションに送信するだけで済みます。

  • アクセス権限とトークンの有効期間をカスタマイズできます。

  • 権限が失効する問題を気にする必要はありません。 アクセス資格情報は、有効期限が切れると自動的に無効になります。

アプリを例として、相互のプロセスを次に示します。

ソリューションの詳細を次に示します。

  1. アプリユーザーとしてログインします。

    アプリユーザーの ID はカスタマーが管理します。 ID 管理システムをカスタマイズしたり、外部の Web アカウントや OpenID を使用することもできます。 AppServer で、有効なアプリユーザーごとに最小のアクセス権限を細かく定義できます。

  2. AppServer から STS にセキュリティトークン (SecurityToken) をリクエストします。

    STS を呼び出す前に、アプリユーザーの最小のアクセス権限 (ポリシー構文で記述) と許可の有効期限を決定する必要があります。 次に STS の AssumeRole インターフェイスを呼び出して、セキュリティトークンを取得します。

  3. STS から AppServer に有効なアクセス資格情報が返されます。このアクセス資格情報には、セキュリティトークン、一時的な AccessKey (AccessKeyId と AccessKeySecret)、有効期限が含まれます。
  4. AppServer から ClientApp にアクセス資格情報が返されます。

    ClientApp は、この資格情報をキャッシュします。 資格情報が無効になった場合、AppServer に対して新しいアクセス資格情報をリクエストする必要があります。 たとえば、アクセス資格情報の有効期間が 1 時間の場合、AppServer に対して 30 分ごとにアクセス資格情報の更新をリクエストできます。

  5. ClientApp は、ローカルにキャッシュしたアクセス資格情報を使用して、Alibaba Cloud サービスの API をリクエストします。 クラウドサービスは STS アクセス資格情報を認識し、STS を使用して資格情報を検証し、ユーザーのリクエストに適切にレスポンスします。

STS セキュリティトークンの詳細は、RAM ユーザーガイドの「ロール管理」をご参照ください。

STS インターフェイスの AssumeRole を呼び出して、有効なアクセス資格情報を取得します。 STS SDK を使用して、このメソッドを呼び出すこともできます。

STS 資格情報を使用した署名付きリクエストの作成

ユーザーのクライアントは、STS 一時資格情報を取得した後、 その資格情報のセキュリティ トークン (セSecurityToken) と一時的な AccessKey (AccessKeyId と AccessKeySecret) を使用して署名を作成します。 アクセス許可の署名を作成する方法は、 ルートアカウントの AccessKey を使用して 署名を ヘッダーに追加する方法と基本的に同じです。 次の 2 つの点に注意してください。

  • ユーザーが使用する署名キーは、STS が提供する一時的な AccessKey (AccessKeyId と AccessKeySecret) です。

  • セキュリティトークン (SecurityToken) をリクエストヘッダー内に含めるか、 リクエストパラメーターとして URI に含める必要があります。 この 2 つの方法を 同時に使用することはできません。 両方の方法を同時に選択すると、InvalidArgument エラーが返されます。

    • ヘッダー x-oss-security-token:SecurityToken を リクエストヘッダーに含めます。 署名の CanonicalizedOSSHeaders を計算するとき、x-oss-security-token 考慮されます。

    • パラメーター security-token=SecurityToken を URL に含めます。 署名の CanonicalizedResource を計算するとき、security-token が考慮され、 サブリソースと見なされます。