All Products
Search
Document Center

Key Management Service:Memulai manajemen kunci

Last Updated:May 28, 2026

Gunakan Key Management Service (KMS) untuk membuat dan mengelola kunci enkripsi guna melindungi data bisnis Anda.

Ikhtisar

KMS menyediakan tiga jenis kunci—kunci default, kunci perangkat lunak, dan kunci perangkat keras—untuk memenuhi berbagai kebutuhan bisnis, keamanan, dan kepatuhan. Ikhtisar KMS. Jenis dan spesifikasi kunci.

  • Kunci default gratis dan mengaktifkan server-side encryption untuk produk cloud seperti ECS. Kunci default hanya mendukung enkripsi simetris dan tidak dapat digunakan untuk client-side encryption.

  • Kunci perangkat lunak menyediakan server-side encryption serta mendukung enkripsi dan dekripsi data sisi klien dan komputasi dan verifikasi digital signature. Kunci ini mendukung jenis kunci simetris dan asimetris dengan key rotation otomatis untuk mengurangi risiko kebocoran kunci.

  • Kunci perangkat keras menawarkan fitur yang sama dengan kunci perangkat lunak—server-side encryption, API enkripsi dan dekripsi sisi klien, serta komputasi dan verifikasi digital signature—dengan dukungan kunci simetris dan asimetris. Kunci perangkat keras mendukung lebih banyak spesifikasi kunci dan menyimpan kunci di dalam HSM untuk memenuhi standar seperti Undang-Undang Kriptografi Tiongkok dan FIPS. Kunci ini tidak mendukung key rotation otomatis.

Enkripsi data untuk produk cloud

KMS mengaktifkan server-side encryption untuk produk cloud seperti ECS. Jenis kunci yang didukung: kunci default, kunci perangkat lunak, dan kunci perangkat keras.

Contoh

Contoh berikut mengintegrasikan ECS dengan kunci default KMS. Untuk integrasi produk cloud lainnya, lihat Ikhtisar integrasi KMS dengan produk cloud lainnya dan Produk cloud yang dapat diintegrasikan dengan KMS.

Langkah 1: Aktifkan kunci master default

  1. Masuk ke Konsol Key Management Service. Di bilah navigasi atas, pilih wilayah. Di panel navigasi kiri, pilih Resource > Keys.

  2. Di halaman Key Management, klik tab Default Keys. Di kolom Actions pada kunci master, klik Enable dan atur alias menjadi alias/main.image

Catatan

Kunci master default hanya mendukung server-side encryption oleh produk cloud. Untuk enkripsi sisi klien, beli instans kunci perangkat lunak atau kunci perangkat keras.

Langkah 2: Integrasikan ECS dengan kunci default

Saat membeli instance ECS, pilih alias kunci master alias/main di halaman pembelian untuk mengaktifkan server-side encryption.

image

Langkah 3: Enkripsi transmisi data di ECS

ECS secara otomatis memanggil API KMS untuk mengenkripsi dan mendekripsi data di dalam instance ECS. Produk cloud biasanya menggunakan envelope encryption. Gunakan kunci KMS untuk envelope encryption.

Bangun solusi kriptografi lapisan aplikasi

Gunakan API KMS untuk enkripsi sisi klien, dekripsi, serta komputasi dan verifikasi digital signature. Jenis kunci yang didukung: kunci perangkat lunak dan kunci perangkat keras.

Prasyarat

Instans manajemen kunci KMS (perangkat lunak atau perangkat keras) telah dibeli dan diaktifkan. Beli dan aktifkan instans KMS.

Contoh

Contoh berikut menggunakan instans kunci perangkat lunak untuk memanggil operasi Encrypt dan Decrypt pada data aplikasi. Gunakan kunci KMS untuk mengenkripsi dan mendekripsi data secara online.

Langkah 1: Buat kunci perangkat lunak

  1. Masuk ke Konsol Key Management Service. Di bilah navigasi atas, pilih wilayah. Di panel navigasi kiri, pilih Resource > Keys.

  2. Buka tab Customer Master Keys dan klik Create Key. Ikuti petunjuk untuk menyelesaikan konfigurasi.

    • KMS Instance: pilih instans manajemen kunci perangkat lunak Anda.

    • Untuk Key Type, pilih Symmetric Key.

    • Untuk Key Spec, pilih Aliyun_AES_256.image

Langkah 2: Tingkatkan versi gambar instans KMS

Contoh ini menggunakan dedicated KMS untuk operasi kriptografi, yang memerlukan image version 3.0.0 atau lebih baru.

Catatan

Lewati langkah ini jika image version instans KMS Anda adalah 3.0.0 atau lebih baru.

Di halaman Instances, periksa versi gambar di detail instans. Jika versinya lebih lama dari 3.0.0, klik Upgrade. Tingkatkan versi gambar instans KMS.image

Langkah 3: Instal dependensi

  1. Persiapkan lingkungan Anda

    Persyaratan

    Java 8 atau versi lebih baru harus terinstal.

    Verifikasi versi

    Buka terminal dan jalankan perintah java -version untuk memeriksa versi Java (JDK) Anda.

  2. Instal SDK

    Tambahkan dependensi Maven berikut. Maven akan secara otomatis mengunduh file SDK yang diperlukan dari repositorinya. Gunakan Alibaba Cloud SDK V2.0.

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>kms20160120</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-openapi</artifactId>
      <version>0.3.6</version>
    </dependency>

Langkah 4: Buat kredensial API

