All Products
Search
Document Center

Key Management Service:Panduan cepat manajemen kunci

Last Updated:Jul 21, 2026

Anda dapat menggunakan Key Management Service (KMS) untuk membuat kunci guna mengenkripsi dan mendekripsi data bisnis. Topik ini menjelaskan cara membuat dan menggunakan kunci tersebut.

Ikhtisar

KMS menyediakan tiga jenis manajemen kunci—kunci default, kunci perangkat lunak, dan kunci perangkat keras—untuk memenuhi berbagai skenario bisnis serta kebutuhan keamanan dan kepatuhan. Untuk informasi selengkapnya, lihat Ikhtisar Key Management Service dan jenis manajemen kunci dan spesifikasi kunci.

  • Kunci default disediakan oleh KMS secara gratis. Anda dapat menggunakannya untuk Enkripsi sisi server pada layanan cloud, misalnya saat diintegrasikan dengan ECS. Kunci default hanya mendukung enkripsi simetris dan tidak mendukung enkripsi data sisi klien.

  • Seperti kunci default, kunci perangkat lunak menyediakan Enkripsi sisi server untuk layanan cloud. Anda juga dapat menggunakan kunci perangkat lunak untuk membangun solusi kriptografi lapisan aplikasi menggunakan API untuk enkripsi dan dekripsi data sisi klien, pembuatan dan verifikasi signature digital. Kunci perangkat lunak dapat berupa kunci simetris atau asimetris, serta mendukung rotasi kunci (pembaruan kunci otomatis) untuk mengurangi risiko kebocoran kunci.

  • Seperti kunci perangkat lunak, kunci perangkat keras menyediakan Enkripsi sisi server untuk layanan cloud dan memungkinkan Anda membangun solusi kriptografi lapisan aplikasi. Kunci ini menyediakan API untuk enkripsi dan dekripsi data sisi klien, pembuatan dan verifikasi signature digital, serta mendukung kunci simetris maupun asimetris. Dibandingkan kunci perangkat lunak, kunci perangkat keras mendukung lebih banyak spesifikasi kunci dan menyimpan kunci dalam hardware security module untuk memenuhi persyaratan kepatuhan seperti Undang-Undang Kriptografi Tiongkok dan FIPS. Namun, kunci perangkat keras tidak mendukung rotasi kunci.

Enkripsi data untuk layanan cloud

Anda dapat menggunakan manajemen kunci untuk Enkripsi sisi server pada layanan cloud seperti ECS guna menghindari risiko keamanan akibat transmisi data dalam bentuk teks biasa. Jenis kunci berikut mendukung fitur ini: kunci default, kunci perangkat lunak, dan kunci perangkat keras

Contoh

Contoh ini menunjukkan cara mengintegrasikan ECS dengan kunci master default KMS. Untuk informasi selengkapnya tentang integrasi layanan cloud dengan KMS, lihat Ikhtisar integrasi KMS dengan layanan cloud dan Layanan 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 Default Keys, lalu klik Enable di kolom Actions untuk kunci master tersebut. Beri nama kunci master tersebut alias/main.

Catatan

Kunci default hanya dapat digunakan untuk Enkripsi sisi server pada layanan cloud, bukan untuk enkripsi data sisi klien. Jika Anda memerlukan enkripsi data sisi klien, buat instans dan beli customer master key (software) atau customer master key (hardware).

Langkah 2: Integrasikan ECS dengan kunci KMS default

Saat membeli Instance ECS, di halaman pembelian, pilih alias kunci alias/main untuk mengenkripsi data sisi server.

Di bagian System Disk pada pengaturan Storage, centang kotak Encrypt, lalu pilih kunci yang diinginkan dari daftar drop-down Encryption Key.

Langkah 3: Enkripsi data di ECS

Saat data ditulis ke atau dibaca dari disk terenkripsi Instance ECS, ECS secara otomatis memanggil API KMS untuk mengenkripsi dan mendekripsi data. Tidak diperlukan intervensi manual. Layanan cloud biasanya menggunakan Enkripsi amplop untuk mengenkripsi data. Untuk informasi selengkapnya, lihat Gunakan kunci KMS untuk Enkripsi amplop.

