全部产品
Search
文档中心

Key Management Service:Memulai dengan kunci

更新时间:Jul 06, 2025

Layanan Manajemen Kunci (KMS) memungkinkan Anda membuat dan menggunakan kunci untuk mengenkripsi serta mendekripsi data secara efisien, membantu memastikan keamanan data. Topik ini menjelaskan cara membuat dan menggunakan kunci.

Ikhtisar

KMS menyediakan kunci yang dilindungi perangkat lunak, kunci yang dilindungi perangkat keras, dan kunci default untuk memenuhi kebutuhan bisnis, keamanan, dan kepatuhan Anda. Untuk informasi lebih lanjut, lihat Memahami kunci KMS dan Spesifikasi kunci untuk enkripsi simetris dan asimetris.

  • KMS menyediakan kunci default secara gratis. Anda dapat menggunakan kunci default untuk melakukan enkripsi sisi server di layanan Alibaba Cloud seperti Elastic Compute Service (ECS). Kunci default hanya mendukung dekripsi simetris. Kunci default tidak mendukung enkripsi data sisi klien.

  • Kunci yang dilindungi perangkat lunak mendukung enkripsi sisi server di layanan Alibaba Cloud. Kunci ini dapat digunakan untuk membangun solusi kriptografi lapisan aplikasi dan menyediakan operasi API untuk enkripsi serta dekripsi data sisi klien, penandatanganan, dan verifikasi. Selain itu, kunci yang dilindungi perangkat lunak mendukung kunci simetris, kunci asimetris, dan rotasi kunci guna mengurangi risiko kebocoran kunci.

  • Kunci yang dilindungi perangkat keras mendukung enkripsi sisi server di layanan Alibaba Cloud, dapat digunakan untuk membangun solusi kriptografi lapisan aplikasi, dan menyediakan operasi API untuk enkripsi dan dekripsi data sisi klien, serta penandatanganan dan verifikasi. Kunci yang dilindungi perangkat keras mendukung kunci simetris dan kunci asimetris dan menyediakan lebih banyak spesifikasi kunci dibandingkan kunci yang dilindungi perangkat lunak. Anda dapat menyimpan kunci yang dilindungi perangkat keras dalam modul keamanan perangkat keras (HSM) untuk memenuhi persyaratan kriptografi dan mematuhi Standar Pemrosesan Informasi Federal (FIPS). Kunci yang dilindungi perangkat keras tidak mendukung rotasi kunci.

Enkripsi sisi server di layanan Alibaba Cloud

Kunci dapat digunakan untuk enkripsi sisi server di layanan Alibaba Cloud seperti ECS untuk menyelesaikan risiko keamanan transmisi data teks biasa di sisi server. Jenis kunci yang mendukung fitur ini adalah kunci yang dilindungi perangkat lunak, kunci yang dilindungi perangkat keras, dan kunci default.

Contoh

Dalam contoh ini, kunci default tipe customer master key (CMK) diintegrasikan ke dalam ECS. Untuk informasi lebih lanjut tentang cara mengintegrasikan layanan Alibaba Cloud dengan KMS, lihat Integrasi dengan KMS dan Layanan Alibaba Cloud yang kompatibel dengan KMS.

Langkah 1: Aktifkan kunci default dari tipe CMK

  1. Masuk ke Konsol KMS. Di bilah navigasi atas, pilih wilayah. Di panel navigasi di sebelah kiri, pilih Resource > Keys.

  2. Di halaman Keys, klik Default Keys. Temukan kunci default dari tipe CMK yang ingin Anda aktifkan dan klik Enable di kolom Actions. Atur nama kunci menjadi alias/main.

Catatan

Anda hanya dapat menggunakan kunci default dari tipe CMK untuk enkripsi sisi server di layanan Alibaba Cloud, tetapi tidak untuk enkripsi data sisi klien. Untuk menerapkan enkripsi data sisi klien, buat instance terlebih dahulu, lalu buat kunci yang dilindungi perangkat lunak atau kunci yang dilindungi perangkat keras.

Langkah 2: Integrasikan kunci default KMS ke dalam ECS

Saat membeli instance ECS di halaman pembelian, pilih kunci default bernama alias/main untuk mengaktifkan enkripsi sisi server.

image

Langkah 3: Gunakan KMS untuk mengenkripsi data di ECS untuk transmisi ciphertext