Contoh ini melakukan autentikasi dengan pasangan AccessKey RAM user melalui Resource Access Management (RAM). Untuk metode lainnya, lihat Kelola kredensial akses.

  1. Buat pasangan AccessKey untuk RAM user di Konsol RAM. Buat AccessKey.

    Jika Anda sudah memiliki pasangan AccessKey, lewati langkah ini.image

  2. Berikan izin yang sesuai kepada RAM user.

    Sebagai contoh, untuk membatasi RAM user hanya pada operasi kriptografi, berikan kebijakan sistem AliyunKMSCryptoUserAccess. Kelola izin untuk RAM user.image

    Catatan

    KMS mendukung dua model izin:

Langkah 5: Dapatkan sertifikat CA instans KMS

Di halaman detail instans, dapatkan CA certificate instans.

image

Langkah 6: Dapatkan titik akhir VPC instans

Di halaman detail instans, dapatkan VPC endpoint instans.

image

Langkah 7: Lakukan panggilan API sisi klien

  1. Inisialisasi Alibaba Cloud SDK.

    Penting

    Gunakan Alibaba Cloud SDK V2.0. Atur VPC endpoint instans sebagai endpoint dan konfigurasikan CA certificate instans.

        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Menyematkan kredensial akses secara langsung dalam kode dapat menimbulkan risiko keamanan. Kode ini hanya untuk demonstrasi.
            // Untuk keamanan yang lebih baik, kami menyarankan menggunakan STS. Untuk metode autentikasi lainnya, lihat https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib diisi. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib diisi. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Untuk Endpoint, masukkan VPC endpoint instans Anda. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com
            config.endpoint = "<your_instance_vpc_endpoint>";
            // Masukkan konten CA certificate instans Anda.
            config.ca = "<your_instance_ca_certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
  2. Panggil operasi Encrypt untuk mengenkripsi data.

    package com.aliyun.sample;
    
    import com.aliyun.tea.*;
    
    public class Sample {
      public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Menyematkan kredensial akses secara langsung dalam kode dapat menimbulkan risiko keamanan. Kode ini hanya untuk demonstrasi.
            // Untuk keamanan yang lebih baik, kami menyarankan menggunakan STS. Untuk metode autentikasi lainnya, lihat https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib diisi. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib diisi. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Untuk Endpoint, masukkan VPC endpoint instans Anda. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com
            config.endpoint = "<your_instance_vpc_endpoint>";
            // Masukkan konten CA certificate instans Anda.
            config.ca = "<your_instance_ca_certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
       
         public static void main(String[] args_) throws Exception {
            java.util.List<String> args = java.util.Arrays.asList(args_);
            com.aliyun.kms20160120.Client client = Sample.createClient();
            com.aliyun.kms20160120.models.EncryptRequest encryptRequest = new com.aliyun.kms20160120.models.EncryptRequest()
                    .setKeyId("<your_key_id>")
                    .setPlaintext("<your_plaintext>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // Tambahkan kode Anda sendiri untuk mencetak respons API.
                client.encryptWithOptions(encryptRequest, runtime);
            } catch (TeaException error) {
                // Kode berikut hanya untuk demonstrasi. Kami menyarankan agar Anda menangani exception dengan hati-hati dan tidak mengabaikannya dalam proyek Anda.
                // Pesan error
                System.out.println(error.getMessage());
                // URL pemecahan masalah
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                // Kode berikut hanya untuk demonstrasi. Kami menyarankan agar Anda menangani exception dengan hati-hati dan tidak mengabaikannya dalam proyek Anda.
                // Pesan error
                System.out.println(error.getMessage());
                // URL pemecahan masalah
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }
  3. Panggil operasi Decrypt untuk mendekripsi data.

    package com.aliyun.sample;
    
    import com.aliyun.tea.*;
    
    public class Sample {
    
        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Menyematkan kredensial akses secara langsung dalam kode dapat menimbulkan risiko keamanan. Kode ini hanya untuk demonstrasi.
            // Untuk keamanan yang lebih baik, kami menyarankan menggunakan STS. Untuk metode autentikasi lainnya, lihat https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib diisi. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib diisi. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Untuk Endpoint, masukkan VPC endpoint instans Anda. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com
            config.endpoint = "<your_instance_vpc_endpoint>";
            // Masukkan konten CA certificate instans Anda.
            config.ca = "<your_instance_ca_certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
    
        public static void main(String[] args_) throws Exception {
            java.util.List<String> args = java.util.Arrays.asList(args_);
            com.aliyun.kms20160120.Client client = Sample.createClient();
            com.aliyun.kms20160120.models.DecryptRequest decryptRequest = new com.aliyun.kms20160120.models.DecryptRequest()
                    .setCiphertextBlob("<your_ciphertext_blob>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // Tambahkan kode Anda sendiri untuk mencetak respons API.
                client.decryptWithOptions(decryptRequest, runtime);
            } catch (TeaException error) {
                // Kode berikut hanya untuk demonstrasi. Kami menyarankan agar Anda menangani exception dengan hati-hati dan tidak mengabaikannya dalam proyek Anda.
                // Pesan error
                System.out.println(error.getMessage());
                // URL pemecahan masalah
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                // Kode berikut hanya untuk demonstrasi. Kami menyarankan agar Anda menangani exception dengan hati-hati dan tidak mengabaikannya dalam proyek Anda.
                // Pesan error
                System.out.println(error.getMessage());
                // URL pemecahan masalah
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }

Dokumentasi terkait