Object Storage Service (OSS) は、データに対してサーバー側暗号化を提供します。 データをアップロードすると、OSS はストレージの前にデータを暗号化します。 データをダウンロードすると、OSS は自動的にデータを復号化し、生データを返します。 HTTP レスポンスヘッダーは、データがサーバー側で暗号化されたことを示します。
注意事項
サーバー側暗号化を設定する前に、この機能について理解していることを確認してください。 詳細については、「サーバー側暗号化」をご参照ください。
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用してください。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報の設定方法の詳細については、「OSS SDK for Python 1.0 を使用したアクセス認証情報の設定」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
バケット暗号化を設定するには、
oss:PutBucketEncryption権限が必要です。 バケット暗号化設定を取得するには、oss:GetBucketEncryption権限が必要です。 バケット暗号化設定を削除するには、oss:DeleteBucketEncryption権限が必要です。 詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。
バケット暗号化の設定
次のコードを使用して、バケットのデフォルトの暗号化方式を設定できます。 設定が完了すると、暗号化方式が指定されずにバケットにアップロードされたオブジェクトは、バケットのデフォルトの方式を使用して暗号化されます:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ServerSideEncryptionRule
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントが配置されているリージョン (cn-hangzhou など) を指定します。 このパラメーターは V4 署名に必要であることにご注意ください。
region = "cn-hangzhou"
# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# バケット暗号化設定を作成します。 この例では、AES256 暗号化を使用します。
rule = ServerSideEncryptionRule()
rule.sse_algorithm = oss2.SERVER_SIDE_ENCRYPTION_AES256
# KMS キー ID を設定します。 KMS を使用して暗号化する場合、このパラメーターを設定できます。 指定したキーを使用して暗号化するには、指定した CMK ID を入力します。 OSS マネージド CMK を使用して暗号化する場合は、このパラメーターを空のままにします。 AES256 を使用して暗号化する場合、このパラメーターは空にする必要があります。
rule.kms_master_keyid = ""
# バケット暗号化を設定します。
result = bucket.put_bucket_encryption(rule)
# HTTP リターンコードを表示します。
print('http response code:', result.status)バケット暗号化設定の取得
次のコードは、バケットの暗号化設定を取得します:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントが配置されているリージョン (cn-hangzhou など) を指定します。 このパラメーターは V4 署名に必要であることにご注意ください。
region = "cn-hangzhou"
# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# バケット暗号化設定を取得します。
result = bucket.get_bucket_encryption()
# 取得した暗号化設定を出力します。
print('sse_algorithm:', result.sse_algorithm)
print('kms_master_keyid:', result.kms_master_keyid) # バケットが AES256 を使用して暗号化されている場合、kms_master_keyid は None になります。バケット暗号化設定の削除
次のコードは、バケットの暗号化設定を削除します:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントが配置されているリージョン (cn-hangzhou など) を指定します。 このパラメーターは V4 署名に必要であることにご注意ください。
region = "cn-hangzhou"
# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# バケット暗号化設定を削除します。
result = bucket.delete_bucket_encryption()
# HTTP リターンコードを表示します。
print('http status:', result.status)関連ドキュメント
サーバー側暗号化の完全なサンプルコードについては、GitHub をご参照ください。
サーバー側暗号化の設定に使用される API 操作の詳細については、「PutBucketEncryption」をご参照ください。
サーバー側暗号化設定の取得に使用される API 操作の詳細については、「GetBucketEncryption」をご参照ください。
サーバー側暗号化設定の削除に使用される API 操作の詳細については、「DeleteBucketEncryption」をご参照ください。