Advanced Encryption Standard (AES) またはSM4カスタマーマスターキー (CMK) を作成した後、key Management Service (KMS) SDKのコードを使用してデータを暗号化できます。 このトピックの例では、KMS SDK for Javaを使用してデータを暗号化します。
準備
KMS SDK for Javaの依存関係宣言を取得します。 必要なSDKバージョンの詳細については、「SDKの概要」をご参照ください。 サンプルコード:
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-kms</artifactId> <version>2.14.0</version> </dependency>
KMSの領域に基づいてKMSのエンドポイントを取得します。 詳細については、「Make API requests」をご参照ください。
説明この例では、KMSのパブリックエンドポイントにアクセスするリージョンIDを指定できます。 KMSの仮想プライベートクラウド (VPC) アドレスにアクセスする方法の詳細については、「KMS SDK For Javaの使用例」をご参照ください。
データの暗号化
KMS SDK for Javaの次のコードを使用してデータを暗号化します。
Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 AccessKeyペアを使用して操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。プロジェクトコードにAccessKey IDとAccessKey Secretを保存しないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウントに属するすべてのリソースのセキュリティが侵害される可能性があります。
この例では、AccessKeyペアは、ID認証を実装するためにALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数に保存されます。
認証情報の設定方法の詳細については、「アクセス資格情報の管理」をご参照ください。
環境変数を設定するために使用される方法は、オペレーティングシステムによって異なります。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.io.UnsupportedEncodingException;
import com.aliyuncs.kms.model.v20160120.*;
import com.aliyuncs.utils.Base64Helper;
public class Encrypt {
public static void main(String[] args) {
/*
* 1. Specify the region where your CMK resides.
* 2. Specify the AccessKey ID and AccessKey secret that are required to access KMS.
*/
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
IAcsClient client = new DefaultAcsClient(profile);
try {
EncryptRequest request = new EncryptRequest();
// Specify the CMK alias or CMK ID that is used to encrypt "Hello world".
request.setKeyId("alias/Apollo/SalaryEncryptionKey");
request.setPlaintext(Base64Helper.encode("Hello world", null));
EncryptResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException | UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
サンプルコードの詳細については、alibabacloud-kms-demoをご参照ください。