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 リファレンスを参照してください。