Terapkan model yang telah dienkripsi dan jalankan inferensi dalam lingkungan komputasi rahasia untuk melindungi kerahasiaan model.
Cara kerja
Inferensi rahasia mencakup tiga langkah:
Enkripsi model: Gunakan Gocryptfs atau Sam untuk mengenkripsi model. Unggah model terenkripsi ke sumber data, seperti Object Storage Service (OSS), agar EAS dapat memasangnya selama penerapan.
Simpan kunci dekripsi: Layanan attestation jarak jauh menggunakan Key Management Service (KMS) sebagai backend penyimpanan kunci dekripsi. Terapkan layanan attestation jarak jauh di ACK Serverless untuk melakukan attestation terhadap lingkungan penerapan dan inferensi.
Langkah 2: Terapkan model terenkripsi menggunakan EAS
Saat penerapan, EAS terhubung ke layanan attestation jarak jauh Trustee untuk memverifikasi lingkungan. Setelah attestation berhasil, EAS mendekripsi, memasang, dan menerapkan model.
Langkah 3: Panggil layanan untuk menjalankan inferensi rahasia
Setelah penerapan selesai, kirim permintaan inferensi ke layanan tersebut.
Langkah 1: Siapkan model terenkripsi
Layanan attestation jarak jauh mengontrol akses ke kunci dekripsi yang dikelola oleh KMS. Lakukan enkripsi model di lingkungan lokal atau lingkungan tepercaya lainnya. Contoh ini menggunakan model Qwen2.5-3B-Instruct.
1. Siapkan model (opsional)
Jika Anda sudah memiliki model, lewati bagian ini dan lanjutkan ke 2. Enkripsi model.
Gunakan ModelScope untuk mengunduh model Qwen2.5-3B-Instruct. Diperlukan Python 3.9 atau versi yang lebih baru.
pip3 install modelscope importlib-metadata
modelscope download --model Qwen/Qwen2.5-3B-InstructModel diunduh ke direktori ~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/.
2. Enkripsi model
Tersedia dua metode enkripsi. Contoh ini menggunakan Sam.
Gocryptfs: Enkripsi AES-256-GCM yang kompatibel dengan standar open source Gocryptfs.
Sam: Format enkripsi model AI tepercaya Alibaba Cloud yang mencegah penggunaan tidak sah dan perubahan lisensi.
Enkripsi Sam
Unduh dan ekstrak paket modul enkripsi Sam RAI_SAM_SDK_2.1.0-20240731.tgz.
# Ekstrak modul enkripsi Sam tar xvf RAI_SAM_SDK_2.1.0-20240731.tgzEnkripsi model.
# Masuk ke direktori enkripsi modul enkripsi Sam cd RAI_SAM_SDK_2.1.0-20240731/tools # Enkripsi model ./do_content_packager.sh <model_directory> <plaintext_key> <key_ID>Parameter:
<model_directory>: Direktori model yang akan dienkripsi. Mendukung jalur relatif atau absolut, misalnya
~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/.<plaintext_key>: Kunci enkripsi kustom, panjang 4 hingga 128 byte, misalnya
0Bn4Q1wwY9fN3P. Unggah kunci ini ke layanan attestation jarak jauh Trustee nanti.<key_ID>: Pengenal kunci kustom, panjang 8 hingga 48 byte, contohnya
LD_Demo_0001.
Setelah enkripsi, model terenkripsi berada di direktori
<key_ID>pada jalur saat ini.
Enkripsi Gocryptfs
Instal Gocryptfs v2.4.0 dengan parameter enkripsi default. Hanya v2.4.0 yang didukung.
Instal via yum
Jika Anda menggunakan Alinux 3 atau AnolisOS 23, instal Gocryptfs dari repositori yum.
Alinux 3
sudo yum install gocryptfs -yAnolisOS 23
sudo yum install anolis-epao-release -y sudo yum install gocryptfs -yUnduh biner
# Unduh paket Gocryptfs yang telah dikompilasi wget https://github.jobcher.com/gh/https://github.com/rfjakob/gocryptfs/releases/download/v2.4.0/gocryptfs_v2.4.0_linux-static_amd64.tar.gz # Ekstrak dan instal tar xf gocryptfs_v2.4.0_linux-static_amd64.tar.gz sudo install -m 0755 ./gocryptfs /usr/local/binBuat file kunci Gocryptfs untuk enkripsi model. Unggah kunci ini ke layanan attestation jarak jauh Trustee nanti.
Contoh ini menggunakan
0Bn4Q1wwY9fN3Psebagai kunci, disimpan dalam filecachefs-password. Di lingkungan produksi, gunakan kunci kuat yang dihasilkan secara acak.cat << EOF > ~/cachefs-password 0Bn4Q1wwY9fN3P EOFGunakan kunci yang telah dibuat untuk mengenkripsi model.
Konfigurasikan jalur model teks biasa.
CatatanTentukan jalur model teks biasa yang telah diunduh. Ganti jalur ini jika Anda menggunakan model berbeda.
PLAINTEXT_MODEL_PATH=~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/Gunakan Gocryptfs untuk mengenkripsi direktori model.
Setelah enkripsi, model disimpan dalam bentuk ciphertext di direktori
./cipher.mkdir -p ~/mount cd ~/mount mkdir -p cipher plain # Instal dependensi runtime Gocryptfs sudo yum install -y fuse # Inisialisasi gocryptfs cat ~/cachefs-password | gocryptfs -init cipher # Pasang ke plain cat ~/cachefs-password | gocryptfs cipher plain # Pindahkan model AI ke ~/mount/plain cp -r ${PLAINTEXT_MODEL_PATH}/. ~/mount/plain
3. Unggah model
Berbagai backend penyimpanan didukung untuk model terenkripsi. EAS memasang model yang telah didekripsi ke instans layanan selama penerapan. Untuk informasi lebih lanjut, lihat Pasang penyimpanan.
Contoh ini menggunakan Object Storage Service (OSS). Ikuti petunjuk di Panduan cepat Konsol untuk membuat bucket dan direktori bernama qwen-encrypted, misalnya oss://examplebucket/qwen-encrypted/. Untuk file model besar, gunakan ossbrowser untuk mengunggah model terenkripsi ke direktori tersebut.
Jika Anda menggunakan tool baris perintah ossutil, gunakan unggah multi-bagian.
Contoh model terenkripsi Sam setelah diunggah ditampilkan di bawah ini. Dengan Gocryptfs, nama file juga dienkripsi dan tampak sebagai teks acak.
4. Siapkan layanan attestation dan unggah kunci
Layanan attestation jarak jauh menyimpan kunci dekripsi dan hanya melepaskannya setelah lingkungan penerapan EAS lulus verifikasi kepercayaan.
Terapkan layanan attestation jarak jauh Trustee yang dikelola sendiri di ACK Serverless. Gunakan KMS untuk menyimpan kunci dekripsi secara aman.
Kluster ACK Serverless tidak perlu berada di wilayah yang sama dengan layanan EAS.
Instans KMS harus berada di wilayah yang sama dengan kluster ACK Serverless tempat layanan attestation jarak jauh Trustee diterapkan.
Buat VPC dan dua vSwitch sebelum membuat instans KMS dan kluster ACK. Untuk informasi lebih lanjut, lihat Buat dan kelola VPC.
Buat instans KMS sebagai backend penyimpanan kunci.
Buka Konsol KMS. Di panel navigasi kiri, pilih . Di tab Software Key Management, buat dan aktifkan instans. Saat mengaktifkan instans, pilih Virtual Private Cloud (VPC) yang sama dengan kluster ACK. Untuk informasi lebih lanjut, lihat Beli dan aktifkan instans KMS.
Aktivasi memerlukan waktu sekitar 10 menit.
Setelah instans diaktifkan, di panel navigasi kiri, pilih . Di halaman Keys, buat customer master key (CMK) untuk instans tersebut. Untuk informasi lebih lanjut, lihat Langkah 1: Buat kunci software.
Di panel navigasi kiri, pilih . Di tab Application Access, buat titik akses aplikasi untuk instans tersebut. Untuk Scope, pilih instans KMS yang telah Anda buat. Untuk detail konfigurasi lainnya, lihat Metode 1: Pembuatan cepat.
Setelah titik akses aplikasi dibuat, browser Anda secara otomatis mengunduh file ClientKey*.zip. File ini berisi:
Credential (ClientKeyContent): Nama file default adalah
clientKey_****.json.Credential Password (ClientKeyPassword): Nama file default adalah
clientKey_****_Password.txt.
Buka halaman dan klik nama instans KMS. Di halaman Details, klik Instance CA Certificate di samping tombol Download untuk mengekspor file sertifikat kunci publik
PrivateKmsCA_***.pem.
Buat kluster ACK Serverless dan instal komponen csi-provisioner.
Buka halaman Create cluster untuk membuat kluster ACK Serverless. Untuk informasi lebih lanjut, lihat Buat kluster. Parameter utama:
Cluster configurations: Konfigurasikan parameter berikut dan klik Next: Component configurations.
Parameter
Deskripsi
VPC
Pilih Use Existing dan centang kotak Configure SNAT for VPC. Ini diperlukan untuk menarik image Trustee.
vSwitch
Pastikan terdapat minimal dua vSwitch di VPC. Jika tidak, ALB yang menghadap publik tidak dapat diekspos.
Component configurations: Konfigurasikan parameter berikut dan klik Next: Confirm configuration.
Parameter
Deskripsi
Service Discovery
Pilih CoreDNS.
Ingress
Pilih ALB Ingress. Untuk sumber instans gerbang cloud-native ALB, pilih New, dan pilih dua vSwitch.
Confirm configuration: Konfirmasi informasi konfigurasi dan ketentuan layanan, lalu klik Create Kubernetes Cluster.
Setelah kluster dibuat, instal komponen csi-provisioner (Managed). Untuk informasi lebih lanjut, lihat Kelola komponen.
Terapkan layanan attestation jarak jauh Trustee di kluster ACK.
Hubungkan ke kluster melalui jaringan publik atau jaringan internal. Untuk informasi lebih lanjut, lihat Hubungkan ke kluster.
Unggah kredensial identitas aplikasi KMS yang telah diunduh (
clientKey_****.json), kata sandi kredensial (clientKey_****_Password.txt), dan sertifikat CA (PrivateKmsCA_***.pem) ke lingkungan yang terhubung ke kluster ACK Serverless Alibaba Cloud. Lalu, jalankan perintah berikut untuk menerapkan layanan attestation jarak jauh Trustee dengan Alibaba Cloud KMS sebagai backend penyimpanan kunci.# Instal plugin helm plugin install https://github.com/AliyunContainerService/helm-acr helm repo add trustee acr://trustee-chart.cn-hangzhou.cr.aliyuncs.com/trustee/trustee helm repo update export DEPLOY_RELEASE_NAME=trustee export DEPLOY_NAMESPACE=default export TRUSTEE_CHART_VERSION=1.7.6 # Tetapkan wilayah kluster ACK, misalnya cn-hangzhou export REGION_ID=cn-hangzhou # Informasi tentang instans KMS yang telah Anda ekspor # Ganti dengan ID instans KMS Anda export KMS_INSTANCE_ID=kst-hzz66a0*******e16pckc # Ganti dengan jalur ke kredensial identitas aplikasi instans KMS Anda export KMS_CLIENT_KEY_FILE=/path/to/clientKey_KAAP.***.json # Ganti dengan jalur ke kata sandi kredensial instans KMS Anda export KMS_PASSWORD_FILE=/path/to/clientKey_KAAP.***_Password.txt # Ganti dengan jalur ke sertifikat CA instans KMS Anda export KMS_CERT_FILE=/path/to/PrivateKmsCA_kst-***.pem helm install ${DEPLOY_RELEASE_NAME} trustee/trustee \ --version ${TRUSTEE_CHART_VERSION} \ --set regionId=${REGION_ID} \ --set kbs.aliyunKms.enabled=true \ --set kbs.aliyunKms.kmsIntanceId=${KMS_INSTANCE_ID} \ --set-file kbs.aliyunKms.clientKey=${KMS_CLIENT_KEY_FILE} \ --set-file kbs.aliyunKms.password=${KMS_PASSWORD_FILE} \ --set-file kbs.aliyunKms.certPem=${KMS_CERT_FILE} \ --namespace ${DEPLOY_NAMESPACE}Catatanhelm plugin install...mungkin memerlukan waktu lama. Jika gagal, jalankanhelm plugin uninstall cm-pushuntuk menghapus plugin, lalu coba lagi.Contoh output:
NAME: trustee LAST DEPLOYED: Tue Feb 25 18:55:33 2025 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneDapatkan titik akhir layanan Trustee.
export TRUSTEE_URL=http://$(kubectl get AlbConfig alb-$DEPLOY_RELEASE_NAME -o jsonpath='{.status.loadBalancer.dnsname}')/api echo ${TRUSTEE_URL}Contoh output:
http://alb-ppams74szbwg2f****.cn-shanghai.alb.aliyuncsslb.com/api.Uji konektivitas layanan Trustee.
cat << EOF | curl -k -X POST ${TRUSTEE_URL}/kbs/v0/auth -H 'Content-Type: application/json' -d @- { "version":"0.4.0", "tee": "tdx", "extra-params": "foo" } EOFKoneksi yang berhasil mengembalikan output serupa:
{"nonce":"PIDUjUxQdBMIXz***********IEysXFfUKgSwk=","extra-params":""}
Konfigurasikan daftar putih jaringan untuk Trustee.
CatatanIni memungkinkan lingkungan penerapan EAS mengakses Trustee.
Buka Konsol ALB, buat grup kebijakan kontrol akses, dan tambahkan alamat IP atau rentang alamat yang perlu mengakses Trustee. Untuk informasi lebih lanjut, lihat Kontrol akses. Tambahkan rentang alamat berikut:
Alamat IP publik VPC tempat layanan EAS diterapkan.
Alamat IP egress klien inferensi.
Jalankan perintah berikut untuk mendapatkan ID instans ALB yang digunakan oleh instans Trustee.
kubectl get ing --namespace ${DEPLOY_NAMESPACE} frontend-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}' | cut -d'.' -f1 | sed 's/[^a-zA-Z0-9-]//g'Output yang diharapkan:
alb-llcdzbw0qivhk0****Di panel navigasi kiri Konsol ALB, pilih . Temukan instans ALB dari langkah sebelumnya di wilayah kluster Anda dan klik ID-nya untuk membuka halaman detail. Di bagian bawah halaman, pada bagian Instance Information, matikan Configuration Read-only Mode.
Beralih ke tab Listener. Di kolom kontrol akses listener target, aktifkan kontrol akses dan atur daftar putih ke grup kebijakan kontrol akses yang telah Anda buat.
Buat rahasia untuk menyimpan kunci dekripsi model.
Trustee menyimpan kunci dekripsi model di KMS. Kunci dilepaskan hanya setelah attestation berhasil.
Buka Konsol KMS. Di panel navigasi kiri, pilih . Di tab Generic Secrets, klik Create Secret. Parameter utama dijelaskan di bawah ini:
Secret name: Nama kustom yang digunakan untuk mengindeks kunci, misalnya
model-decryption-key.Secret value: Masukkan kunci yang digunakan untuk mengenkripsi model. Misalnya, 0Bn4Q1wwY9fN3P. Gunakan kunci aktual Anda.
Encryption key: Pilih customer master key (CMK) yang telah Anda buat.
Login ke UI manajemen Trustee untuk melihat riwayat akses kunci.
Dapatkan alamat UI manajemen antarmuka depan Trustee.
kubectl get AlbConfig alb-$DEPLOY_RELEASE_NAME -o jsonpath='{.status.loadBalancer.dnsname}'Akses alamat tersebut di browser.
Dapatkan kunci privat untuk login ke UI manajemen antarmuka depan Trustee.
kubectl get secret kbs-auth-keypair -o jsonpath="{.data.private\.key}" | base64 -dTempel kunci tersebut ke UI untuk login.
Di Trustee Gateway Management Platform, klik Audit log di panel navigasi kiri. Lalu, klik Resource audit interface untuk melihat riwayat akses kunci dekripsi model.
Langkah 2: Terapkan model terenkripsi
-
Login ke Konsol PAI. Pilih wilayah di bagian atas halaman. Lalu, pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
Di halaman Inference Service, klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
Konfigurasikan parameter yang dijelaskan di bawah ini. Untuk parameter lainnya, lihat Custom Deployment.
Parameter
Deskripsi
Environment Information
Deployment Method
Pilih Image-based Deployment.
Image Configuration
Pilih image. Dalam contoh ini, pilih Alibaba Cloud Image > chat-llm-webui:3.0-vllm.
Storage Mount
Pilih OSS dan konfigurasikan parameter berikut:
Uri: Pilih direktori tempat model terenkripsi disimpan. Contoh:
oss://examplebucket/qwen-encrypted/. Gunakan jalur aktual Anda.Mount Path: Direktori tempat model teks biasa dipasang. Contoh:
/mnt/model.
Command to Run
Contoh:
python webui/webui_server.py --port=8000 --model-path=/mnt/model --backend=vllm. Nilai--model-pathharus sama dengan jalur pemasangan agar model yang telah didekripsi dapat dibaca.Port Number
Atur ke 8000.
Environment Variables
Tambahkan variabel lingkungan untuk attestation Trustee. Dalam contoh ini, ditambahkan variabel lingkungan dengan kunci
eas-testdan nilai1234.Resource Information
Deployment
Dalam contoh ini, tipe instans adalah ml.gu7i.c32m188.1-gu30.
Network Information
VPC
Konfigurasikan VPC dan tetapkan alamat IP publik SNAT untuk VPC. Akses jaringan publik diperlukan agar EAS dapat menjangkau layanan attestation jarak jauh.
vSwitch
Security Group Name
Features
Configure Secure Encryption Environment
Aktifkan Configure Secure Encryption Environment dan konfigurasikan parameter berikut:
Encryption Method: Metode yang digunakan untuk mengenkripsi model. Keduanya Sam dan Gocryptfs didukung. Contoh ini menggunakan Sam.
System Trust Management Service Address: Titik akhir layanan Trustee yang telah diterapkan. Contoh:
http://alb-ppams74szbwg2f****.cn-shanghai.alb.aliyuncsslb.com/trustee.KBS URI of Decryption Key: URI KBS kunci dekripsi model, diformat sebagai
kbs:///default/aliyun/<secret_name>. Ganti<secret_name>dengan nama rahasia yang telah Anda buat.
Contoh konfigurasi JSON:
Setelah mengonfigurasi parameter, klik Deploy.
Ketika Service Status menunjukkan Running, penerapan selesai. Untuk memverifikasi attestation, periksa riwayat akses kunci di UI manajemen Trustee.

