All Products
Search
Document Center

Platform For AI:Layanan inferensi rahasia

Last Updated:Apr 08, 2026

Terapkan model yang telah dienkripsi dan jalankan inferensi dalam lingkungan komputasi rahasia untuk melindungi kerahasiaan model.

Cara kerja

Inferensi rahasia mencakup tiga langkah:

  1. Siapkan model terenkripsi

    • 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.

  2. 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.

  3. 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)

Catatan

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-Instruct

Model 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

  1. 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.tgz
  2. Enkripsi 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.image

Enkripsi Gocryptfs

  1. 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 -y
    AnolisOS 23
    sudo yum install anolis-epao-release -y
    sudo yum install gocryptfs -y

    Unduh 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/bin
  2. Buat file kunci Gocryptfs untuk enkripsi model. Unggah kunci ini ke layanan attestation jarak jauh Trustee nanti.

    Contoh ini menggunakan 0Bn4Q1wwY9fN3P sebagai kunci, disimpan dalam file cachefs-password. Di lingkungan produksi, gunakan kunci kuat yang dihasilkan secara acak.

    cat << EOF > ~/cachefs-password
    0Bn4Q1wwY9fN3P
    EOF
  3. Gunakan kunci yang telah dibuat untuk mengenkripsi model.

    1. Konfigurasikan jalur model teks biasa.

      Catatan

      Tentukan 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/
    2. 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.

Catatan

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.image

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.

Penting
  • 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.

  1. Buat instans KMS sebagai backend penyimpanan kunci.

    1. Buka Konsol KMS. Di panel navigasi kiri, pilih Resource > Instances. 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.

    2. Setelah instans diaktifkan, di panel navigasi kiri, pilih Resource > Keys. Di halaman Keys, buat customer master key (CMK) untuk instans tersebut. Untuk informasi lebih lanjut, lihat Langkah 1: Buat kunci software.

    3. Di panel navigasi kiri, pilih Application Access > Multi-Cloud Access (formerly AAP). 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.

    4. Buka halaman Resource > Instances dan klik nama instans KMS. Di halaman Details, klik Instance CA Certificate di samping tombol Download untuk mengekspor file sertifikat kunci publik PrivateKmsCA_***.pem.

  2. Buat kluster ACK Serverless dan instal komponen csi-provisioner.

    1. Buka halaman Create cluster untuk membuat kluster ACK Serverless. Untuk informasi lebih lanjut, lihat Buat kluster. Parameter utama:

      1. 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.

      2. 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.

      3. Confirm configuration: Konfirmasi informasi konfigurasi dan ketentuan layanan, lalu klik Create Kubernetes Cluster.

    2. Setelah kluster dibuat, instal komponen csi-provisioner (Managed). Untuk informasi lebih lanjut, lihat Kelola komponen.

  3. Terapkan layanan attestation jarak jauh Trustee di kluster ACK.

    1. Hubungkan ke kluster melalui jaringan publik atau jaringan internal. Untuk informasi lebih lanjut, lihat Hubungkan ke kluster.

    2. 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}
      Catatan

      helm plugin install... mungkin memerlukan waktu lama. Jika gagal, jalankan helm plugin uninstall cm-push untuk 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: None
    3. Dapatkan 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.

    4. 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"
      }
      EOF

      Koneksi yang berhasil mengembalikan output serupa:

      {"nonce":"PIDUjUxQdBMIXz***********IEysXFfUKgSwk=","extra-params":""}
  4. Konfigurasikan daftar putih jaringan untuk Trustee.

    Catatan

    Ini memungkinkan lingkungan penerapan EAS mengakses Trustee.

    1. 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.

    2. 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****
    3. Di panel navigasi kiri Konsol ALB, pilih ALB > Instances. 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.

    4. 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.

  5. 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 Resource > Secrets. 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.

  6. Login ke UI manajemen Trustee untuk melihat riwayat akses kunci.

    1. Dapatkan alamat UI manajemen antarmuka depan Trustee.

      kubectl get AlbConfig alb-$DEPLOY_RELEASE_NAME -o jsonpath='{.status.loadBalancer.dnsname}'

      Akses alamat tersebut di browser.

    2. Dapatkan kunci privat untuk login ke UI manajemen antarmuka depan Trustee.

      kubectl get secret kbs-auth-keypair -o jsonpath="{.data.private\.key}" | base64 -d

      Tempel kunci tersebut ke UI untuk login.

    3. 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

  1. Login ke Konsol PAI. Pilih wilayah di bagian atas halaman. Lalu, pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).

  2. Di halaman Inference Service, klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.

  3. 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-path harus 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-test dan nilai 1234.

    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:

    Konfigurasi JSON

    {
        "cloud": {
            "computing": {
                "instances": [
                    {
                        "type": "ecs.gn7i-c8g1.2xlarge"
                    }
                ]
            },
            "networking": {
                "security_group_id": "sg-2vcbmhs3puagy23k****",
                "vpc_id": "vpc-2vctxcm4qncgriz0j****",
                "vswitch_id": "vsw-2vc0tdylfux849zb7****"
            }
        },
        "confidential": {
            "decryption_key": "kbs:///default/aliyun/model-decryption-key",
            "trustee_endpoint": "http://alb-ppams74szbwg2f****.cn-shanghai.alb.aliyuncsslb.com/api"
        },
        "containers": [
            {
                "env": [
                    {
                        "name": "eas-test",
                        "value": "1234"
                    }
                ],
                "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.5-vllm",
                "port": 8000,
                "script": "python webui/webui_server.py --port=8000 --model-path=/mnt/data/model --backend=vllm"
            }
        ],
        "metadata": {
            "cpu": 8,
            "gpu": 1,
            "instance": 1,
            "memory": 30000,
            "name": "xynnn_eas_test_gpu"
        },
        "storage": [
            {
                "encryption": {
                    "method": "sam"
                },
                "mount_path": "/mnt/data/model",
                "oss": {
                    "path": "oss://examplebucket/qwen-encrypted/"
                },
                "properties": {
                    "resource_type": "model"
                }
            }
        ]
    }
  4. Setelah mengonfigurasi parameter, klik Deploy.

    Ketika Service Status menunjukkan Running, penerapan selesai. Untuk memverifikasi attestation, periksa riwayat akses kunci di UI manajemen Trustee.

    image

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."
        ]
    ]
}