Bangun solusi kriptografi lapisan aplikasi

Untuk membangun solusi kriptografi lapisan aplikasi, Anda dapat menggunakan API yang disediakan oleh KMS untuk enkripsi dan dekripsi data sisi klien, serta untuk pembuatan dan verifikasi signature digital. Jenis kunci berikut mendukung fitur ini: kunci perangkat lunak dan kunci perangkat keras.

Prasyarat

Anda telah membeli dan mengaktifkan Instans KMS yang mendukung kunci perangkat lunak atau kunci perangkat keras. Untuk informasi selengkapnya, lihat Beli dan aktifkan Instans KMS.

Contoh

Contoh ini menunjukkan cara menggunakan kunci perangkat lunak untuk Enkripsi dan Dekripsi data lapisan aplikasi. Untuk informasi selengkapnya tentang operasi lainnya, lihat 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, klik Create Key, lalu ikuti petunjuk untuk menyelesaikan konfigurasi.

    • Untuk KMS Instance, pilih instans manajemen kunci perangkat lunak KMS yang telah Anda beli.

    • Untuk Key Type, pilih Symmetric Encryption.

    • Untuk Key specification, pilih Aliyun_AES_256. Atur Key usage menjadi ENCRYPT/DECRYPT. Masukkan alias kunci dengan awalan alias/. Tambahkan pasangan kunci-nilai tag sesuai kebutuhan. Aktifkan rotasi kunci otomatis dan atur periode rotasi, misalnya 7 hari. Setiap rotasi akan mengonsumsi satu kunci dari Kuota Anda.

Langkah 2: Tingkatkan versi gambar Instans KMS

Contoh ini menggunakan gerbang KMS khusus untuk memanggil OpenAPI guna melakukan operasi kriptografi. Hal ini memerlukan versi gambar 3.0.0 atau lebih baru.

Catatan

Jika versi gambar Instans KMS Anda adalah 3.0.0 atau lebih baru, lewati langkah ini.

Anda dapat melihat versi gambar di detail instans pada halaman Upgrade. Jika versi gambarnya lebih lama dari 3.0.0, klik Upgrade untuk meningkatkan versi gambar Instans KMS. Untuk informasi selengkapnya, lihat Tingkatkan versi gambar Instans KMS.

Langkah 3: Instal dependensi

  1. Persiapkan lingkungan

    Persyaratan

    Java 8 atau versi lebih baru telah diunduh dan diinstal.

    Verifikasi versi

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

  2. Instal SDK

    Tambahkan dependensi Maven ke proyek Anda untuk mengunduh SDK secara otomatis dari Repositori Maven. Gunakan Alibaba Cloud SDK for Java V2.0.

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>kms20160120</artifactId>
      <version>1.3.1</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

SDK Alibaba Cloud mendukung beberapa metode autentikasi berbasis RAM. Topik ini menggunakan Pasangan Kunci Akses Pengguna RAM sebagai contoh. Untuk informasi selengkapnya tentang metode autentikasi, lihat Kelola kredensial akses.

  1. Buat Pasangan Kunci Akses untuk Pengguna RAM di Konsol RAM. Untuk informasi selengkapnya, lihat Buat Pasangan Kunci Akses.

    Jika Anda sudah memiliki Pasangan Kunci Akses, lewati langkah ini.

  2. Berikan izin yang sesuai kepada Pengguna RAM.

    Sebagai contoh, jika Anda ingin Pengguna RAM hanya dapat melakukan operasi kriptografi, Anda dapat memberikan Kebijakan sistem AliyunKMSCryptoUserAccess kepada pengguna tersebut. Untuk informasi selengkapnya, lihat Kelola izin Pengguna RAM. Di panel navigasi kiri Konsol RAM, pilih Identities > Users. Di halaman yang muncul, temukan Pengguna RAM yang diinginkan lalu klik Add Permissions di kolom Actions.

    Catatan

    KMS menyediakan dua cara untuk memberikan izin:

    • Seperti pada contoh sebelumnya, metode ini mengontrol akses dengan mengaitkan izin ke identitas. Untuk informasi selengkapnya, lihat Kontrol akses menggunakan RAM.

    • Kebijakan berbasis resource: Jenis kebijakan ini mencakup kebijakan kunci dan kebijakan kredensial. Kebijakan ini dikaitkan langsung dengan resource dan menentukan aturan akses untuk resource tersebut. Untuk informasi selengkapnya, lihat Kebijakan kunci dan Kebijakan kredensial.