Saat data ditransfer ke ECS, ECS memanggil operasi API KMS untuk mengenkripsi dan mendekripsi data. Anda tidak perlu memproses data secara manual. Dalam kebanyakan kasus, layanan Alibaba Cloud menggunakan enkripsi amplop untuk mengenkripsi data. Untuk informasi lebih lanjut, lihat Gunakan enkripsi amplop.

Solusi kriptografi lapisan aplikasi

Kunci dapat digunakan untuk membangun solusi kriptografi lapisan aplikasi dan menyediakan operasi API untuk enkripsi dan dekripsi data sisi klien, serta penandatanganan dan verifikasi. Jenis kunci yang mendukung fitur ini adalah kunci yang dilindungi perangkat lunak dan kunci yang dilindungi perangkat keras.

Prasyarat

Sebuah instance KMS dari tipe manajemen kunci perangkat keras atau tipe manajemen kunci perangkat lunak telah dibeli dan diaktifkan. Untuk informasi lebih lanjut, lihat Beli dan aktifkan instance KMS.

Contoh

Dalam contoh ini, sebuah kunci dari instance KMS dari tipe manajemen kunci perangkat lunak digunakan untuk mengenkripsi (Encrypt) dan mendekripsi (Decrypt) data lapisan aplikasi. Untuk informasi lebih lanjut, lihat Gunakan kunci untuk mengenkripsi dan mendekripsi data.

Langkah 1: Buat kunci yang dilindungi perangkat lunak

  1. Masuk ke Konsol KMS. Di bilah navigasi atas, pilih wilayah. Di panel navigasi di sebelah kiri, pilih Resource > Keys.

  2. Di tab Keys, klik Create Key dan lengkapi konfigurasi sesuai petunjuk.

  • Instance KMS: Pilih instance KMS yang telah dibeli.

  • Tipe Kunci: Pilih Symmetric Key.

  • Spesifikasi Kunci: Pilih Aliyun_AES_256.

Langkah 2: Tingkatkan versi gambar instance

Contoh ini menjelaskan operasi kriptografi menggunakan gateway khusus untuk memanggil OpenAPI. Versi gambar harus 3.0.0 atau lebih tinggi.

Catatan

Jika instance Anda sudah menggunakan versi gambar 3.0.0 atau lebih tinggi, langkah ini dapat dilewati.

Untuk memeriksa versi gambar, buka halaman detail instance. Jika versi gambar lebih rendah dari 3.0.0, klik Upgrade untuk meningkatkan versi gambar instance Key Management Service (KMS).

Langkah 3: Instal dependensi

  1. Lakukan persiapan.

    Persyaratan Lingkungan

    Java Development Kit (JDK) 8 atau lebih baru telah diunduh dan diinstal.

    Versi Java

    Jalankan perintah java -version di terminal untuk memeriksa versi JDK.

  2. Instal Alibaba Cloud SDK.

    Tambahkan dependensi Maven berikut ke proyek Anda. Kemudian, paket Java dari Alibaba Cloud SDK akan diunduh secara otomatis dari repositori Maven. Pastikan bahwa Alibaba Cloud SDK V2.0 digunakan.

    <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

Alibaba Cloud SDK mendukung berbagai metode autentikasi berbasis Resource Access Management (RAM). Dalam contoh ini, pasangan AccessKey dari pengguna RAM digunakan. Untuk informasi lebih lanjut tentang metode autentikasi, lihat Kelola kredensial akses.

  1. Buat pasangan AccessKey untuk pengguna RAM di Konsol RAM. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.

    Jika pasangan AccessKey sudah dibuat untuk pengguna RAM, lewati langkah ini.image

  2. Berikan izin yang diperlukan kepada pengguna RAM.

    Sebagai contoh, jika pengguna RAM memerlukan izin untuk melakukan operasi kriptografi, Anda dapat melampirkan kebijakan sistem AliyunKMSCryptoUserAccess kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna RAM.image

    Catatan

    KMS menyediakan metode konfigurasi izin berikut:

    • Kebijakan berbasis identitas: Kebijakan pada contoh sebelumnya adalah kebijakan berbasis identitas. Kebijakan berbasis identitas menghubungkan identitas dengan izin terkait untuk mengimplementasikan kontrol akses. Untuk informasi lebih lanjut, lihat Gunakan RAM untuk mengimplementasikan kontrol akses.

    • Kebijakan berbasis sumber daya: Kebijakan berbasis sumber daya mencakup kebijakan kunci dan rahasia. Kebijakan semacam itu langsung dikaitkan dengan sumber daya dan digunakan untuk menentukan aturan akses untuk sumber daya tertentu. Untuk informasi lebih lanjut, lihat Kebijakan kunci dan Kebijakan rahasia.

