Object Storage Service (OSS) は、サーバー側暗号化が設定されているバケットにアップロードされたオブジェクトを暗号化し、暗号化されたオブジェクトを保存します。 GetObjectを呼び出してオブジェクトをダウンロードすると、OSSはオブジェクトを復号して返します。 x-oss-server-side-encryptionヘッダーは、オブジェクトがサーバー側で暗号化されていることを宣言するためにレスポンスに含まれます。
レスポンス内のx-oss-server-side-encryptionヘッダーの詳細については、「レスポンスヘッダー」をご参照ください。
シナリオ
OSSはサーバー側暗号化を使用して静的データを保護します。 この機能は、深層学習サンプルやオンライン共同作業ドキュメントの保存など、追加のセキュリティやコンプライアンスが必要なシナリオで構成できます。
使用上の注意
サーバー側の暗号化は、次のリージョンでサポートされています。中国 (杭州) 、中国 (上海) 、中国 (青島) 、中国 (北京) 、中国 (張家口) 、中国 (フフホト) 、中国 (ウランカブ) 、中国 (深セン) 、中国 (河源) 、中国 (広州) 、中国 (成都) 、中国 (香港) 、米国 (シリコンバレー) 、米国 (バージニア) 、日本 (東京) 、韓国 (ソウル) 、シンガポール、オーストラリア (シドニー)サービス終了 、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、フィリピン (マニラ) 、タイ (バンコク) 、ドイツ (フランクフルト) 、英国 (ロンドン) 、アラブ首長国連邦 (ドバイ).
KMS管理CMK (SSE-KMS) を使用するサーバー側暗号化が設定されているバケットでオブジェクトのアップロード、ダウンロード、またはアクセス操作を実行する場合は、指定されたカスタマーマスターキー (CMK) を使用する権限があり、要求が匿名ではないことを確認してください。 それ以外の場合、要求は失敗し、
[この要求はkmsで禁止されています]
エラーメッセージが返されます。デフォルトでは、ミラーリングベースのback-to-originを使用して取得したオブジェクトは暗号化されません。
バケットのサーバー側の暗号化方法を設定または変更しても、バケット内の既存のオブジェクトの暗号化方法には影響しません。
オブジェクトは、一度に1つのサーバー側暗号化方法のみで暗号化できます。
バケットにサーバー側の暗号化を設定している場合でも、オブジェクトをバケットにアップロードまたはコピーするときに、オブジェクトに別の暗号化方法を使用できます。 オブジェクトに設定された暗号化方法が優先されます。 詳細は、「PutObject」をご参照ください。
暗号化方法
次の表に、さまざまなシナリオで使用できるサーバー側の暗号化方法を示します。
暗号化方法 | 説明 | シナリオ | 補足 | 課金ルール |
SSE-KMS | Key Management Service (KMS) が管理するデフォルトのCMKを使用するか、CMKを指定してデータを暗号化または復号化できます。 この方法は、暗号化または復号化のためにネットワーク経由でKMSサーバーにデータを送信する必要がないため、費用対効果が高くなります。 | セキュリティとコンプライアンスの要件を満たすようにCMKを指定する必要があります。 |
| KMSに保存されているCMKを使用してデータを暗号化または復号するAPI操作を呼び出すと、課金されます。 料金の詳細については、「KMSの請求」をご参照ください。 |
OSS管理キーを使用したサーバー側暗号化 (SSE-OSS) | OSSが管理するキーを使用して、オブジェクトを暗号化できます。 セキュリティを向上させるために、OSSは定期的にローテーションされるマスターキーを使用して暗号化キーを暗号化します。 | 基本的な暗号化機能のみが必要です。 キーを手動で管理する必要はありません。 | なし。 | 無料です。 |
手順
OSSコンソールの使用
OSS SDKの使用
ossutilの使用
OSS APIの使用
暗号化と復号化にKMS管理CMKを使用する
KMS管理CMKを使用して、オブジェクト暗号化用の暗号化キーを生成できます。 エンベロープ暗号化メカニズムはさらに、不正データアクセスを防止する。 KMSにより、キーのセキュリティ、整合性、可用性を手動で維持する必要がなくなります。 これにより、データの暗号化、データの復号化、デジタル署名の生成と検証に集中できます。
次の図は、SSE-KMSの暗号化ロジックを示しています。
SSE-KMSを使用してデータを暗号化する場合、次のキーを使用できます。
デフォルトのKMS管理CMK
OSSは、デフォルトのKMS管理CMKに基づいて生成されたキーを使用して、オブジェクトを暗号化し、オブジェクトのダウンロード時にオブジェクトを復号します。 SSE-KMSを初めて使用するとき、OSSはKMSでCMKを作成します。
設定方法:
バケットのサーバー側暗号化を設定する
バケットの暗号化方法をKMSに設定する CMK IDを指定せずに このようにして、このバケットにアップロードされたオブジェクトは暗号化されます。
特定のオブジェクトの暗号化方法を設定する
オブジェクトをアップロードするとき、またはオブジェクトのメタデータを変更するときは、リクエストに
x-oss-server-side-encryption
ヘッダーを含め、ヘッダーをKMS
に設定します。 このように、OSSはKMSが管理するデフォルトのCMKとAES-256の暗号化アルゴリズムを使用してオブジェクトを暗号化します。 詳細は、「PutObject」をご参照ください。
Bring Your Own Key (BYOK) を使用して生成されたCMK
KMSコンソールでBYOKマテリアルを使用してCMKを生成すると、OSSはCMKに基づいて生成されたキーを使用してさまざまなオブジェクトを暗号化し、CMK IDは暗号化されたオブジェクトのメタデータに記録されます。 オブジェクトは、解読権限を持つユーザーによってダウンロードされた場合にのみ自動的に解読されます。
BYOK資料は、次のいずれかのソースから入手できます。
Alibaba Cloudが提供するBYOKマテリアル: KMSでキーを作成する場合、キーマテリアルのソースとしてAlibaba Cloud KMSを選択します。
ユーザーが提供するBYOKマテリアル: KMSでキーを作成するときは、キーマテリアルのソースとして [外部] を選択し、外部キーマテリアルをインポートします。 外部キーをインポートする方法の詳細については、「キーマテリアルのインポート」をご参照ください。
設定方法:
バケットのサーバー側暗号化を設定する
バケットの暗号化方法をKMSに設定する CMK IDを指定します。 このようにして、このバケットにアップロードされたオブジェクトは暗号化されます。
特定のオブジェクトの暗号化方法を設定する
オブジェクトをアップロードするとき、またはオブジェクトのメタデータを変更するときは、リクエスト内で
x-oss-server-side-encryption
ヘッダーをKMS
に設定し、x-oss-server-side-encryption-key-ID
ヘッダーを使用してCMK idを指定します。 このように、OSSは、KMSによって管理される指定されたCMKとAES-256暗号化アルゴリズムを使用してオブジェクトを暗号化します。 詳細は、「PutObject」をご参照ください。
OSS管理キーを使用した暗号化と復号化
OSSは、データの暗号化に使用されるデータキーを生成および管理し、データを保護するための強力で多要素のセキュリティ対策を提供します。 SSE-OSSはAES-256暗号化アルゴリズムを使用します データを暗号化します。
設定方法:
バケットのサーバー側暗号化を設定する
暗号化方法をSSE-OSSに設定し、暗号化アルゴリズムとしてAES-256を指定します。 このように、バケットにアップロードされたすべてのオブジェクトはデフォルトで暗号化されます。
特定のオブジェクトの暗号化方法を設定する
オブジェクトをアップロードしたり、オブジェクトのメタデータを変更したりするときは、リクエストに
x-oss-server-side-encryption
パラメーターを含め、パラメーターをAES256
に設定します。. OSSはOSS管理キーを使用してオブジェクトを暗号化します。 詳細は、「PutObject」をご参照ください。
必要な権限。
RAMユーザーがサーバー側の暗号化を使用してさまざまなシナリオでオブジェクトを暗号化および復号化する場合、RAMユーザーは必要な権限を持っている必要があります。
RAMユーザーに権限を付与する方法の詳細については、「RAMポリシーの一般的な例」をご参照ください。
バケットのサーバー側暗号化を設定する
バケットを管理するための権限。
PutBucketEncryption
およびGetBucketEncryption
を呼び出す権限。暗号化方法をSSE-KMSに設定し、指定したCMKを使用してデータを暗号化する場合に、
ListKeys
、Listalias
、ListAliasesByKeyId
、およびDescribeKey
を呼び出すための操作権限。 次のサンプルコードは、RAMポリシーをアタッチしてRAMユーザーに上記の権限を付与する方法の例を示しています。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey" ], "Resource": [ "acs:kms:*:141661496593****:*" // The RAM user is allowed to use all KMS-managed CMKs that belong to the Alibaba Cloud account. To specify that only a specific CMK is available for the RAM user, enter the CMK ID. ] } ] }
暗号化メソッドが設定されているバケットにオブジェクトをアップロードする
バケットにオブジェクトをアップロードする権限。
ListKeys
、ListAliases
、ListAliases ByKeyId
、DescribeKey
、GenerateDataKey
、およびDecrypt
に暗号化方法を設定し、指定したCMKを使用してデータを暗号化する場合に、次の操作を呼び出す権限。 次のサンプルコードは、RAMポリシーをアタッチしてRAMユーザーに上記の権限を付与する方法の例を示しています。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*" // The RAM user is allowed to use all CMKs that belong to the Alibaba Cloud account. To specify that only a specific CMK is available for the RAM user, enter the CMK ID. ] } ] }
暗号化方式が設定されているバケットからオブジェクトをダウンロードする
バケット内のオブジェクトにアクセスするための権限。
暗号化メソッドが使用され、指定されたCMKがSSE-KMSされている場合に、
Decrypt
操作を呼び出す権限。 次のサンプルコードは、RAMポリシーをアタッチしてRAMユーザーに上記の権限を付与する方法の例を示しています。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*" // The RAM user has the permissions to use all CMKs that belong to the Alibaba Cloud account. To specify that only a specific CMK is available for the RAM user to decrypt objects, enter the CMK ID. ] } ] }
よくある質問
バケットのサーバー側暗号化を設定した後、OSSはバケット内の既存のオブジェクトを暗号化しますか?
いいえ。OSSは、バケットにサーバー側暗号化が設定された後にアップロードされたオブジェクトのみを暗号化し、バケット内の既存のオブジェクトは暗号化しません。 バケット内の既存のオブジェクトを暗号化する場合は、CopyObject操作を呼び出して既存のオブジェクトを上書きできます。