全部产品
Search
文档中心

Key Management Service:Contoh kode untuk Secrets Manager

更新时间:Jul 02, 2025

Setelah rahasia dibuat, Anda dapat menggunakan KMS SDK untuk mengakses dan memanfaatkan rahasia tersebut. Bagian ini menjelaskan cara menggunakan KMS SDK untuk Java sebagai contoh implementasi.

Persiapan

  1. Dapatkan deklarasi dependensi KMS SDK untuk Java. Untuk detail lebih lanjut tentang versi SDK yang diperlukan, lihat Ikhtisar SDK. Contoh kode:

    <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.12.0</version>
    </dependency>
  2. Dapatkan titik akhir KMS sesuai dengan wilayah KMS. Untuk informasi lebih lanjut, lihat Buat Permintaan API.

    Catatan

    Pada contoh ini, Anda dapat menentukan ID wilayah untuk mengakses titik akhir publik KMS. Untuk panduan tentang cara mengakses alamat virtual private cloud (VPC) dari KMS, lihat Contoh Penggunaan KMS SDK untuk Java.

Menggunakan rahasia

Anda dapat membuat rahasia untuk menyimpan data sensitif. Untuk detail lebih lanjut, lihat Ikhtisar.

Catatan

Pasangan AccessKey dari akun Alibaba Cloud memiliki izin penuh terhadap semua operasi API. Menggunakan pasangan AccessKey secara langsung merupakan operasi berisiko tinggi. Sebagai alternatif, gunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di dalam kode proyek Anda. Jika hal ini dilakukan, pasangan AccessKey dapat bocor dan keamanan seluruh sumber daya akun Anda akan terancam.

Pada contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET untuk mengimplementasikan otentikasi identitas.

package com.aliyun.kms.secretmanager.samples;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.kms.model.v20160120.*;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.http.HttpClientConfig;

public class FastUsage {
         /*
          *  Sebelum Anda mengakses Secrets Manager, tetapkan kebijakan ke akun Anda di konsol RAM. Misalnya, tetapkan kebijakan AliyunKMSFullAccess, yang memberikan izin manajemen pada KMS, ke akun tersebut. Anda juga dapat menetapkan kebijakan sistem atau kebijakan kustom yang memberikan izin yang diperlukan pada operasi API.
          * */
    public static DefaultAcsClient getkmsClient() {
        /*
         *  1. Tentukan wilayah tempat Secrets Manager berada.
         *  2. Tentukan ID AccessKey dan rahasia AccessKey yang diperlukan untuk mengakses KMS.
         * */
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou",System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        HttpClientConfig clientConfig = HttpClientConfig.getDefault();
        profile.setHttpClientConfig(clientConfig);
        return new DefaultAcsClient(profile);
    }


    public static void CreateSecretSample(String secret_name,String secret_data,String version_id) throws ClientException {
        DefaultAcsClient acsClient = getkmsClient();

        CreateSecretRequest req = new CreateSecretRequest();
        req.setSecretName(secret_name);
        req.setSecretData(secret_data);
        req.setVersionId(version_id);
        req.setSecretDataType("text");
        req.setDescription("my app passwd");
        req.setEncryptionKeyId("");           //Anda dapat menggunakan CMK simetris atau biarkan parameter ini kosong. Saat parameter ini dibiarkan kosong, Anda dapat menggunakan kunci yang dikelola yang dibuat di Secrets Manager.
        req.setTags("");

        CreateSecretResponse rsp = acsClient.getAcsResponse(req);
        System.out.printf("CreateSecret arn: %s; secret_name: %s; versionid: %s; requestid: %s \n",rsp.getArn(),rsp.getSecretName(),rsp.getVersionId(),rsp.getRequestId());
    }


    public static void GetSecretValueSample(String secret_name,String version_stage) throws ClientException {
        DefaultAcsClient acsClient = getkmsClient();

        GetSecretValueRequest req = new GetSecretValueRequest();
        req.setSecretName(secret_name);
        req.setVersionStage(version_stage);

        GetSecretValueResponse  rsp = acsClient.getAcsResponse(req);
        System.out.printf("GetSecretValue  data: %s \n",rsp.getSecretData());
    }



    public static void PutSecretValueSample(String secret_name,String secret_data,String version_id,String version_stages) throws ClientException {
        DefaultAcsClient acsClient = getkmsClient();

        PutSecretValueRequest req = new PutSecretValueRequest();
        req.setSecretName(secret_name);
        req.setSecretData(secret_data);
        req.setSecretDataType("text");
        req.setVersionId(version_id);
        req.setVersionStages(version_stages);  //Nilai rahasia dari versi yang ditandai dengan label tahap tertentu dalam format JSON.


        PutSecretValueResponse rsp = acsClient.getAcsResponse(req);
        System.out.printf("PutSecretValue versionid: %s; now stages: %s \n",rsp.getVersionId(),rsp.getVersionStages());
    }


    public static void DeleteScretSample() throws ClientException {
        DefaultAcsClient acsClient = getkmsClient();

        DeleteSecretRequest req = new DeleteSecretRequest();
        req.setSecretName("myapp_secret");
        req.setForceDeleteWithoutRecovery("true");


        DeleteSecretResponse rsp = acsClient.getAcsResponse(req);
        System.out.printf("DeleteSecret force delete secret:%s \n",rsp.getSecretName());
    }


    public static void main(String[] args ){
        try {
           /*
            *  Buat rahasia dan tentukan versi awal serta nilai rahasia yang ingin Anda enkripsi. Versi awal ditandai dengan ACSCurrent.
            * */
            FastUsage.CreateSecretSample("myapp_secret","mysqpasswdv1","v1");
            /*
             *  Dapatkan nilai rahasia. Jika Anda tidak menentukan nomor versi atau label tahap, Secrets Manager akan mengembalikan nilai rahasia dari versi yang ditandai dengan ACSCurrent.
             * */
            FastUsage.GetSecretValueSample("myapp_secret","");


            /*
             *  Simpan nilai rahasia versi baru di rahasia dan tentukan VersionStages untuk versi ini. Jika VersionStages tidak ditentukan, versi tersebut ditandai dengan ACSCurrent.
             * */
            FastUsage.PutSecretValueSample("myapp_secret","mysqpasswdv2","v2","[\"ACSCurrent\", \"MyUserstage\"]");
            /*
             *  Dapatkan nilai rahasia lagi. Secara default, nilai rahasia versi baru diperoleh.
             * */
            FastUsage.GetSecretValueSample("myapp_secret","");



            FastUsage.PutSecretValueSample("myapp_secret","mysqpasswdv3","v3","");
            /*
             *  Dapatkan nilai rahasia. Secara default, nilai rahasia versi baru diperoleh.
             * */
            FastUsage.GetSecretValueSample("myapp_secret","");
            /*
             *  Dapatkan nilai rahasia. Setelah VersionId atau VersionStages dikonfigurasi, Anda dapat memperoleh nilai rahasia dari versi sebelumnya.
             * */
            FastUsage.GetSecretValueSample("myapp_secret","MyUserstage");


            FastUsage.DeleteScretSample();

        } catch (ClientException e) {
            e.printStackTrace();
        }

    }
}

Untuk referensi lebih lanjut tentang contoh kode, kunjungi alibabacloud-kms-demo.