Langkah 5: Dapatkan Sertifikat CA Instans KMS

Di halaman detail instans, dapatkan Sertifikat CA instans tersebut.

Di bagian Basic Information, klik Download di sebelah kanan Instance CA certificate.

Langkah 6: Dapatkan alamat VPC instans

Di halaman detail instans, dapatkan alamat VPC instans tersebut.

Pada bagian Basic Information, temukan dan salin alamat VPC instans.

Langkah 7: Lakukan panggilan klien

  1. Inisialisasi SDK Alibaba Cloud.

    Penting

    Gunakan Alibaba Cloud SDK for Java V2.0. Atur parameter Endpoint ke alamat VPC instans dan konfigurasikan Sertifikat CA instans.

        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Kebocoran kode sumber proyek Anda dapat menyebabkan kebocoran Pasangan Kunci Akses Anda dan mengancam keamanan semua resource dalam akun Anda. Kode berikut hanya untuk referensi.
            // Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti menggunakan STS, untuk autentikasi. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib. Pastikan Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib. Pastikan Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Atur Endpoint ke alamat VPC instans. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Tentukan konten Sertifikat CA instans.
            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 {
            // Kebocoran kode sumber proyek Anda dapat menyebabkan kebocoran Pasangan Kunci Akses Anda dan mengancam keamanan semua resource dalam akun Anda. Kode berikut hanya untuk referensi.
            // Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti menggunakan STS, untuk autentikasi. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib. Pastikan Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib. Pastikan Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Atur Endpoint ke alamat VPC instans. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Tentukan konten Sertifikat CA instans.
            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 {
                // Jika Anda menyalin dan menjalankan kode ini, Anda harus menambahkan kode sendiri untuk mencetak respons API.
                client.encryptWithOptions(encryptRequest, runtime);
            } catch (TeaException error) {
                // Kode berikut hanya untuk demonstrasi. Tangani pengecualian dengan hati-hati. Jangan abaikan pengecualian dalam proyek Anda.
                // pesan error
                System.out.println(error.getMessage());
                // Rekomendasi 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. Tangani pengecualian dengan hati-hati. Jangan abaikan pengecualian dalam proyek Anda.
                // pesan error
                System.out.println(error.getMessage());
                // Rekomendasi 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 {
            // Kebocoran kode sumber proyek Anda dapat menyebabkan kebocoran Pasangan Kunci Akses Anda dan mengancam keamanan semua resource dalam akun Anda. Kode berikut hanya untuk referensi.
            // Kami menyarankan agar Anda menggunakan metode yang lebih aman, seperti menggunakan STS, untuk autentikasi. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib. Pastikan Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi di lingkungan runtime Anda.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib. Pastikan Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi di lingkungan runtime Anda.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Atur Endpoint ke alamat VPC instans. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Tentukan konten Sertifikat CA instans.
            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 {
                // Jika Anda menyalin dan menjalankan kode ini, Anda harus menambahkan kode sendiri untuk mencetak respons API.
                client.decryptWithOptions(decryptRequest, runtime);
            } catch (TeaException error) {
                // Kode berikut hanya untuk demonstrasi. Tangani pengecualian dengan hati-hati. Jangan abaikan pengecualian dalam proyek Anda.
                // pesan error
                System.out.println(error.getMessage());
                // Rekomendasi 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. Tangani pengecualian dengan hati-hati. Jangan abaikan pengecualian dalam proyek Anda.
                // pesan error
                System.out.println(error.getMessage());
                // Rekomendasi pemecahan masalah.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }

Topik terkait