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:
Python 3: repositori open source
Python 2: repositori open source
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 namaClientKey_******.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-gcsPython 2:
pip install alibabacloud-dkms-gcs-python2Inisialisasi 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 = TrueLangkah 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).
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_idDekripsi 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_idTandatangani 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_idVerifikasi 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_idAmbil nilai rahasia
Panggil GetSecretValue untuk mengambil rahasia yang disimpan di Dedicated KMS.
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