Langkah 5: Ambil sertifikat otoritas sertifikat (CA) instance

Di halaman detail instance KMS, klik Download di sebelah Instance CA Certificate untuk mengambil sertifikat CA instance.

Langkah 6: Ambil titik akhir Virtual Private Cloud (VPC) instance

Di halaman detail instance KMS, salin nilai parameter Instance VPC Endpoint untuk digunakan saat menginisialisasi klien.

KMS

Langkah 7: Panggil operasi API

  1. Inisialisasi Alibaba Cloud SDK.

    Penting

    Pastikan bahwa Alibaba Cloud SDK V2.0 digunakan. Anda harus mengatur parameter config.endpoint ke titik akhir VPC instance dan mengonfigurasi sertifikat CA instance.

        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Contoh kode berikut hanya untuk referensi.
            // Kami merekomendasikan Anda menggunakan token STS untuk meningkatkan keamanan. Untuk informasi lebih lanjut tentang metode autentikasi, kunjungi https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials?spm=a2c63.p38356.help-menu-262060.d_1_4_1_2.1ad47c23arIlrq.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Masukkan titik akhir VPC instance. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<INSTANCE_VPC_ENDPOINT>";
            // Masukkan konten sertifikat CA instance.
            config.ca = "<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 {
            // Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Contoh kode berikut hanya untuk referensi.
            // Kami merekomendasikan Anda menggunakan token STS untuk meningkatkan keamanan. Untuk informasi lebih lanjut tentang metode autentikasi, kunjungi https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials?spm=a2c63.p38356.help-menu-262060.d_1_4_1_2.1ad47c23arIlrq.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Masukkan titik akhir VPC instance. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<INSTANCE_VPC_ENDPOINT>";
            // Masukkan konten sertifikat CA instance.
            config.ca = "<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("<KEY_ID>")
                    .setPlaintext("<PLAINT_TEXT>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // Jalankan kode sampel untuk mengambil nilai balik operasi API.
                client.encryptWithOptions(encryptRequest, runtime);
            } catch (TeaException error) {
                // Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pengecualian disediakan untuk referensi saja.
                // Pesan kesalahan.
                System.out.println(error.getMessage());
                // URL untuk 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);
                // Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pengecualian disediakan untuk referensi saja.
                // Pesan kesalahan.
                System.out.println(error.getMessage());
                // URL untuk 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 {
            // Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Contoh kode berikut hanya untuk referensi.
            // Kami merekomendasikan Anda menggunakan token STS untuk meningkatkan keamanan. Untuk informasi lebih lanjut tentang metode autentikasi, kunjungi https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials?spm=a2c63.p38356.help-menu-262060.d_1_4_1_2.1ad47c23arIlrq.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Masukkan titik akhir VPC instance. Contoh: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<VPC endpoint of the instance>";
            // Masukkan konten sertifikat CA instance.
            config.ca = "<CA certificate of the instance>";
            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("<CiphertextBlob>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // Jalankan kode sampel untuk mengambil nilai balik operasi API.
                client.decryptWithOptions(decryptRequest, runtime);
            } catch (TeaException error) {
                // Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pengecualian disediakan untuk referensi saja.
                // Pesan kesalahan.
                System.out.println(error.getMessage());
                // URL untuk 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);
                // Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pengecualian disediakan untuk referensi saja.
                // Pesan kesalahan.
                System.out.println(error.getMessage());
                // URL untuk pemecahan masalah.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }

Referensi

  • Untuk informasi lebih lanjut tentang skenario, algoritma, dan spesifikasi kunci, lihat Memahami kunci KMS.

  • Untuk informasi lebih lanjut tentang integrasi SDK, lihat Alibaba Cloud SDK (Java).

  • Jika Anda ingin mengenkripsi dan mendekripsi sejumlah kecil data, Anda dapat menggunakan kunci untuk mengenkripsi dan mendekripsi data tersebut. Untuk informasi lebih lanjut, lihat Gunakan kunci untuk mengenkripsi dan mendekripsi data.

  • Jika Anda ingin mengenkripsi dan mendekripsi sejumlah besar data, Anda dapat menggunakan enkripsi amplop. Untuk informasi lebih lanjut, lihat Gunakan enkripsi amplop.