Di Elastic Algorithm Service (EAS), Anda dapat menyiapkan lingkungan enkripsi aman untuk menerapkan dan menjalankan inferensi model terenkripsi secara aman. Lingkungan ini menyediakan perlindungan berlapis bagi data dan model sepanjang siklus hidupnya, cocok untuk skenario yang melibatkan data sensitif seperti layanan keuangan, pemerintahan, dan aplikasi perusahaan. Topik ini menjelaskan cara menyiapkan model terenkripsi serta melakukan penerapan dan inferensi terenkripsi.
Ikhtisar
Ikuti langkah-langkah berikut untuk penerapan dan inferensi terenkripsi:
Langkah 1: Siapkan model terenkripsi
Enkripsi model: Gunakan Gocryptfs atau Sam untuk mengenkripsi model, lalu unggah model terenkripsi tersebut ke sumber data (misalnya Object Storage Service (OSS)) guna pemasangan dan penerapan selanjutnya di EAS.
Simpan kunci dekripsi: Saat ini, EAS mendukung layanan attestation jarak jauh Trustee buatan sendiri yang dihosting oleh Alibaba Cloud. Terapkan layanan attestation jarak jauh Trustee di Alibaba Cloud Container Service for Kubernetes (ACK) Serverless untuk memverifikasi lingkungan penerapan dan inferensi, serta gunakan Key Management Service (KMS) sebagai backend penyimpanan kunci dekripsi.
Langkah 2: Terapkan model terenkripsi di PAI-EAS
Saat menerapkan model terenkripsi menggunakan PAI-EAS, sistem secara otomatis terhubung ke layanan attestation jarak jauh Trustee untuk memverifikasi lingkungan penerapan. Setelah verifikasi berhasil, sistem menggunakan kunci di KMS untuk mendekripsi dan memasang model, lalu menerapkannya sebagai layanan EAS.
Langkah 3: Panggil layanan untuk inferensi aman
Setelah penerapan selesai, pengguna dapat mengakses layanan inferensi untuk mengirim permintaan inferensi.
Langkah 1: Siapkan model terenkripsi
Sebelum menerapkan model, Anda perlu mengenkripsi model tersebut dan mengunggahnya ke penyimpanan cloud. Kunci untuk mendekripsi model akan dihosting oleh KMS dan dikendalikan oleh layanan attestation jarak jauh. Lakukan operasi enkripsi model di lingkungan lokal atau tepercaya. Solusi ini menunjukkan cara menerapkan Qwen2.5-3B-Instruct sebagai contoh.
1. Siapkan model (opsional)
Jika Anda sudah memiliki model sendiri, lewati bagian ini dan langsung menuju 2. Enkripsi model.
Jalankan perintah berikut di terminal menggunakan tool ModelScope untuk mengunduh Qwen2.5-3B-Instruct (memerlukan Python 3.9 atau lebih tinggi).
pip3 install modelscope importlib-metadata
modelscope download --model Qwen/Qwen2.5-3B-InstructPerintah tersebut akan mengunduh model ke ~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/.
2. Enkripsi model
PAI-EAS mendukung metode enkripsi berikut. Solusi ini menggunakan Sam sebagai contoh.
Gocryptfs: Mode enkripsi berbasis AES256-GCM yang sesuai dengan standar open-source Gocryptfs.
Sam: Format enkripsi model AI tepercaya dari Alibaba Cloud yang melindungi kerahasiaan model dan mencegah konten lisensi dimanipulasi atau digunakan secara ilegal.
Opsi 1: Enkripsi Sam
Unduh modul enkripsi Sam RAI_SAM_SDK_2.1.0-20240731.tgz, lalu jalankan perintah berikut untuk mengekstrak paket tersebut.
# Ekstrak modul enkripsi Sam tar xvf RAI_SAM_SDK_2.1.0-20240731.tgzGunakan modul enkripsi Sam untuk mengenkripsi 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>Keterangan:
<model_directory>: Direktori tempat model yang akan dienkripsi berada. Anda dapat menggunakan jalur relatif atau absolut, misalnya
~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/.<plaintext_key>: Kunci enkripsi kustom dengan panjang 4 hingga 128 byte, misalnya
0Bn4Q1wwY9fN3P. Plaintext key ini adalah kunci dekripsi model yang akan diunggah ke Trustee.<key_ID>: Identifier kunci kustom dengan panjang 8 hingga 48 byte, misalnya
LD_Demo_0001.
Setelah enkripsi, model akan disimpan dalam bentuk terenkripsi di direktori
<key_ID>pada path saat ini.
Opsi 2: Enkripsi Gocryptfs
Instal tool Gocryptfs (saat ini hanya mendukung versi Gocryptfs v2.4.0 dengan parameter default). Pilih salah satu metode instalasi berikut:
Metode 1: (Direkomendasikan) Instal dari sumber yum
Jika Anda menggunakan sistem operasi Alinux3 atau AnolisOS 23, Anda dapat langsung menginstal gocryptfs menggunakan sumber yum.
Alinux 3
sudo yum install gocryptfs -yAnolisOS 23
sudo yum install anolis-epao-release -y sudo yum install gocryptfs -yMetode 2: Unduh binary prakompilasi langsung
# Unduh paket Gocryptfs prakompilasi 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 sebagai kunci untuk enkripsi model. Pada langkah selanjutnya, Anda perlu mengunggah kunci ini ke Trustee.
Pada solusi ini,
0Bn4Q1wwY9fN3Padalah kunci untuk enkripsi, dan akan disimpan dalam filecachefs-password. Anda juga dapat menyesuaikan kunci tersebut. Namun dalam praktiknya, gunakan kunci kuat yang dihasilkan secara acak.cat << EOF > ~/cachefs-password 0Bn4Q1wwY9fN3P EOFGunakan kunci tersebut untuk mengenkripsi model.
Konfigurasikan path model plaintext.
CatatanKonfigurasikan path model plaintext yang baru saja diunduh, atau ganti dengan path model Anda sendiri.
PLAINTEXT_MODEL_PATH=~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/Gunakan Gocryptfs untuk mengenkripsi struktur direktori model.
Setelah enkripsi, model akan disimpan dalam bentuk terenkripsi 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
EAS mendukung beberapa layanan penyimpanan untuk model terenkripsi dan dapat memuat model yang didekripsi ke instans layanan melalui pemasangan selama penerapan. Untuk informasi lebih lanjut, lihat Mount storage.
Sebagai contoh, ambil Object Storage Service (OSS). Rujuk ke Quick start for the console untuk membuat ruang penyimpanan (Bucket) dan direktori bernama qwen-encrypted (misalnya, oss://examplebucket/qwen-encrypted/). Karena ukuran file model cukup besar, disarankan untuk menggunakan ossbrowser untuk mengunggah model terenkripsi ke direktori ini.
Jika Anda perlu menggunakan tool baris perintah ossutil, multipart upload direkomendasikan.
Tangkapan layar berikut menunjukkan model yang diunggah menggunakan enkripsi Sam. Jika Anda menggunakan enkripsi Gocryptfs, nama file akan dienkripsi menjadi teks acak.
4. Siapkan layanan attestation jarak jauh dan unggah kunci
Host kunci di layanan attestation jarak jauh. Layanan attestation jarak jauh adalah layanan verifikasi yang dikelola pengguna dan bertanggung jawab untuk memverifikasi lingkungan eksekusi model dan layanan inferensi. Ketika keandalan lingkungan penerapan EAS memenuhi kondisi yang diharapkan, kunci akan disuntikkan untuk mendekripsi dan memasang model.
Saat ini, EAS mendukung layanan attestation jarak jauh Trustee buatan sendiri yang dihosting oleh Alibaba Cloud. Anda dapat menggunakan ACK Serverless untuk menerapkan Trustee guna memverifikasi lingkungan penerapan dan inferensi model. Sementara itu, Anda dapat menggunakan KMS untuk memberikan perlindungan profesional bagi kunci dekripsi model. Lakukan langkah-langkah berikut:
Wilayah kluster ACK tidak harus sama dengan wilayah penerapan layanan EAS.
Instans KMS harus berada di wilayah yang sama dengan kluster ACK tempat Trustee diterapkan.
Sebelum membuat instans KMS dan kluster ACK, buat virtual private network (VPC) dan dua vSwitch. Untuk informasi lebih lanjut, lihat Create and manage a VPC.
Pertama, buat instans KMS untuk menyimpan kunci.
Buka Konsol KMS, pilih di panel navigasi kiri. Lalu, buat dan mulai instans pada tab Software Key Management. Saat memulai instans, pilih VPC yang sama dengan kluster ACK. Untuk informasi lebih lanjut, lihat Purchase and enable a KMS instance.
Tunggu sekitar 10 menit hingga instans dimulai.
Setelah instans dimulai, pilih di panel navigasi kiri. Lalu, buat customer master key untuk instans tersebut di halaman Keys. Untuk informasi lebih lanjut, lihat Step 1: Create a software-protected key.
Pilih di panel navigasi kiri. Lalu, buat application access point (AAP) untuk instans tersebut di halaman AAPs. Atur Scope ke instans KMS yang telah dibuat. Untuk informasi lebih lanjut, lihat Mode 1: Quick creation.
Setelah AAP dibuat, browser Anda secara otomatis mengunduh file ClientKey***.zip. File zip ini berisi file-file berikut setelah diekstrak:
ClientKeyContent: Nama file default adalah
clientKey_****.json.ClientKeyPassword: Nama file default adalah
clientKey_****_Password.txt.
Buka , klik nama instans KMS. Lalu, di bagian Basic Information, klik Download di samping Instance CA Certificate untuk mengekspor file sertifikat kunci publik
PrivateKmsCA_***.pemdari instans KMS.
Buat kluster layanan ACK dan instal komponen csi-provisioner.
Buka halaman Create Cluster untuk membuat kluster ACK Serverless. Perhatikan parameter berikut. Untuk pengaturan parameter lainnya, lihat Create an ACK Serverless cluster.
Cluster Configurations: Konfigurasikan parameter berikut lalu klik Next: Component Configurations.
Key item
Description
VPC
Pilih Use Existing dan pilih Configure SNAT For VPC. Jika tidak, Anda tidak dapat menarik citra Trustee.
vSwitch
Pastikan setidaknya dua vSwitch telah dibuat di VPC yang ada. Jika tidak, Anda tidak dapat mengekspos ALB publik.
Component Configurations: Konfigurasikan parameter berikut lalu klik Next: Confirm.
Key item
Description
Service Discovery
Pilih CoreNDS.
Ingress
Pilih ALB Ingress. Untuk Gateway Source, pilih New dan pilih dua vSwitch.
Confirm: Konfirmasi informasi konfigurasi dan ketentuan layanan, lalu klik Create Cluster.
Setelah kluster dibuat, instal komponen csi-provisioner (Managed). Untuk informasi lebih lanjut, lihat Manage components.
Terapkan Trustee di kluster ACK.
Pertama, hubungkan ke kluster melalui Internet atau jaringan internal. Untuk informasi lebih lanjut, lihat Connect to a cluster.
Unggah konten kunci client yang diunduh (
clientKey_****.json), kata sandi kunci (clientKey_****_Password.txt), dan sertifikat CA (PrivateKmsCA_***.pem) ke lingkungan yang terhubung ke kluster ACK Serverless, lalu jalankan perintah berikut untuk menerapkan Trustee menggunakan 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.0.0 # Atur informasi wilayah kluster ACK, misalnya cn-hangzhou export REGION_ID=cn-hangzhou # Informasi instans KMS yang diekspor sebelumnya # Ganti dengan ID instans KMS Anda export KMS_INSTANCE_ID=kst-hzz66a0*******e16pckc # Ganti dengan path ke secret identitas aplikasi instans KMS Anda export KMS_CLIENT_KEY_FILE=/path/to/clientKey_KAAP.***.json # Ganti dengan path ke token keamanan secret instans KMS Anda export KMS_PASSWORD_FILE=/path/to/clientKey_KAAP.***_Password.txt # Ganti dengan path 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}CatatanPerintah pertama (
helm plugin install...) mungkin memerlukan waktu lama untuk dieksekusi. Jika instalasi gagal, Anda dapat terlebih dahulu menguninstal plugin dengan menjalankanhelm plugin uninstall cm-push, lalu jalankan kembali perintah instalasi plugin.Contoh output:
NAME: trustee LAST DEPLOYED: Tue Feb 25 18:55:33 2025 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneJalankan perintah berikut di lingkungan yang terhubung ke kluster ACK Serverless untuk mendapatkan alamat akses Trustee.
export TRUSTEE_URL=http://$(kubectl get AlbConfig alb -o jsonpath='{.status.loadBalancer.dnsname}')/${DEPLOY_RELEASE_NAME} echo ${TRUSTEE_URL}Contoh output:
http://alb-ppams74szbwg2f****.cn-shanghai.alb.aliyuncsslb.com/trustee.Jalankan perintah berikut di lingkungan yang terhubung ke kluster ACK Serverless untuk menguji konektivitas layanan Trustee.
cat << EOF | curl -k -X POST ${TRUSTEE_URL}/kbs/v0/auth -H 'Content-Type: application/json' -d @- { "version":"0.1.0", "tee": "tdx", "extra-params": "foo" } EOFJika Trustee berjalan normal, output yang diharapkan adalah:
{"nonce":"PIDUjUxQdBMIXz***********IEysXFfUKgSwk=","extra-params":""}
Konfigurasikan daftar putih jaringan Trustee.
CatatanTujuannya adalah untuk mengizinkan lingkungan penerapan PAI-EAS mengakses layanan attestation jarak jauh secara aktif guna pemeriksaan keamanan.
Buka Konsol ALB, buat access control list (ACL), lalu tambahkan alamat/segmen alamat dengan izin akses Trustee sebagai entri IP. Untuk informasi lebih lanjut, lihat Access control. Segmen alamat yang perlu ditambahkan:
Alamat IP publik VPC yang terikat dengan layanan EAS.
Alamat IP egress klien inferensi.
Jalankan perintah berikut untuk mendapatkan ID instans ALB yang digunakan oleh instans trustee di kluster:
kubectl get ing --namespace ${DEPLOY_NAMESPACE} kbs-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 . Di wilayah tempat kluster berada, cari instans ALB yang diperoleh pada langkah sebelumnya. Klik ID instans untuk membuka halaman detail instans. Lalu, di bagian bawah halaman pada bagian Instance Information, klik Disable Configuration Read-only Mode.
Beralih ke tab Listeners, klik Enable di kolom Access Control pada instans listener target, lalu konfigurasikan daftar putih sebagai ACL yang dibuat pada langkah sebelumnya.
Buat rahasia untuk menyimpan kunci dekripsi model.
Kunci dekripsi model yang dihosting oleh trustee disimpan di KMS. Kunci tersebut hanya dapat diakses setelah layanan attestation jarak jauh memverifikasi lingkungan tujuan.
Buka Konsol KMS, pilih di panel navigasi kiri. Lalu, pilih Generic Secrets dan klik Create a secret. Perhatikan parameter berikut:
Secret Name: Nama rahasia 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.CMK: Pilih kunci master yang dibuat pada langkah sebelumnya.
Langkah 2: Terapkan model terenkripsi di PAI-EAS
Login ke Konsol PAI. Pilih wilayah di bagian atas halaman. Lalu, pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
Di halaman Elastic Algorithm Service (EAS), klik Deploy Service. Lalu, klik Custom Deployment di bagian Custom Model Deployment.
Di halaman Custom Deployment, konfigurasikan parameter kunci berikut. Untuk informasi parameter lebih lanjut, lihat Custom deployment.
Parameter
Description
Environment Information
Deployment Method
Pilih Image-based Deployment.
Image Configuration
Pilih citra. Dalam solusi ini, pilih Alibaba Cloud Image > chat-llm-webui:3.0-vllm.
Mount storage
Klik + OSS dan konfigurasikan parameter berikut:
Uri: Pilih direktori tempat model terenkripsi berada. Misalnya,
oss://examplebucket/qwen-encrypted/. Gunakan path aktual Anda.Mount Path: Konfigurasikan direktori tempat model plaintext dipasang, misalnya
/mnt/model.
Command
Contoh konfigurasi:
python webui/webui_server.py --port=8000 --model-path=/mnt/model --backend=vllm. Perhatikan bahwa--model-pathharus sama dengan mount path agar dapat membaca model yang didekripsi.Port Number
Dalam solusi ini, atur ke 8000.
Environment Variables
Anda dapat menambahkan variabel lingkungan untuk verifikasi Trustee. Dalam solusi ini, atur: kunci
eas-test: nilai123.Resource Information
Deployment Resources
Dalam solusi ini, gunakan ml.gu7i.c32m188.1-gu30.
VPC
VPC
Konfigurasikan VPC dan atur IP egress jaringan publik SNAT untuk VPC agar EAS dapat mengakses jaringan publik, sehingga dapat mengakses layanan attestation jarak jauh dan melakukan pemeriksaan keamanan lingkungan.
vSwitch
Security Group Name
Features
Configure Secure Encryption Environment
Aktifkan sakelar Configure Secure Encryption Environment dan konfigurasikan parameter berikut:
Encryption Method: Metode enkripsi yang digunakan untuk mengenkripsi model. Mendukung Sam dan Gocryptfs. Solusi ini memilih Sam.
System Trust Management Service Address: Alamat layanan Trustee yang telah diterapkan. Misalnya,
http://alb-ppams74szbwg2f****.cn-shanghai.alb.aliyuncsslb.com/trustee.KBS URI of Decryption Key: URI KBS dari kunci dekripsi model yang digunakan, dalam format
kbs:///default/aliyun/<secret_name_of_the_key>. Ganti<secret_name_of_the_key>dengan nama rahasia yang dibuat pada langkah sebelumnya.
Contoh konfigurasi JSON akhir adalah sebagai berikut:
Klik Deploy.
Ketika Status Layanan menjadi Berjalan, layanan telah berhasil diterapkan. Pada titik ini, buka halaman Clusters, klik nama kluster, lalu di halaman Pods, ikuti panduan operasi pada tangkapan layar di bawah untuk melihat log kontainer
attestation-service-*. Log tersebut akan menunjukkan apakah Trustee telah memverifikasi lingkungan penerapan model dan menampilkan informasi detail lingkungan eksekusi.
Langkah 3: Panggil layanan untuk inferensi aman
1. Lihat titik akhir layanan
Di halaman Model Online Service (EAS), klik Invocation Method di kolom Service Type layanan target untuk mendapatkan titik akhir layanan dan token.
2. Panggil layanan
Anda dapat menjalankan perintah cURL berikut untuk mengirim permintaan inferensi ke layanan.
curl <Service_URL> \
-H "Content-type: application/json" \
--data-binary @openai_chat_body.json \
-v \
-H "Connection: close" \
-H "Authorization: <Token>"Di mana:
<Service_URL>: Titik akhir layanan EAS.
<Token>: Token layanan EAS.
openai_chat_body.json adalah permintaan inferensi asli. Contoh isi permintaan adalah sebagai berikut:
{ "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 }
Tanggapan berikut dikembalikan untuk contoh di atas:
{
"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."
]
]
}