All Products
Search
Document Center

Key Management Service:Dedicated KMS SDK untuk Python

Last Updated:Apr 01, 2026

Dedicated KMS SDK untuk Python memungkinkan Anda memanggil operasi API Dedicated Key Management Service (KMS) dari aplikasi Python. Gunakan SDK ini untuk enkripsi data, dekripsi, pembuatan dan verifikasi tanda tangan digital, serta pengambilan nilai rahasia.

SDK ini mendukung Python 3 dan Python 2:

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Instans Dedicated KMS yang telah dibeli dan terhubung ke kluster hardware security module (HSM), dengan customer master key (CMK) dan application access endpoint (AAP) yang telah dibuat. Untuk petunjuk penyiapan, lihat Hubungkan aplikasi ke instans dedicated KMS edisi Standard.

    File sertifikat CA memiliki format nama PrivateKmsCA_kst-******.pem. File kunci client memiliki format nama ClientKey_******.json.

  • Titik akhir virtual private cloud (VPC) dari instans Dedicated KMS Anda. Titik akhir tersebut harus dapat diakses dari mesin Anda dan ditentukan saat kluster HSM diaktifkan. Untuk mencari titik akhir tersebut, lihat Kueri instans dedicated KMS edisi Standard.

Instal SDK

Python 3:

pip install alibabacloud-dkms-gcs

Python 2:

pip install alibabacloud-dkms-gcs-python2

Inisialisasi client

Setiap pemanggilan API ke Dedicated KMS memerlukan client yang telah dikonfigurasi. Inisialisasi terdiri dari dua bagian: memuat file sertifikat CA untuk verifikasi TLS dan membuat client dengan kredensial instans Anda.

Langkah 1: Konfigurasikan sertifikat CA

Atur runtime_options.verify ke path file sertifikat CA Anda (PrivateKmsCA_kst-******.pem) untuk mengaktifkan verifikasi TLS terhadap instans Dedicated KMS Anda.

# -*- coding: utf-8 -*-
from openapi_util.models import RuntimeOptions

runtime_options = RuntimeOptions()
# Path ke file sertifikat CA Anda (PrivateKmsCA_kst-******.pem)
runtime_options.verify = "<your-ca-certificate-file-path>"

# Untuk menonaktifkan verifikasi SSL (tidak disarankan untuk produksi):
# runtime_options.ignore_ssl = True

Langkah 2: Buat client

Atur config.endpoint ke titik akhir VPC instans Anda tanpa skema https://. Muat konten file kunci client Anda (ClientKey_******.json) ke dalam config.client_key_content.

# -*- coding: utf-8 -*-
from openapi.models import Config
from sdk.client import Client

config = Config()
config.protocol = "https"
# Konten file kunci client Anda (ClientKey_******.json)
config.client_key_content = "<your-client-key-content>"
# Password untuk mendekripsi kunci client
config.password = "<your-password>"
# Titik akhir VPC instans Dedicated KMS Anda, tanpa awalan https://
config.endpoint = "<your-endpoint>"

client = Client(config)

Teruskan parameter client dan runtime_options ke setiap pemanggilan API seperti pada contoh berikut.

Contoh

Semua contoh berikut menggunakan client dan runtime_options yang dibuat selama inisialisasi.

Enkripsi data

Panggil Encrypt untuk mengenkripsi teks biasa menggunakan CMK simetris. Tanggapan mencakup blob ciphertext dan vektor inisialisasi (IV).

Penting

Simpan IV yang dikembalikan oleh Encrypt. Anda harus meneruskannya ke Decrypt untuk memulihkan teks biasa asli.

Untuk contoh lengkapnya, lihat kode sumber Python 3 atau kode sumber Python 2.

# -*- coding: utf-8 -*-
from sdk.models import EncryptRequest