Langkah 3: Jalankan inferensi rahasia
1. Lihat titik akhir layanan
Di tab Inference Service, klik nama layanan target untuk membuka halaman Overview. Di area Overview, klik View Endpoint Information.
2. Panggil layanan EAS
Kirim permintaan inferensi cURL ke layanan.
curl <Service_URL> \
-H "Content-type: application/json" \
--data-binary @openai_chat_body.json \
-v \
-H "Connection: close" \
-H "Authorization: <Token>"Parameter:
<Service_URL>: Titik akhir layanan EAS.
<Token>: Token layanan EAS.
openai_chat_body.json: Badan permintaan inferensi. Contoh:
{ "max_new_tokens": 4096, "use_stream_chat": false, "prompt": "What is the capital of Canada?", "system_prompt": "Act like you are a knowledgeable assistant who can provide information on geography and related topics.", "history": [ [ "Can you tell me what's the capital of France?", "The capital of France is Paris." ] ], "temperature": 0.8, "top_k": 10, "top_p": 0.8, "do_sample": true, "use_cache": true }
Contoh tanggapan:
{
"response": "The capital of Canada is Ottawa.",
"history": [
[
"Can you tell me what's the capital of France?",
"The capital of France is Paris."
],
[
"What is the capital of Canada?",
"The capital of Canada is Ottawa."
]
]
}