OSS に送信される HTTP リクエストは、認証情報が含まれるかどうかによって 2 種類に分類されます。認証情報を含むリクエストと認証情報を含まない匿名リクエストです。 匿名リクエストには認証情報が含まれません。 これに対して、認証情報を含むリクエストは、リクエストヘッダーまたはリクエスト URL に署名情報が組み込まれます。これは、OSS API ドキュメントに準拠しています。

匿名リクエストによる OSS へのアクセス



  1. ユーザーリクエストが、OSS の HTTP サーバーに送信されます。
  2. OSS で URL が解析され、ターゲットバケットとオブジェクト情報が取得されます。
  3. OSS では、オブジェクトに ACL が設定されているかどうかが確認されます。
    • オブジェクトに ACL が設定されていない場合、プロセスはステップ 4 に進みます。
    • オブジェクトに ACL が設定されている場合、その ACL が匿名アクセスを許可しているかどうかが確認されます。
      • ACL で匿名アクセスが許可されている場合、プロセスはステップ 5 に進みます。
      • ACL で匿名アクセスが許可されていない場合、リクエストは拒否され、プロセスは終了します。
  4. OSS では、バケット ACL が匿名アクセスを許可しているかどうかが確認されます。
    • ACL で匿名アクセスが許可されている場合、プロセスはステップ 5 に進みます。
    • ACL で匿名アクセスが許可されていない場合、リクエストは拒否され、プロセスは終了します。
  5. リクエストが認証を通過すると、オブジェクトの内容がユーザーに返されます。

認証情報を含むリクエストによる OSS へのアクセス



  1. ユーザーリクエストが、OSS の HTTP サーバーに送信されます。
  2. OSS で URL が解析されて、ターゲットバケットとオブジェクト情報が取得されます。
  3. OSS では、リクエストの AccessKeyId に基づいて、認証対象のリクエスト送信者に関する識別情報が取得されます。
    • 識別情報が取得されなかった場合、リクエストは拒否され、プロセスは終了します。
    • 識別情報が取得されたが、リクエスト送信者がリソースへのアクセスを許可されていない場合、リクエストは拒否され、プロセスは終了します。
    • 識別情報が取得されたが、リクエスト内の HTTP パラメータに基づいて計算された署名が、リクエストに含まれる署名と一致しない場合、リクエストは拒否され、プロセスは終了します。
    • 認証が通過すると、プロセスはステップ 4 に進みます。
  4. OSS では、オブジェクトに ACL が設定されているかどうかが確認されます。
    • オブジェクトに ACL が設定されていない場合、プロセスはステップ 5 に進みます。
    • オブジェクトに ACL が設定されている場合、オブジェクト ACL がそのユーザーによるアクセスを許可しているかどうかが確認されます。
      • ACL で、そのユーザによるアクセスが許可されている場合、プロセスはステップ 6 に進みます。
      • ACL でアクセスが許可されていない場合、リクエストは拒否され、プロセスは終了します。
  5. OSS のバケット ACL で、そのユーザーによるアクセスが許可されているかどうかが確認されます。
    • そのユーザーによるアクセスが許可されている場合、プロセスはステップ 6 に進みます。
    • そのユーザーによるアクセスが許可されていない場合、リクエストは拒否され、プロセスは終了します。
  6. リクエストが認証に成功し、オブジェクトの内容がユーザーに返されます。

AccessKey タイプ

現在、次の 3 種類 AccessKeys(AK) が、 OSS にアクセスする際に使用されます。

  • Alibaba Cloud アカウントの AK

    Alibaba Cloud アカウントの AK は、バケット所有者の AK を示します。 Alibaba Cloud の AK は、対応するアカウントの下にあるすべてのリソースにアクセスできます。 Alibaba Cloud アカウントごとに、最大 5 つの AK ペア (AccessKeyId と AccessKeySecret) を持つことができ、AK は有効または無効にすることができます。

    AccessKey コンソール にログインすると、AK ペアを追加または削除できます。

    AK ペアのステータスは、有効と無効のどちらかです。

    • 有効な AK は、認証に使用できます。
    • 無効な AK は、認証に使用できません。
    重要 セキュリティ上の理由から、Alibaba Cloud アカウントの AK をできる限り使用しないことを推奨します。
  • RAM ユーザーの AK

    リソースアクセス管理 (RAM) は、Alibaba Cloud が提供するリソースアクセス制御サービスです。 RAM ユーザーの AK は、RAM を通して対応する Alibaba Cloud アカウントによって認証されます。 これらの AK は、RAM に定義されている規則に従ってバケット内の OSS リソースにアクセスする場合に限り使用できます。 RAM ポリシーを設定することで、数多くのユーザーを集中管理し、ユーザーがアクセスするリソースを管理できます。 たとえば、ユーザーが特定のバケットのみを読み取ることができるように、ユーザーの許可を制御できます。 RAMユーザーは、作成者である Alibaba Cloud アカウントに属し、実際のリソースを所有することはありません。 つまり、すべてのリソースは対応する Alibaba Cloud アカウントに属します。

  • STS アカウントの AK

    セキュリティトークンサービス (STS) は、一時的なアクセス認証情報を提供する Alibaba Cloud サービスです。 STS アカウントの AK は STS によって承認されています。 これらの AK は、STS で定義されている規則に従ってバケット内の OSS リソースにアクセスする場合に限り使用できます。

認証機能の実装

認証機能は、次の 3 つの方法で実装されます。

  • AK 認証
  • RAM 認証
  • STS 認証

ユーザーが個々の ID で OSS にリクエストを送信すると、ユーザーに対して次のような認証プロセスが実行されます。

  1. ユーザーは、OSS で指定されたリクエスト形式で、署名文字列を生成します。
  2. ユーザーは AccessKeySecret を使用して署名文字列を暗号化し、検証コードを生成します。
  3. OSS はリクエストを受信すると、AccessKeyId に基づいて対応する AccessKeySecret を見つけ、同じ方法で署名文字列と検証コードを取得します。
    • 計算された検証コードが、ユーザーから提供された検証コードと同じであれば、OSS はリクエストが有効であると判断します。
    • 取得した検証コードが、ユーザーから提供された検証コードと異なる場合、OSS はリクエストを拒否して HTTP 403 エラーを返します。

認証情報を使って OSS にアクセスする3つの方法

  • コンソールで OSS にアクセス:ユーザーは認証プロセスを見えず、ユーザーがコンソールで OSS にアクセスするときに認証構成についての考慮が必要ありません。 詳細は、 「オブジェクトのダウンロード」をご参照ください。
  • SDK を使用して OSS にアクセス:OSSは、署名アルゴリズムが実装されている複数の開発言語用の SDK を提供しています。 そのため、ユーザーは SDK を使用して OSS にアクセスするために AK 情報を入力するだけで済みます。 詳細は、「Java SDK:Authorized access」や「Python SDK:Authorized accessなど、さまざまな開発言語用の SDK ドキュメントの『アクセスコントロール』に関する部分をご参照ください。
  • API を使用して OSS にアクセス:RESTful APIの呼び出しをパッケージ化するコードを作成するには、署名を計算するための署名アルゴリズムを実装する必要があります。 詳細は、「 ヘッダーへの署名の追加」と「 URLへの署名の追加」をご参照ください。