OSS クライアントサイド暗号化を使用すると、データを OSS にアップロードする前にローカルで暗号化できます。これにより、承認されたキー所有者のみがデータを復号化できるようになり、転送中およびストレージ中のデータセキュリティが強化されます。
注意事項
このトピックのサンプルコードでは、デフォルトで中国 (杭州) リージョン ID の
cn-hangzhouとパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用してください。OSS リージョンとエンドポイント間のマッピングの詳細については、「リージョンとエンドポイント」をご参照ください。このトピックの例では、環境変数からアクセス資格情報を読み取ります。アクセス資格情報を構成する方法の詳細については、「アクセス資格情報を構成する」をご参照ください。
クライアントサイド暗号化機能を使用する場合、マスターキーの整合性はお客様の責任となります。
暗号化されたデータをコピーまたは移行する場合、暗号化メタデータの整合性はお客様の責任となります。
メソッド定義
Go SDK V2 は、マスターキーを使用するための次のメソッドをサポートしています。
ユーザー管理のマスターキー (RSA) を使用する
SDK は RSA のデフォルト実装を提供します。マスターキーの公開鍵と秘密鍵をパラメーターとして SDK に提供する必要があります。
カスタムマスターキーを使用する
RSA マスターキーメソッドが要件を満たさない場合は、マスターキーのカスタム暗号化および復号化動作を実装できます。このトピックでは、Alibaba Cloud KMS 3.0 を例として、マスターキーの暗号化と復号化をカスタマイズする方法を示します。
これら 2 つの暗号化メソッドを使用すると、クライアントデータを漏洩から効果的に保護できます。暗号化されたデータが侵害された場合でも、復号化して生データを明らかにすることはできません。
OSS クライアントサイド暗号化の原則の詳細については、「クライアントサイド暗号化」をご参照ください。
クライアントサイド暗号化を使用するには、まず暗号化クライアントをインスタンス化し、次にクライアントのインターフェイスを呼び出して操作を実行する必要があります。オブジェクトは、リクエストの一部として自動的に暗号化および復号化されます。
type EncryptionClient struct {
...
}
func NewEncryptionClient(c *Client, masterCipher crypto.MasterCipher, optFns ...func(*EncryptionClientOptions)) (eclient *EncryptionClient, err error)リクエストパラメーター
パラメーター | タイプ | 説明 |
c | *Client | 暗号化されていないクライアントインスタンス |
masterCipher | crypto.MasterCipher | データキーの暗号化と復号化に使用されるマスターキーインスタンス。 |
optFns | ...func(*EncryptionClientOptions) | (オプション) 暗号化クライアントの構成オプション。 |
次の表に、EncryptionClientOptions オプションを示します。
パラメーター | タイプ | 説明 |
MasterCiphers | []crypto.MasterCipher | データキーの復号化に使用されるマスターキーインスタンスグループ。 |
戻り値
戻り値 | タイプ | 説明 |
eclient | *EncryptionClient | 暗号化クライアントインスタンス。このパラメーターは、err が nil の場合にのみ有効です。 |
err | error | 暗号化クライアントの作成ステータス。操作が失敗した場合、err は nil ではありません。 |
次の表に、EncryptionClient インターフェイスを示します。
基本インターフェイス | 説明 |
GetObjectMeta | オブジェクトのメタデータを取得します。 |
HeadObject | オブジェクトのメタデータを取得します。 |
GetObject | オブジェクトをダウンロードし、自動的に復号化します。 |
PutObject | オブジェクトをアップロードし、自動的に暗号化します。 |
InitiateMultipartUpload | マルチパートアップロードイベントとシャーディング暗号化コンテキスト (EncryptionMultiPartContext) を初期化します。 |
UploadPart | マルチパートアップロードイベントを初期化します。このインターフェイスを呼び出してパートデータをアップロードし、データを自動的に暗号化できます。このインターフェイスを呼び出すときは、シャーディング暗号化コンテキストを設定する必要があります。 |
CompleteMultipartUpload | すべてのパートデータがアップロードされた後、このインターフェイスを呼び出してパートをファイルにマージできます。 |
AbortMultipartUpload | マルチパートアップロードイベントをキャンセルし、対応するパートデータを削除します。 |
ListParts | 指定されたアップロードイベントに属する、正常にアップロードされたすべてのパートをリストします。 |
高度なインターフェイス | 説明 |
NewDownloader | ダウンロードマネージャーインスタンスを作成します。 |
NewUploader | アップロードマネージャーインスタンスを作成します。 |
OpenFile | ReadOnlyFile インスタンスを作成します。 |
ヘルパーインターフェイス | 説明 |
Unwrap | 暗号化されていないクライアントインスタンスを取得します。このインスタンスを使用して、他の基本インターフェイスにアクセスできます。 |
RSA マスターキーの使用
カスタムマスターキーの使用
関連情報
OSS クライアントサイド暗号化の原則の詳細については、「クライアントサイド暗号化」をご参照ください。
クライアントサイド暗号化用の Go SDK ユーザーガイドの詳細については、「ユーザーガイド」をご参照ください。
RSA マスターキーを使用したオブジェクトのシンプルなアップロードとダウンロードを実行するための完全なサンプルコードについては、「GitHub サンプル」をご参照ください。
KMS マスターキーを使用したオブジェクトのシンプルなアップロードとダウンロードを実行するための完全なサンプルコードについては、「GitHub サンプル」をご参照ください。