メインコンテンツまでスキップ

SSE-C でデータを暗号化する

顧客提供キーによるサーバー側暗号化(SSE-C)を使用すると、自分だけが保持するキーで object を暗号化できます。機密データを扱う場合や、セキュリティ規制により暗号化キーを自社で管理する必要がある場合に、SSE-C を使用してください。

SSE-C の仕組み​

アップロード: object と一緒に暗号化キーを送信します。FPT Object Storage はそのキーでデータを暗号化し、暗号化済みのデータを保存したうえで、キーを破棄します。

ダウンロード: リクエストに同じキーを付けて送信します。FPT Object Storage はそのキーでデータを復号し、object を返します。

キーを管理する​

FPT Object Storage は暗号化キーを保存しないため、キーの管理はすべて利用者の責任となります。

  • 組織に適したセキュリティ手順に従って、各キーを自分で作成、保管、保護してください。
  • どのキーでどの object を暗号化したかを記録してください。以降、その object をダウンロードするたびに同じキーが必要です。
危険

暗号化キーを紛失すると、そのキーで暗号化したデータは復元できません。

SDK から SSE-C を使用する​

SSE-C は、SDK や AWS CLI などを使って、S3 API 経由でリクエストごとに設定します。SSE-C を使用するリクエストは HTTPS で送信する必要があります。

次の Python の例では、256 ビットのキーを使って object をアップロード・ダウンロードします。

import os
import boto3

s3 = boto3.client(
"s3",
endpoint_url="https://s3-hcm04.fptcloud.com",
aws_access_key_id="YOUR_ACCESS_KEY",
aws_secret_access_key="YOUR_SECRET_KEY",
)

key = os.urandom(32) # store this key safely; it is required to read the object

s3.put_object(Bucket="YOUR_BUCKET", Key="secret.txt", Body=b"Hello",
SSECustomerAlgorithm="AES256", SSECustomerKey=key)

obj = s3.get_object(Bucket="YOUR_BUCKET", Key="secret.txt",
SSECustomerAlgorithm="AES256", SSECustomerKey=key)
print(obj["Body"].read())

他の言語での接続設定については、SDK リファレンスを参照してください。