request = EncryptRequest()
# Teks biasa yang akan dienkripsi, diencode sebagai byte UTF-8
request.plaintext = "<your-plaintext>".encode("utf-8")
# ID atau alias CMK simetris
request.key_id = "<your-key-id>"

encrypt_response = client.encrypt_with_options(request, runtime_options)

ciphertext_blob = encrypt_response.ciphertext_blob  # Simpan ini untuk dekripsi
iv = encrypt_response.iv                            # Simpan ini — diperlukan untuk dekripsi
request_id = encrypt_response.request_id

Dekripsi data

Panggil Decrypt untuk memulihkan teks biasa dari ciphertext. Teruskan ID CMK dan IV yang sama seperti yang dikembalikan oleh Encrypt.

Untuk contoh lengkapnya, lihat kode sumber Python 3 atau kode sumber Python 2.

# -*- coding: utf-8 -*-
from sdk.models import DecryptRequest

request = DecryptRequest()
# Ciphertext yang dikembalikan oleh Encrypt
request.ciphertext_blob = "<your-ciphertext-blob>"
# ID atau alias CMK simetris yang digunakan untuk enkripsi
request.key_id = "<your-key-id>"
# Vektor inisialisasi yang dikembalikan oleh Encrypt — harus persis sama
request.iv = "<your-iv>"

decrypt_response = client.decrypt_with_options(request, runtime_options)

plaintext = decrypt_response.plaintext
request_id = decrypt_response.request_id

Tandatangani data

Panggil Sign untuk menghasilkan tanda tangan digital menggunakan CMK asimetris.

Untuk contoh lengkapnya, lihat kode sumber Python 3 atau kode sumber Python 2.

# -*- coding: utf-8 -*-
from sdk.models import SignRequest

request = SignRequest()
# ID atau alias CMK asimetris
request.key_id = "<your-key-id>"
# Pesan mentah yang akan ditandatangani
request.message = "<your-raw-message>"
# Algoritma tanda tangan yang didukung oleh CMK
request.algorithm = "<your-algorithm>"

sign_response = client.sign_with_options(request, runtime_options)

signature = sign_response.signature  # Simpan ini — teruskan ke Verify
request_id = sign_response.request_id

Verifikasi tanda tangan

Panggil Verify untuk memeriksa apakah tanda tangan valid. Teruskan ID CMK, pesan, algoritma, dan tanda tangan yang sama seperti yang digunakan dan dikembalikan oleh Sign.

Untuk contoh lengkapnya, lihat kode sumber Python 3 atau kode sumber Python 2.

# -*- coding: utf-8 -*-
from sdk.models import VerifyRequest

request = VerifyRequest()
# ID atau alias CMK asimetris yang digunakan untuk menandatangani data
request.key_id = "<your-key-id>"
# Pesan asli — harus persis sama dengan yang ditandatangani
request.message = "<your-raw-message>"
# Algoritma tanda tangan — harus sama dengan yang digunakan di Sign
request.algorithm = "<your-algorithm>"
# Nilai tanda tangan yang dikembalikan oleh Sign
request.signature = "<your-signature>"

verify_response = client.verify_with_options(request, runtime_options)

valid = verify_response.valid       # True jika tanda tangan valid
request_id = verify_response.request_id

Ambil nilai rahasia

Panggil GetSecretValue untuk mengambil rahasia yang disimpan di Dedicated KMS.

Penting

GetSecretValue memerlukan SDK versi V0.0.3 atau lebih baru (Python 3) atau V0.0.5 atau lebih baru (Python 2).

Untuk contoh lengkapnya, lihat kode sumber Python 3 atau kode sumber Python 2.

# -*- coding: utf-8 -*-
from sdk.models import GetSecretValueRequest

request = GetSecretValueRequest()
# Nama rahasia yang akan diambil
request.secret_name = "<your-secret-name>"

response = client.get_secret_value_with_options(request, runtime_options)

secret_data = response.secret_data
request_id = response.request_id