Object Storage Service (OSS) は、サーバー上のアップロードされたデータを暗号化できます。 これはサーバー側暗号化と呼ばれます。 OSSにデータをアップロードすると、OSSはアップロードされたデータを暗号化し、暗号化されたデータを永続的に保存します。 OSSからデータをダウンロードすると、OSSはデータを復号し、復号されたデータを返します。 さらに、データがサーバ上で暗号化されていることを宣言するために、ヘッダが応答に追加される。
使用上の注意
サーバー側の暗号化を設定する前に、この機能に慣れていることを確認してください。 詳細については、「サーバー側の暗号化」をご参照ください。
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョン、エンドポイント、オープンポート」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
バケットのサーバー側暗号化を設定するには、
oss:PutBucketEncryption
権限が必要です。 バケットのサーバー側暗号化設定を照会するには、oss:GetBucketEncryption
権限が必要です。 バケットのサーバー側暗号化設定を削除するには、oss:DeleteBucketEncryption
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
バケットのサーバー側暗号化を設定する
次のサンプルコードは、バケットの既定の暗号化方式を設定する方法の例を示しています。 デフォルトの暗号化方法を設定した後、暗号化方法を指定せずにバケットにアップロードされたすべてのオブジェクトは、デフォルトの暗号化方法を使用して暗号化されます。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ServerSideEncryptionRule
# Obtain access credentials from the environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Create encryption configurations for the bucket. In this example, AES-256 encryption is used.
rule = ServerSideEncryptionRule()
rule.sse_algorithm = oss2.SERVER_SIDE_ENCRYPTION_AES256
# Specify the CMK ID. The CMK ID can be specified only if you use the OSS-KMS encryption method. If you want to use a specified CMK for encryption, enter the CMK ID. If you want to use the default CMK managed by KMS for encryption, leave this parameter empty. If you use AES-256 encryption, you must leave this parameter empty.
rule.kms_master_keyid = ""
# Apply the encryption configurations to the bucket.
result = bucket.put_bucket_encryption(rule)
# Display the returned HTTP status code.
print('http response code:', result.status)
バケットのサーバー側暗号化設定の照会
次のサンプルコードは、バケットのサーバー側の暗号化設定を照会する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from the environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Query the server-side encryption configurations of the bucket.
result = bucket.get_bucket_encryption()
# Display the obtained server-side encryption configurations.
print('sse_algorithm:', result.sse_algorithm)
print('kms_master_keyid:', result.kms_master_keyid) # If the encryption method is AES256, set kms_master_keyid to None.
バケットのサーバー側暗号化設定の削除
次のサンプルコードは、バケットのサーバー側の暗号化設定を削除する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from the environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Delete the server-side encryption configurations of the bucket.
result = bucket.delete_bucket_encryption()
# Display the returned HTTP status code.
print('http status:', result.status)
関連ドキュメント
サーバー側暗号化の完全なサンプルコードについては、『GitHub』をご参照ください。
サーバー側暗号化を設定するためのAPI操作の詳細については、「PutBucketEncryption」をご参照ください。
サーバー側の暗号化設定を照会するためのAPI操作の詳細については、「GetBucketEncryption」をご参照ください。
サーバー側の暗号化設定を削除するためのAPI操作の詳細については、「DeleteBucketEncryption」をご参照ください。