EAS menyediakan lingkungan enkripsi yang aman untuk menerapkan dan melakukan inferensi model terenkripsi, memastikan keamanan data dan model sepanjang siklus hidupnya. Solusi ini cocok untuk skenario keamanan tinggi seperti layanan keuangan dan aplikasi perusahaan.
Alur Kerja
Solusi ini mencakup langkah-langkah berikut:
Enkripsi model: Gunakan Gocryptfs atau Sam untuk mengenkripsi model, lalu unggah model terenkripsi tersebut ke Object Storage Service (OSS) agar dapat dipasang di EAS.
Simpan kunci dekripsi: Terapkan layanan remote attestation Trustee di ACK serverless cluster untuk memverifikasi lingkungan penerapan dan inferensi. Key Management Service (KMS) menyimpan kunci dekripsi.
Langkah 2: Terapkan model terenkripsi menggunakan PAI-EAS
Saat menerapkan model terenkripsi, EAS terhubung ke layanan Trustee untuk memverifikasi lingkungan. Setelah verifikasi berhasil, EAS menggunakan kunci KMS untuk mendekripsi dan memasang model sebagai layanan EAS.
Langkah 3: Panggil layanan untuk inferensi aman
Setelah penerapan selesai, hubungkan ke layanan dan kirim permintaan inferensi.
Langkah 1: Siapkan model terenkripsi
Sebelum menerapkan model ke cloud, enkripsi model tersebut dan unggah ke penyimpanan cloud. Kunci dekripsi dikelola oleh KMS dan dikontrol oleh layanan remote attestation. Lakukan enkripsi model di lingkungan lokal atau tepercaya. Contoh ini menggunakan model LLM Qwen2.5-3B-Instruct.
1. Siapkan model (opsional)
Jika Anda memiliki model sendiri, Anda dapat melewati bagian ini dan langsung ke 2. Enkripsi model.
Model Qwen2.5-3B-Instruct memerlukan Python 3.9 atau versi yang lebih baru. Untuk mengunduh model menggunakan tool ModelScope, jalankan perintah berikut di terminal.
pip3 install modelscope importlib-metadata
modelscope download --model Qwen/Qwen2.5-3B-InstructSetelah berhasil, model akan diunduh ke ~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/.
2. Enkripsi model
PAI-EAS mendukung dua metode enkripsi. Contoh ini menggunakan Sam.
Gocryptfs: Mode enkripsi berbasis AES-256-GCM yang sesuai dengan standar open source Gocryptfs.
Sam: Format enkripsi model AI tepercaya Alibaba Cloud yang melindungi kerahasiaan model dan mencegah konten lisensi dimanipulasi atau digunakan secara ilegal.
Opsi 1: Lakukan enkripsi Sam
Unduh paket modul enkripsi Sam RAI_SAM_SDK_2.1.0-20240731.tgz. Kemudian, 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 model yang akan dienkripsi. Anda dapat menentukan jalur relatif atau jalur mutlak, misalnya
~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/.<plaintext_key>: Kunci enkripsi kustom dengan panjang 4 hingga 128 byte. Contoh:
0Bn4Q1wwY9fN3P. Kunci plaintext ini adalah kunci dekripsi model yang harus Anda unggah ke layanan remote attestation Trustee.<key_ID>: Pengenal kunci kustom dengan panjang 8 hingga 48 byte. Contoh:
LD_Demo_0001.
Setelah proses enkripsi selesai, model disimpan dalam bentuk ciphertext di direktori
<key_ID>dalam path saat ini.
Opsi 2: Lakukan enkripsi Gocryptfs
Instal tool Gocryptfs untuk mengenkripsi model. Saat ini, hanya Gocryptfs v2.4.0 yang menggunakan parameter enkripsi default yang didukung. Anda dapat memilih salah satu metode instalasi berikut:
Metode 1: (Direkomendasikan) Instal dari sumber yum
Jika Anda menggunakan sistem operasi Alinux 3 atau AnolisOS 23, Anda dapat menggunakan sumber yum untuk menginstal Gocryptfs.
Alinux 3
sudo yum install gocryptfs -yAnolisOS 23
sudo yum install anolis-epao-release -y sudo yum install gocryptfs -yMetode 2: Unduh langsung file biner yang telah dikompilasi
# 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 paket. tar xf gocryptfs_v2.4.0_linux-static_amd64.tar.gz sudo install -m 0755 ./gocryptfs /usr/local/binBuat file kunci Gocryptfs untuk digunakan sebagai kunci enkripsi model. Anda harus mengunggah kunci ini ke layanan remote attestation Trustee untuk dikelola pada langkah selanjutnya.
Pada topik ini,
0Bn4Q1wwY9fN3Pdigunakan sebagai kunci untuk mengenkripsi model. Konten kunci disimpan dalam filecachefs-password. Anda juga dapat menyesuaikan kunci tersebut. Dalam praktiknya, kami merekomendasikan penggunaan kunci kuat yang dihasilkan secara acak.cat << EOF > ~/cachefs-password 0Bn4Q1wwY9fN3P EOFGunakan kunci yang telah dibuat untuk mengenkripsi model.
Konfigurasikan path model plaintext.
CatatanTentukan path tempat model plaintext yang baru saja diunduh berada. Jika Anda memiliki model lain, ganti path tersebut dengan path aktual model target Anda.
PLAINTEXT_MODEL_PATH=~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/Gunakan Gocryptfs untuk mengenkripsi struktur direktori model.
Setelah proses enkripsi selesai, 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
EAS mendukung berbagai backend penyimpanan untuk model terenkripsi. Model yang didekripsi dipasang ke instans layanan selama penerapan. Untuk informasi lebih lanjut, lihat Pasang penyimpanan.
Contoh ini menggunakan OSS. Buat bucket dan direktori (misalnya, oss://examplebucket/qwen-encrypted/). Lihat Mulai Cepat. Untuk file model besar, gunakan ossbrowser untuk mengunggah.
Jika Anda menggunakan tool baris perintah ossutil, kami merekomendasikan penggunaan multipart upload.
Gambar berikut menunjukkan hasil setelah mengunggah model terenkripsi Sam. Jika Anda menggunakan Gocryptfs, nama file akan tampak sebagai karakter acak terenkripsi.
4. Siapkan layanan remote attestation dan unggah kunci
Kunci dekripsi dikelola oleh layanan remote attestation, yang memverifikasi lingkungan runtime model dan layanan inferensi. Kunci hanya disuntikkan jika lingkungan EAS memenuhi kondisi kepercayaan yang diharapkan.
Terapkan layanan remote attestation Trustee di kluster ACK serverless. Gunakan Alibaba Cloud KMS untuk penyimpanan kunci yang aman.
Wilayah kluster ACK tidak perlu sama dengan wilayah tujuan tempat layanan EAS diterapkan.
Instans Alibaba Cloud KMS harus berada di wilayah yang sama dengan kluster ACK tempat layanan remote attestation Alibaba Cloud Trustee diterapkan.
Sebelum membuat instans KMS dan kluster ACK, Anda harus membuat VPC dan dua vSwitch. Untuk informasi lebih lanjut, lihat Buat dan kelola VPC.
Buat instans Alibaba Cloud KMS sebagai backend penyimpanan kunci.
Buka konsol Key Management Service. Di panel kiri, pilih . Pada tab Software Key Management, buat dan jalankan instance. Saat menjalankan instance, pilih VPC yang sama dengan kluster ACK. Untuk informasi selengkapnya, lihat Beli dan aktifkan instans KMS.
Tunggu sekitar 10 menit hingga instans dimulai.
Setelah instans dimulai, di panel kiri, pilih . Pada halaman Key Management, buat customer master key (CMK) untuk instans tersebut. Untuk informasi lebih lanjut, lihat Langkah 1: Buat kunci yang dilindungi perangkat lunak.
Di panel kiri, pilih . Pada halaman Access Point, buat titik akses aplikasi untuk instans tersebut. Atur Scope ke instans KMS yang telah dibuat. Untuk parameter lainnya, lihat Metode 1: Pembuatan cepat.
Setelah titik akses aplikasi dibuat, browser secara otomatis mengunduh file
ClientKey***.zip. Setelah mengekstrak file .zip tersebut, Anda akan menemukan file-file berikut:Client Key content (ClientKeyContent): Nama file default adalah
clientKey_****.json.Credential password (ClientKeyPassword): Nama file default adalah
clientKey_****_Password.txt.
Pada halaman , klik nama instans KMS. Di bagian Basic Information, klik Download di samping Instance CA Certificate untuk mengekspor file sertifikat kunci publik
PrivateKmsCA_***.pemdari instans KMS.
Anda dapat membuat kluster ACK dan menginstal komponen csi-provisioner.
Buka halaman Create Cluster untuk membuat kluster ACK serverless. Tabel berikut menjelaskan parameter utama. Untuk parameter lainnya, lihat Buat kluster ACK.
Cluster Configurations: Konfigurasikan parameter berikut. Lalu, klik Next: Component Configurations.
Konfigurasi utama
Deskripsi
VPC
Pilih Use Existing dan pilih Configure SNAT For VPC. Jika tidak, Anda tidak dapat menarik image Trustee.
VSwitch
Pastikan setidaknya dua virtual switch telah dibuat di VPC yang ada. Jika tidak, Anda tidak dapat mengekspos ALB Ingress publik.
Component Configurations: Konfigurasikan parameter berikut. Lalu, klik Next: Confirm Configurations.
Konfigurasi utama
Deskripsi
Service Discovery
Pilih CoreDNS.
Ingress
Pilih ALB Ingress. Untuk sumber instans gateway cloud-native ALB, pilih New dan pilih dua virtual switch.
Confirm Configurations: Konfirmasi informasi konfigurasi dan ketentuan layanan. Lalu, klik Create Cluster.
Setelah kluster dibuat, instal komponen csi-provisioner (Managed). Untuk informasi lebih lanjut, lihat Kelola komponen.
Terapkan layanan remote attestation Trustee di kluster ACK.
Hubungkan ke kluster melalui Internet atau jaringan internal. Untuk informasi lebih lanjut, lihat Hubungkan ke kluster.
Unggah kredensial identitas aplikasi instans KMS yang diunduh (
clientKey_****.json), kata sandi kredensial (clientKey_****_Password.txt), dan sertifikat CA (PrivateKmsCA_***.pem) ke lingkungan yang terhubung ke kluster ACK serverless. Jalankan perintah berikut untuk menerapkan layanan remote attestation Trustee dan 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.7.6 # Tetapkan wilayah kluster ACK, misalnya cn-hangzhou. export REGION_ID=cn-hangzhou # Informasi tentang instans KMS yang diekspor. # Ganti dengan ID instans KMS Anda. export KMS_INSTANCE_ID=kst-hzz66a0*******e16pckc # Ganti dengan path ke kredensial identitas aplikasi instans KMS Anda. export KMS_CLIENT_KEY_FILE=/path/to/clientKey_KAAP.***.json # Ganti dengan path ke kata sandi kredensial 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 untuk menginstal plugin (
helm plugin install...) mungkin memerlukan waktu lama untuk dijalankan. Jika instalasi gagal, Anda dapat menjalankan perintahhelm plugin uninstall cm-pushuntuk menghapus plugin tersebut, lalu jalankan kembali perintah instalasi plugin.Contoh berikut menunjukkan output contoh:
NAME: trustee LAST DEPLOYED: Tue Feb 25 18:55:33 2025 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneDi lingkungan yang terhubung ke kluster ACK serverless, jalankan perintah berikut untuk mendapatkan endpoint Trustee.
export TRUSTEE_URL=http://$(kubectl get AlbConfig alb-$DEPLOY_RELEASE_NAME -o jsonpath='{.status.loadBalancer.dnsname}')/api echo ${TRUSTEE_URL}Contoh output adalah
http://alb-ppams74szbwg2f****.cn-shanghai.alb.aliyuncsslb.com/api.Di lingkungan yang terhubung ke kluster ACK serverless, jalankan perintah berikut untuk menguji 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" } EOFJika layanan Trustee berjalan normal, output yang diharapkan adalah sebagai berikut:
{"nonce":"PIDUjUxQdBMIXz***********IEysXFfUKgSwk=","extra-params":""}
Konfigurasikan daftar putih jaringan untuk Trustee.
CatatanKonfigurasi ini memungkinkan lingkungan penerapan model PAI-EAS mengakses layanan remote attestation untuk pemeriksaan keamanan lingkungan.
Buka Konsol Alibaba Cloud Application Load Balancer (ALB), buat grup kebijakan kontrol akses, dan tambahkan alamat IP atau Blok CIDR yang memiliki izin mengakses Trustee sebagai entri IP. Untuk informasi lebih lanjut, lihat Kontrol akses. Blok CIDR yang perlu ditambahkan adalah sebagai berikut:
Alamat IP publik VPC tempat layanan EAS diikat selama penerapan.
Alamat IP egress klien inferensi.
Jalankan perintah berikut untuk mendapatkan ID instans Server Load Balancer (SLB) yang digunakan oleh instans Trustee di kluster.
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 adalah sebagai berikut:
alb-llcdzbw0qivhk0****Di panel navigasi kiri Konsol Alibaba Cloud ALB, pilih . Di wilayah tempat kluster berada, cari instans ALB yang Anda peroleh pada langkah sebelumnya dan klik ID instans untuk membuka halaman detail instans. Di bagian bawah halaman, pada bagian Instance Attributes, klik Disable Configuration Read-only Mode.
Beralih ke tab Listeners. Di kolom kontrol akses listener target, klik **Enable** dan konfigurasikan daftar putih sebagai grup kebijakan kontrol akses yang Anda buat pada langkah sebelumnya.
Buat rahasia untuk menyimpan kunci dekripsi model.
Kunci dekripsi model yang dikelola oleh Trustee disimpan di KMS. Kunci hanya dapat diakses setelah layanan remote attestation memverifikasi lingkungan target.
Buka Konsol Key Management Service. Di panel kiri, pilih . Pada tab Generic Secret, klik Create Secret. Tabel berikut menjelaskan parameter utama.
Secret Name: Nama rahasia kustom yang digunakan untuk mengindeks kunci. Contoh:
model-decryption-key.Set Secret Value: Kunci yang digunakan untuk mengenkripsi model. Contoh: `0Bn4Q1wwY9fN3P`. Gunakan kunci aktual Anda.
Encryption Master Key: Pilih kunci master yang telah Anda buat pada langkah sebelumnya.
Login ke antarmuka manajemen Trustee untuk melihat catatan historis akses kunci.
Dapatkan alamat antarmuka manajemen frontend Trustee.
kubectl get AlbConfig alb-$DEPLOY_RELEASE_NAME -o jsonpath='{.status.loadBalancer.dnsname}'Akses alamat tersebut di browser.
Dapatkan kunci privat untuk login ke antarmuka manajemen frontend Trustee.
kubectl get secret kbs-auth-keypair -o jsonpath="{.data.private\.key}" | base64 -dTempelkan kunci tersebut ke antarmuka frontend untuk menyelesaikan proses login.
Di Trustee Gateway Management Platform, klik Audit Log di panel navigasi kiri. Klik Resource Audit Interface di tengah halaman untuk melihat catatan historis akses kunci dekripsi model.
Langkah 2: Terapkan model terenkripsi menggunakan PAI-EAS
-
Login ke Konsol PAI. Pilih wilayah di bagian atas halaman. Lalu, pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
Pada halaman Elastic Algorithm Service (EAS), klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
Pada halaman Custom Deployment, konfigurasikan parameter kunci berikut. Untuk parameter lainnya, lihat Penyebaran kustom.
Parameter
Deskripsi
Environment Context
Deployment Method
Pilih Image-based Deployment.
Image Configuration
Pilih image. Contoh ini menggunakan Official Image > chat-llm-webui:3.0-vllm.
Storage Mount
Klik tombol +OSS dan konfigurasikan parameter berikut:
Uri: Pilih direktori tempat ciphertext model berada. Contoh:
oss://examplebucket/qwen-encrypted/. Gunakan path aktual Anda.Mount Path: Direktori tempat model plaintext dipasang. Contoh:
/mnt/model.
Run Command
Contoh konfigurasi adalah
python webui/webui_server.py --port=8000 --model-path=/mnt/model --backend=vllm. Perhatikan bahwa nilai--model-pathharus sama dengan mount path agar dapat membaca model yang didekripsi.Port Number
Untuk solusi ini, atur nomor port menjadi 8000.
Environment Variable
Anda dapat menambahkan variabel lingkungan untuk verifikasi oleh layanan remote attestation Trustee. Untuk solusi ini, tambahkan variabel lingkungan dengan kunci
eas-testdan nilai123.Resource Deployment
Deployment Resources
Untuk solusi ini, pilih spesifikasi resource ml.gu7i.c32m188.1-gu30.
VPC
VPC
Konfigurasikan VPC dan atur IP egress jaringan publik SNAT untuk VPC agar EAS dapat mengakses jaringan publik. Hal ini memungkinkan EAS mengakses layanan remote attestation dan melakukan pemeriksaan keamanan lingkungan.
vSwitch
Security Group Name
Service Features
Configure Secure Encryption Environment
Aktifkan sakelar Configure Secure Encryption Environment dan konfigurasikan parameter berikut:
File Encryption Method: Metode yang digunakan untuk mengenkripsi model. Didukung Sam dan Gocryptfs. Untuk solusi ini, pilih Sam.
System Trust Management Service Address: Alamat layanan Trustee yang telah diterapkan. Contoh:
http://alb-ppams74szbwg2f****.cn-shanghai.alb.aliyuncsslb.com/trustee.KBS URI of Decryption Key: URI KBS dari kunci dekripsi model. Formatnya adalah
kbs:///default/aliyun/<secret_name_of_the_key>. Ganti<secret_name_of_the_key>dengan nama rahasia yang telah Anda buat pada langkah sebelumnya.
Contoh berikut menunjukkan konfigurasi JSON akhir:
Setelah mengonfigurasi parameter, klik Deploy.
Ketika Status Layanan berubah menjadi Berjalan, layanan telah berhasil diterapkan. Anda kemudian dapat login ke antarmuka manajemen Trustee untuk melihat catatan historis akses kunci. Hal ini memungkinkan Anda memeriksa apakah layanan remote attestation Trustee telah memverifikasi lingkungan penerapan model dan melihat informasi detail tentang lingkungan eksekusi.
Langkah 3: Panggil layanan untuk inferensi aman
1. Lihat endpoint layanan
Pada tab Inference Service, klik nama layanan target untuk membuka halaman Overview. Di area Basic Information, klik View Endpoint Information.
2. Panggil layanan EAS
Jalankan perintah cURL berikut untuk mengirim permintaan inferensi:
curl <Service_URL> \
-H "Content-type: application/json" \
--data-binary @openai_chat_body.json \
-v \
-H "Connection: close" \
-H "Authorization: <Token>"Tabel berikut menjelaskan parameter-parameter tersebut.
<Service_URL>: Endpoint layanan EAS.
<Token>: Token layanan EAS.
openai_chat_body.json adalah permintaan inferensi asli. Kode berikut menunjukkan contoh isi permintaan:
{ "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 berikut menunjukkan respons contoh:
{
"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."
]
]
}