Object Storage Service (OSS) に送信されるHTTPリクエストは、ID情報が含まれているかどうかに基づいて、ID情報を含むリクエストと匿名リクエストに分類されます。 匿名リクエストと比較して、ID情報を持つリクエストには、リクエストヘッダーまたはリクエストURLに署名情報が含まれています。
匿名リクエストを使用したOSSへのアクセス
ユーザーリクエストが、OSS の HTTP サーバーに送信されます。
OSSはリクエストのURLを解析し、リクエストされたバケットとオブジェクトを取得します。
OSSは、オブジェクトのアクセス制御リスト (ACL) をチェックして、匿名アクセスを許可するかどうかを判断します。
匿名アクセスが許可されている場合、オブジェクトが返されます。
匿名アクセスが許可されていない場合、リクエストは拒否されます。
ID情報を含むリクエストを使用してOSSにアクセスする
リクエストがOSSのHTTPサーバーに送信されます。
OSSはリクエストのURLを解析し、リクエストされたバケットとオブジェクトを取得します。
OSSは、要求者のAccessKey IDに基づいて、認証用の要求者に関するID情報を取得します。
識別情報が取得されない場合、要求は拒否される。
識別情報が取得されるが、要求者が要求されたオブジェクトにアクセスすることを許可されない場合、要求は拒否される。
識別情報が取得されたが、要求内のHTTPパラメータに基づいて計算された署名が要求内に含まれる署名と一致しない場合、要求は拒否される。
認証が成功すると、オブジェクトが返されます。
AccessKeyペアタイプ
AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。 OSSへのアクセスには、次のタイプのOSS AccessKeyペアが使用されます。
Alibaba CloudアカウントのAccessKeyペア
Alibaba CloudアカウントのAccessKeyペアは、バケット所有者のAccessKeyペアです。 Alibaba CloudアカウントのAccessKeyペアは、アカウント内のすべてのリソースにフルアクセスできます。 各Alibaba Cloudアカウントは最大5つのAccessKeyペアを持つことができ、各AccessKeyペアはアクティブまたは非アクティブの状態にすることができます。
RAM (Resource Access Management) コンソールでAccessKeyペアの追加または削除をリクエストできます。
各AccessKeyペアは、アクティブまたは非アクティブのいずれかの状態になります。
Active: AccessKeyペアを認証に使用できることを示します。
Inactive: AccessKeyペアを認証に使用できないことを示します。
重要データセキュリティ上の理由から、Alibaba CloudアカウントのAccessKeyペアを使用してOSSリソースを管理しないことを推奨します。 ただし、RAMユーザーのAccessKeyペアを作成し、RAMユーザーに権限を付与することはできます。
RAMユーザーのAccessKeyペア
RAMは、リソースへのアクセス許可を管理するためにAlibaba Cloudが提供するサービスです。 RAMユーザーのAccessKeyペアは、RAMコンソールで承認されます。 これらは、RAMで定義されているルールに基づいてのみバケットリソースにアクセスするために使用できます。RAMを使用して、従業員、システム、アプリケーションなどのユーザーを管理し、リソースにアクセスするユーザーの権限を制御できます。 たとえば、RAMポリシーを作成して、バケットの1つに対する読み取り専用権限をユーザーに付与できます。 RAMユーザーは、RAMユーザーが作成されたAlibaba Cloudアカウントに属しています。 さらに、RAMユーザーは実際にはリソースを所有していません。 すべてのリソースは、対応するAlibaba Cloudアカウントに属しています。
STSアカウントのAccessKeyペア
セキュリティトークンサービス (STS) は、一時的なアクセス認証情報を提供する Alibaba Cloud サービスです。 STSによって一時的なAccessKeyペアが発行されます。 AccessKeyペアは、STSで定義されたルールに従ってOSSバケットにアクセスする場合にのみ使用できます。
認証の実装方法Authentication implementation methods
認証は、次の方法を使用して実装されます。
AccessKeyペアベースの認証
RAMベースの認証
STSベースの認証
個人IDとしてOSSにリクエストを送信する場合、次の手順で認証が実行されます。
OSSで指定された形式で署名文字列を生成します。
AccessKeyシークレットを使用して署名文字列を暗号化し、検証コードを生成します。
OSSがリクエストを受信すると、OSSはAccessKeyシークレットをAccessKey IDと照合し、AccessKeyシークレットを使用して署名文字列と検証コードを抽出します。
OSSによって計算された検証コードが提供されたものと同じ場合、OSSはリクエストが有効であると見なします。
それ以外の場合、OSSはリクエストを拒否し、HTTP 403ステータスコードを返します。
認証されたリクエストをOSSに送信する
OSSコンソールの使用: 認証プロセスはバックグラウンドで実行され、認証設定は必要ありません。 詳しくは、「オブジェクトのダウンロード」をご参照ください。
OSS SDKの使用: OSSは、署名アルゴリズムが実装されている複数のプログラミング言語用のSDKを提供します。 OSS SDKを使用して認証済みリクエストをOSSに送信するには、AccessKeyペア情報を提供する必要があります。 詳細については、次のSDKのサンプルコードをご参照ください。
OSS API操作を使用してOSSにアクセスする: 特定のプログラミング言語を使用してRESTful API操作をカプセル化して呼び出すには、署名アルゴリズムを実装して署名を計算する必要があります。 詳細については、「承認ヘッダーに署名を含める」および「URLに署名を追加する」をご参照ください。