OSS Java SDK は、ファイル (オブジェクト) のアップロード中、ダウンロード中、およびレプリケーション中にデータのセキュリティを保証するため、サーバーとクライアントでデータの整合性チェックとファイルの暗号化を提供します。

データの整合性チェック

OSS Java SDK は、オブジェクト (ファイル) のアップロード、ダウンロード、およびレプリケーションの整合性を保証するため、MD5 認証と巡回冗長検査 (CRC) を提供します。

  • MD5 認証

    ファイルをアップロードするため、Content-MD5 を設定した場合、OSS は受信したコンテンツに基づき、MD5 値を計算します。 MD5 値がアップロードされたファイルの値と一致しない場合は、InvalidDigest が返されます。 これにより、データの完全性が保証されます。

    ファイルのアップロード中に MD5 認証を行うには、次のコードを実行します。

    // This example uses endpoint China East 1 (Hangzhou). Specify the actual endpoint based on your requirements.
    String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    // It is highly risky to log on with AccessKey of an Alibaba Cloud account because the account has permissions on all the APIs in OSS. We recommend that you log on as a RAM user to access APIs or perform routine operations and maintenance. To create a RAM account, log on to https://ram.console.aliyun.com.
    String accessKeyId = "<yourAccessKeyId>";
    String accessKeySecret = "<yourAccessKeySecret>";
    
    // Create an OSSClient instance.
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
    // Upload a string.
    String content = "Hello OSS";
    
    ObjectMetadata meta = new ObjectMetadata();
    // Configure MD5 authentication.
    String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));
    meta.setContentMD5(md5);
    
    ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);
    
    // Close your OSSClient instance.
    ossClient.shutdown();
    
    MD5 認証 は、putObject、getObject、appendObject、postObject、および uploadPart を対象に行います。
  • CRC64

    CRC は、データの整合性を保証するため、既定ではオブジェクト (ファイル) のアップロード中、ダウンロード中、およびレプリケーション中に有効になります。

    次のコードを実行し、ファイルのアップロード中に CRC が有効になっているかどうかを確認します。

    // This example uses endpoint China East 1 (Hangzhou). Specify the actual endpoint based on your requirements.
    String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    // It is highly risky to log on with AccessKey of an Alibaba Cloud account because the account has permissions on all the APIs in OSS. We recommend that you log on as a RAM user to access APIs or perform routine operations and maintenance. To create a RAM account, log on to https://ram.console.aliyun.com.
    String accessKeyId = "<yourAccessKeyId>";
    String accessKeySecret = "<yourAccessKeySecret>";
    
    // Create an OSSClient instance.
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
    // Upload a string.
    String content = "Hello OSS";
    
    PutObjectResult result = ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()));
    
    // Check whether CRC is enabled. True indicates it is enabled while false indicates it is disabled.
    if (ossClient.getClientConfiguration().isCrcCheckEnabled()) {
    	// Check whether CRC takes effect based on the response.
        OSSUtils.checkChecksum(result.getClientCRC(), result.getServerCRC(), result.getRequestId());
     }
    // Close your OSSClient instance.
    ossClient.shutdown();
    
    • CRC64 認証は、putObject、getObject、appendObject、および uploadPart を対象に行います。
    • CRC64 認証では CPU スペースを使用するため、アップロードとダウンロードの進行状況に影響を与えます。

サーバー上のファイルの暗号化

ファイルのアップロード時にファイルを暗号化してサーバーに保存するため、オブジェクトメタの serverSideEncryption パラメーターを AES256 または KMS に設定します。 詳しくは、OSS 開発者ガイド内の、「サーバー側の暗号化」をご参照ください。

ファイルのアップロード中にサーバー上でファイルの暗号化を行うには、次のコードを実行します。

// This example uses endpoint China East 1 (Hangzhou). Specify the actual endpoint based on your requirements.
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// It is highly risky to log on with AccessKey of an Alibaba Cloud account because the account has permissions on all the APIs in OSS. We recommend that you log on as a RAM user to access APIs or perform routine operations and maintenance. To create a RAM account, log on to https://ram.console.aliyun.com.
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// Create an OSSClient instance.
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// Upload a string.
String content = "Hello OSS";

ObjectMetadata meta = new ObjectMetadata();
// Set the server-side encryption code to AES256 for the file.
meta.setServerSideEncryption(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);

ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);

// Close your OSSClient instance.
ossClient.shutdown();

クライアント側の暗号化

クライアント上のファイルの暗号化は、ユーザーのローカルデバイス上で行うことができます。復号化は、OSS にアップロードされたファイルをローカルデバイスにダウンロードして行います。 詳しくは、OSS 開発者ガイド内の、「クライアント側の暗号化 SDKのイントロダクション」をご参照ください。