本ドキュメントでは、OSS サーバー側での暗号化機能の使い方を説明します。OSS に格納されているデータは、暗号化によって保護されます。

OSS では、アップロードするデータをサーバー側で暗号化できます。ユーザーがデータをアップロードすると、OSS はそのデータを暗号化してから格納します。ユーザーがデータをダウンロードすると、OSS は自動的に暗号化されたデータを復号化し、元のデータをユーザーに返します。返される HTTP リクエストのヘッダには、サーバー側でデータが暗号化されている旨が記載されます。

OSS サーバー側での暗号化の主なアプリケーション

OSS は、サーバー側で暗号化することにより、静的データを保護します (サーバー側暗号化)。 格納されたファイルに対し、高い安全性とコンプライアンスが求められる場合に適しています (たとえば、ディープラーニングのサンプルファイルやオンライン共有ドキュメントを格納するストレージ)。 各アプリケーションでは、次のようにサーバー側暗号化を行います。

  • KMS で暗号化および復号化

    ファイルをアップロードする際に、CMK ID または、KMS で完全管理された CMK で大量のデータを暗号化および復号化します。暗号化および復号化の際、ネットワークを介して KMS サービス側にユーザーデータを送信する必要がないため、低コストな方法です。

  • OSS で暗号化をすべて管理

    OSS の完全管理暗号化は、オブジェクトのプロパティです。 オブジェクトを暗号化してサーバーに格納するには、オブジェクトを作成する際に、PutObject リクエストの HTTP ヘッダで、x-oss-server-side-encryption に「AES256」を指定するのみです。バルクデータの暗号化および復号化に適しています。

サーバー側暗号化のオプション

OSS サーバー側暗号化には、次のオプションがあります (キー管理ポリシーに基づきます)。

  • OSS で完全管理:OSS でデータ暗号化キーを生成し、管理します。強力かつ多元的なセキュリティ手段でデータを保護されます。 データ暗号化アルゴリズムには、業界標準の強力な暗号化アルゴリズム AES-256 (256 ビット AES) を採用しています。

サーバー側暗号化 - OSS で完全管理

OSS サーバー側暗号化は、オブジェクトのプロパティです。オブジェクトを作成する際に、PutObject リクエストの HTTP ヘッダで、x-oss-server-side-encryptionAES256を指定するだけで、オブジェクトは暗号化され、サーバーに格納されます。

リクエストの HTTP ヘッダに指定できる操作は、次のとおりです。

  • PutObject: 簡単なアップロード
  • CopyObject: オブジェクトのコピー
  • InitiateMultipartUpload: 分割アップロード

サーバー側暗号化 - KMS で CMK を管理

オブジェクトを暗号化してサーバーに格納するには、オブジェクトを作成する際に、PutObject リクエストの HTTP ヘッダで、x-oss-server-side-encryptionKMSを指定するのみです (KMS サービスでキー管理)。 KMS サービスで、エンベロープ暗号化、および、AES-256 暗号化アルゴリズムといった強力なセキュリティ手段を使用することで OSS は OSS に格納されたオブジェクトを暗号化し、保護します。

KMS は、Alibaba Cloud の提供する、安全で使い方が容易な管理サービスです。KMS により、ユーザーはキーの機密性、整合性、および可用性にコストをかける必要がなくなります。ユーザーは、安全かつ簡単にキーを使用できるため、暗号化/復号化機能の開発に専念できます。 KMS コンソールで KMS キーを表示し、管理することができます。

リクエストの HTTP ヘッダに追加できる操作は、次のとおりです。

  • PutObject: 簡単なアップロード
  • CopyObject: オブジェクトのコピー
  • InitiateMultipartUpload: 分割アップロード
注意
  • 本モードを使用することにより、暗号化するために、初めてあるリージョンのバケットにオブジェクトを追加する際、デフォルトの KMS キーがこのリージョンに自動生成されます (CMK として使用)。 サーバー側暗号化に使用します (KMS モード)。
  • ユーザーは、KMS コンソールでキーの情報を確認することができます。KMS ユーザーガイドをご参照ください。

サーバー側暗号化 - RestAPI の使用法

操作リクエスト

リクエストにx-oss-server-side-encryptionヘッダを追加できる API は、次のとおりです。

  • PutObject: 簡単なアップロード
  • CopyObject: オブジェクトのコピー
  • InitiateMultipartUpload: 分割アップロード

HTTP ヘッダー

名前 説明
x-oss-server-side-encryption 注意: 本オプションは、サーバー側暗号化モードを示します。  指定可能な値:AES256KMS x-oss-server-side-encryption:KMSは、サーバー側暗号化モードで、KMS で CMK (マスターキー) が管理されることを示します。
注意
  • OSS の受信したリクエストのヘッダにx-oss-server-side-encryptionが含まれる場合、OSS は直接 HTTP ステータスコード 400 を返し、メッセージボディーにエラーコード InvalidArgument と記載されます。
  • ヘッダx-oss-server-side-encryptionに無効な値が指定されている場合、OSS は直接 HTTP ステータスコード 400 を返し、メッセージボディーにエラーコードInvalidEncryptionAlgorithmErrorと記載されます。
操作に対するレスポンス

サーバー側で暗号化され、格納されたオブジェクトの場合、以下の API 呼び出しに対して、OSS は応答ヘッダーx-oss-server-side-encryptionを返します。

  • PutObject
  • CopyObject
  • InitiateMultipartUpload
  • UploadPart
  • CompleteMultipartUpload
  • GetObject
  • HeadObject
メタ情報

KMS で管理されたマスターキー (CMK) を使って格納されたオブジェクトのメタ情報には、次のフィールドがあります。

名前 説明
x-oss-server-side-encryption サーバー側暗号化モードを示します。 x-oss-server-side-encryption: KMS
x-oss-server-side-encryption-key-id オブジェクトの暗号化に使用されるユーザーの KMS キーの ID x-oss-server-side-encryption-key-id: 72779642-7d88-4a0f-8d1f-1081a9cc7afb