Topik ini menjelaskan isu umum ketika sebuah aplikasi menggunakan SDK untuk mengakses instance Key Management Service (KMS).
Daftar isu
-
Terjadi error "no such host" atau "not known" saat Anda mengakses instance KMS
-
Terjadi error "Forbidden.NoPermission" saat Anda mengakses instance KMS melalui titik akses aplikasi
-
Terjadi error "Forbidden.KeyNotFound" saat Anda mengakses atau menggunakan kunci
-
Terjadi error "UnsupportedOperation" saat Anda memanggil operasi API KMS
-
Terjadi error "Incorrect ClientKey password" saat Anda mengakses instance KMS
-
Kode status HTTP 413 dikembalikan saat aplikasi mengakses instance KMS
-
Pusat data on-premises tidak dapat mengakses instance KMS melalui nama domain
-
Terjadi error "QPS Limit Exceeded" saat ACK menyinkronkan secret KMS menggunakan ack-secret-manager
-
ISV pihak ketiga mengalami masalah validasi sertifikat saat mengakses KMS melalui gateway khusus
Error 'no such host' atau 'not known'
Masalah
-
Saat aplikasi menggunakan SDK KMS instance untuk Go untuk mengakses instance KMS, error berikut dikembalikan:
kst-xxx.cryptoservice.kms.aliyuncs.com: no such host. -
Saat aplikasi menggunakan SDK KMS instance untuk Java untuk mengakses instance KMS, error berikut dikembalikan:
kst-xxx.cryptoservice.kms.aliyuncs.com: nodename nor servname provided, or not known.
Penyebab
Instance KMS adalah layanan manajemen kunci dan secret khusus yang hanya dapat diakses dari Virtual Private Cloud (VPC) terkait.
Solusi
-
Jika VPC tempat aplikasi Anda berjalan dan instance KMS berada di wilayah yang sama, asosiasikan VPC tersebut dengan instance KMS. Untuk informasi selengkapnya, lihat Mengakses instance KMS dari beberapa VPC dalam wilayah yang sama.
Untuk memeriksa VPC mana saja yang diasosiasikan dengan instance KMS Anda, lihat Melihat detail instance KMS.
-
Jika VPC tempat aplikasi Anda berjalan dan instance KMS berada di wilayah yang berbeda, bangun koneksi jaringan antara kedua VPC tersebut.
Error 'Forbidden.NoPermission' saat menggunakan AAP
Masalah
Saat Anda mengakses instance KMS, deskripsi error atau pesan exception SDK berisi hal berikut: Forbidden.NoPermission : This operation is forbidden by permission system.
Solusi
Error ini terjadi karena kebijakan izin untuk titik akses aplikasi (AAP) tidak memberikan izin kunci atau secret yang diperlukan di bawah RBAC Permissions dan Accessible Resources. Untuk informasi selengkapnya, lihat Membuat titik akses aplikasi.
Error '...forbidden by permission system' saat mengambil secret
Masalah
Saat Anda mengambil nilai secret, deskripsi error atau pesan exception SDK yang dikembalikan oleh KMS berisi hal berikut: This operation for key-xxxxxx is forbidden by permission system.
Kode berikut menunjukkan contoh pesan exception dari SDK KMS instance untuk Java:
Connected to the target VM, address: '127.0.xxx', transport: 'socket'
Exception in thread "main" com.aliyun.tea.TeaException Create breakpoint : This operation for key-hzz6xxx xxx is forbidden by permission system.
at com.aliyun.dkms.gcs.openapi.Client.doRequest(Client.java:159)
at com.aliyun.dkms.gcs.sdk.Client.getSecretValueWithOptions(Client.java:190)
at com.aliyun.dkms.gcs.sdk.Client.getSecretValue(Client.java:213)
at com.yqn.center.user.config.RdsSecretSampleCode.main(RdsSecretSampleCode.java:209)
Disconnected from the target VM, address: '127.0.xxx', transport: 'socket'
Process finished with exit code 1
Penyebab
Aplikasi Anda tidak memiliki izin untuk menggunakan kunci tersebut dalam proses dekripsi.
Saat Anda membuat secret, Anda memilih kunci dalam instance KMS yang sama untuk enkripsi. Untuk mengambil secret tersebut, aplikasi Anda harus memiliki izin tidak hanya untuk mengakses secret tetapi juga untuk menggunakan kunci terkait dalam proses dekripsi.
Solusi
-
Skenario 1: Mengakses KMS melalui titik akses aplikasi (AAP) menggunakan ClientKey
Edit kebijakan izin AAP untuk memberikan izin aplikasi menggunakan kunci tersebut dalam proses dekripsi.
Login ke Konsol Key Management Service. Di bilah navigasi atas, pilih wilayah. Di panel navigasi kiri, pilih .
-
Klik nama AAP target untuk membuka halaman Details.
-
Di kolom Actions pada kebijakan izin, klik Modify. Konfigurasikan parameter berikut lalu klik Update.
-
RBAC Permissions: Pilih CryptoServiceKeyUser.
-
Accessible Resources: Di bagian Available Resources, pilih kunci lalu klik ikon
. Atau, klik ikon
di sebelah Selected Resources untuk menambahkan kunci dalam format key/key_id. Contoh:key/key-hzz6xxxxxx.
-
-
Skenario 2: Mengakses KMS menggunakan Pasangan Kunci Akses Pengguna RAM atau dengan mengasumsikan Peran RAM
Edit kebijakan izin RAM untuk memberikan izin aplikasi menggunakan kunci tersebut dalam proses dekripsi.
-
Login ke Konsol RAM.
-
Di panel navigasi kiri, pilih Permissions > Policies.
-
Temukan kebijakan izin yang dilampirkan pada Pengguna RAM atau Peran RAM Anda lalu klik nama kebijakan tersebut.
-
Di tab Policy Document, klik Modify Policy Document. Tambahkan skrip berikut ke bagian
Statementlalu klik Continue to edit basic information.{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "acs:kms:${region}:${account}:key/keyId-example" }Untuk informasi selengkapnya tentang kebijakan izin, lihat Kebijakan izin kustom untuk Key Management Service.
-
Error 'Forbidden.KeyNotFound'
Penyebab: Dalam kebanyakan kasus, wilayah, ID kunci, atau alias yang ditentukan dalam permintaan tidak sesuai dengan yang digunakan untuk enkripsi.
Solusi: Pastikan wilayah, ID kunci, atau alias yang digunakan untuk dekripsi sesuai dengan yang digunakan untuk enkripsi.
Error 'UnsupportedOperation'
-
Konfigurasi akses jaringan salah
-
Penyebab: Aplikasi Anda menggunakan SDK standar Alibaba Cloud, bukan SDK khusus KMS, untuk melakukan operasi kriptografi pada kunci dari instance KMS.
-
Solusi:
Login ke Konsol Key Management Service. Di bilah navigasi atas, pilih wilayah. Di panel navigasi kiri, pilih .
-
Di daftar instance, klik ID instance target. Di halaman detail, aktifkan sakelar Public Network Access di bagian RD Multi-Account.
CatatanJika instance KMS dibagikan di antara beberapa Akun Alibaba Cloud, Anda dapat mengatur izin akses jaringan publik untuk setiap akun.
-
Di tab Basic Information pada halaman detail instance, temukan Public Endpoint. Titik akhir akan ditampilkan setelah Anda mengaktifkan akses jaringan publik dan memiliki format serupa dengan
kms.cn-hangzhou.aliyuncs.com.
-
-
Jenis kunci salah
-
Penyebab: Aplikasi Anda menggunakan service key saat memanggil operasi API kriptografi, seperti Encrypt, Decrypt, atau GenerateDataKey, melalui SDK.
-
Solusi: Untuk operasi kriptografi, gunakan customer master key (CMK) secara langsung, bukan service key yang dikelola oleh layanan cloud lain.
-
-
Ketidaksesuaian antara algoritma kunci dan API
-
Skenario 1: Enkripsi, dekripsi, dan pembangkitan kunci data
-
Saat Anda memanggil operasi GenerateDataKey, algoritma kunci customer master key (CMK) adalah algoritma asimetris seperti RSA, ECC.
-
Solusi: Pastikan algoritma kunci CMK adalah algoritma simetris seperti AES, dan penggunaan kunci adalah ENCRYPT/DECRYPT.
-
-
Skenario 2: Penandatanganan dan verifikasi
-
Error 'Unable to find valid certification path'
Kemungkinan penyebab 1: Anda memilih sertifikat CA untuk instance KMS yang salah
Login ke Konsol Key Management Service. Di bilah navigasi atas, pilih wilayah. Di panel navigasi kiri, pilih .
-
Di halaman Instances, klik Download di kolom Instance CA Certificate.
-
Di kotak dialog Instance CA Certificate, pilih ID instance, klik Download, lalu simpan sertifikat di lokasi aman.
Secara default, sertifikat CA yang diunduh diberi nama PrivateKmsCA_kst-******.pem. Anda dapat mengintegrasikan sertifikat tersebut ke dalam SDK untuk memverifikasi keaslian dan validitas sertifikat SSL layanan instance KMS.
Kemungkinan penyebab 2: Versi SDK yang diinstal salah
Kami menyarankan Anda menginstal versi terbaru SDK. Daftar berikut menyediakan alamat repositori open-source SDK:
-
Catatan
Dependensi tea harus versi 1.2.3 atau lebih baru.
-
KMS Instance SDK for Python 3, KMS Instance SDK for Python 2
Tidak dapat meng-resolve nama domain instance KMS
Masalah
Di VPC tempat instance KMS berada atau di VPC terkait, aplikasi tidak dapat mengakses nama domain instance KMS. Misalnya, perintah ping kst-hzz62****.cryptoservice.kms.aliyuncs.com gagal meng-resolve nama domain, dan pesan yang dikembalikan berisi "cannot resolve".
Solusi
Periksa apakah konfigurasi DNS server Anda menggunakan server DNS Alibaba Cloud default: 100.100.2.136 dan 100.100.2.138. Untuk informasi selengkapnya, lihat Apakah saya perlu mengubah konfigurasi DNS server untuk menggunakan PrivateZone?.
Error 'Incorrect ClientKey password'
Masalah
-
Saat Anda menggunakan SDK KMS instance untuk Java untuk mengakses instance KMS, error berikut dikembalikan:
java.io.IOException: keystore password was incorrect. -
Saat Anda menggunakan SDK KMS instance untuk PHP untuk mengakses instance KMS, error berikut dikembalikan:
Could not decrypt the privateKey of clientKey, the password is incorrect,or it is not a valid pkcs12. -
Saat Anda menggunakan SDK KMS instance untuk Go untuk mengakses instance KMS, error berikut dikembalikan:
panic: pkcs12: decryption password incorrect. -
Saat Anda menggunakan SDK KMS instance untuk Python untuk mengakses instance KMS, error berikut dikembalikan:
OpenSSL.crypto.Error: [('PKCS12 routines', '', 'mac verify failure')].
Penyebab
Password ClientKey yang ditentukan salah.
Solusi
-
Periksa apakah password ClientKey memenuhi persyaratan format. Jika tidak, Anda harus membuat ClientKey baru. Untuk informasi selengkapnya, lihat Membuat ClientKey.
Password ClientKey harus terdiri dari 8 hingga 64 karakter dan mengandung minimal dua jenis karakter berikut: angka (0-9), huruf kecil (a-z), huruf besar (A-Z), dan karakter khusus (
~!@#$%^&*?_-). -
Jika Anda membaca password ClientKey dari file, pastikan file tersebut adalah file teks biasa yang hanya berisi satu baris password. File tersebut tidak boleh mengandung karakter tambahan seperti line break atau tab.
Kode status HTTP 413
Badan permintaan, setelah di-encode dengan Protocol Buffers, tidak boleh melebihi 3 MB. Permintaan yang lebih besar dari batas ini akan ditolak dengan kode status HTTP 413.
-
Enkripsi dan dekripsi: Kami menyarankan agar Anda tidak melebihi 6 KB data per operasi untuk kunci simetris atau 1 KB untuk kunci asimetris. Untuk data dalam jumlah besar, gunakan envelope encryption.
-
Penandatanganan dan verifikasi: Jika pesan yang akan ditandatangani berukuran besar, kami menyarankan agar aplikasi Anda menghasilkan digest pesan secara lokal lalu memanggil operasi
SignatauVerifyuntuk menandatangani atau memverifikasi digest tersebut.
Error 'UnknownHostException'
Masalah
Saat aplikasi Anda menggunakan SDK KMS instance untuk Java untuk mengakses instance KMS, error berikut dikembalikan: Caused by: java.net.UnknownHostException: kst-hzz664da459rvtjtd****.cryptoservice.kms.aliyuncs.com.
Solusi
-
Verifikasi bahwa lingkungan aplikasi Anda memiliki konektivitas jaringan ke VPC instance KMS.
Jika VPC aplikasi Anda dan instance KMS berada di wilayah yang sama, asosiasikan VPC tersebut dengan instance KMS. Untuk informasi selengkapnya, lihat Mengakses instance KMS dari beberapa VPC dalam wilayah yang sama. Untuk skenario lain, lihat solusi berikut.
-
Cross-VPC interconnection solutions
Anda dapat menggunakan Cloud Enterprise Network (CEN), VPN Gateway, koneksi peering VPC, atau PrivateLink untuk mengaktifkan komunikasi privat antar-VPC. Untuk informasi tentang fitur dan konfigurasi solusi ini, lihat Interkoneksi VPC.
-
Connecting a VPC to the internet
Anda dapat menggunakan Alamat IP publik statis dari instance ECS, Alamat IP Elastis, Gateway NAT, atau Server Load Balancer (SLB) untuk memungkinkan sumber daya cloud di VPC mengakses atau diakses dari internet. Untuk informasi selengkapnya, lihat Akses jaringan publik.
-
Connecting a VPC to an on-premises data center
Anda dapat menggunakan VPN Gateway, Sirkuit Express Connect, atau Smart Access Gateway untuk menghubungkan pusat data on-premises Anda ke VPC di cloud dan membangun cloud hibrida. Untuk informasi selengkapnya, lihat Menghubungkan VPC ke pusat data on-premises atau cloud lain.
-
-
Pastikan resolusi nama domain VPC KMS dikonfigurasi dengan benar. Untuk informasi tentang pengaturan resolusi DNS, lihat Pengantar resolusi DNS internal.
Apakah manajemen secret KMS didukung di Android?
Tidak, fitur manajemen secret saat ini tidak didukung di Android.
Titik akhir KMS tidak dapat diakses
Isu ini biasanya terjadi karena protokol HTTPS tidak diaktifkan saat Anda menggunakan SDK untuk mengakses KMS.
Untuk memastikan keamanan data, titik akhir KMS hanya mendukung protokol HTTPS. Saat Anda menggunakan SDK untuk mengakses titik akhir KMS, jalankan kode berikut untuk memastikan HTTPS diaktifkan untuk KMS.
req.setProtocol(ProtocolType.HTTPS);
Pusat data on-premises tidak dapat mengakses instance KMS
Masalah
Pusat data on-premises terhubung ke VPC Alibaba Cloud. Tanpa konfigurasi tambahan, pusat data on-premises tidak dapat mengakses instance KMS menggunakan nama domain kms.aliyuncs.com yang dikonfigurasi di PrivateZone.
Solusi
-
Di Express Connect router, izinkan segmen rute 100.100.2.136 dan 100.100.2.138 untuk memastikan pusat data on-premises dapat melakukan ping ke 100.100.2.136 dan 100.100.2.138. Untuk pertanyaan tentang konfigurasi Express Connect router, konsultasikan dengan arsitek solusi jaringan Anda atau merujuk ke dokumen berikut: Interkoneksi jaringan cloud-to-on-premises, Menghubungkan pusat data on-premises ke VPC melalui Sirkuit Express Connect, Menambahkan dan mengelola entri rute, dan Memproses pesan dari pusat data on-premises menggunakan Message Queue for Apache RocketMQ melalui Sirkuit Express Connect.
PentingJika pusat data on-premises Anda tidak terhubung menggunakan Alibaba Cloud CEN atau Sirkuit Express Connect, hubungi penyedia jaringan Anda untuk konfigurasi router.
-
Modifikasi file konfigurasi utama DNS lokal bernama named.conf untuk meneruskan kueri DNS untuk nama domain KMS (kms.aliyuncs.com) ke DNS Alibaba Cloud untuk resolusi. Kode berikut menyediakan contoh konfigurasi:
zone "kms.aliyuncs.com" { type forward; forwarders { 100.100.2.136;100.100.2.138;}; };CatatanKonfigurasi untuk penerusan rute bervariasi berdasarkan perangkat lunak DNS. Untuk informasi selengkapnya, lihat dokumentasi perangkat lunak DNS Anda.
Error 'QPS Limit Exceeded' saat ACK menyinkronkan secret
Penyebab
Menyinkronkan sejumlah besar secret KMS dapat memicu kebijakan throttling layanan, sehingga menyebabkan sinkronisasi gagal.
Solusi
Isu ini telah diperbaiki di versi ack-secret-manager 0.5.2. Lakukan peningkatan ke versi 0.5.2 atau versi yang lebih baru.
Error 'MissingParameter' pada gateway khusus
Masalah
Saat Anda menggunakan SDK Alibaba Cloud untuk memanggil operasi OpenAPI untuk operasi kriptografi melalui gateway khusus, error berikut dikembalikan: MissingParamter AParamter x-kms-acccesskeyid does not exist in http header or body "$430c76cd-******.
Penyebab
Versi gambar instance KMS lebih awal dari 3.0.0. Untuk menggunakan gateway khusus guna memanggil operasi OpenAPI untuk operasi kriptografi, versi gambar instance KMS harus 3.0.0 atau lebih baru.
Solusi
Di halaman Instances, periksa versi gambar di detail instance. Klik Upgrade untuk meningkatkan versi gambar instance KMS. Untuk informasi selengkapnya, lihat Meningkatkan versi gambar instance KMS.
Masalah validasi sertifikat ISV pihak ketiga
Mengaktifkan akses publik memungkinkan ISV pihak ketiga terhubung melalui gateway bersama, yang menggunakan sertifikat yang ditandatangani oleh otoritas sertifikasi (CA) tepercaya.
Login ke Konsol Key Management Service. Di bilah navigasi atas, pilih wilayah. Di panel navigasi kiri, pilih .
-
Di daftar instance, klik ID instance target. Di halaman detail, aktifkan sakelar Public Network Access di bagian RD Multi-Account.
CatatanJika instance KMS dibagikan di antara beberapa Akun Alibaba Cloud, Anda dapat mengatur izin akses jaringan publik untuk setiap akun.
-
Di tab Basic Information pada halaman detail instance, temukan Public Endpoint. Titik akhir akan ditampilkan setelah Anda mengaktifkan akses jaringan publik dan memiliki format serupa dengan
kms.cn-hangzhou.aliyuncs.com.