Share via


Gizli VM'ler için gizli bilgi işlem eklentisi

Azure Kubernetes Service (AKS), Azure gizli bilgi işlem sanal makineleri (VM) için bir eklenti sağlar. eklentisi, confcombir daemon kümesidir. Eklenti yalnızca AKS kümesindeki Intel Software Guard Uzantıları (SGX) gizli VM'leri için çalışır. Bu eklenti AKS kümesi düzeyinde kaydedilir. Eklentiyi kullanarak gizli düğümleri kolayca yönetebilirsiniz. Başlamadan önce AKS kümenizdeki eklentiyi etkinleştirin.

AKS için Intel SGX Cihaz eklentisi

SGX Cihazı eklentisi, Enclave Sayfa Önbelleği (EPC) belleği için Kubernetes cihaz eklentisi arabirimini uygular. Bu eklenti, EPC belleğini Kubernetes'te başka bir kaynak türü haline getirir. Kullanıcılar da diğer kaynaklar gibi EPC'de sınırlar belirtebilir. Cihaz eklentisi, zamanlama işlevinin dışında gizli iş yükü kapsayıcılarına SGX cihaz sürücüsü izinleri atamaya yardımcı olur. EPC bellek tabanlı dağıtımının (kubernetes.azure.com/sgx_epc_mem_in_MiB) örnek bir uygulaması kullanılabilir.

SGX teklif yardımcısı ile PSW

Uzaktan kanıtlama işlemi gerçekleştiren kapanım uygulamalarının bir teklif oluşturması gerekir. Tırnak içinde kimliğin ve uygulamanın durumunun yanı sıra kapanım ana bilgisayar ortamına ilişkin şifreleme kanıtı sağlanır. Teklif oluşturma, SGX Platformu Yazılım Bileşenleri'nin (PSW/DCAP) parçası olan Intel'in belirli güvenilir yazılım bileşenlerine dayanır. Bu PSW, düğüm başına çalışan bir daemon kümesi olarak paketlenmiş. Kapanım uygulamalarından kanıtlama teklifi isterken PSW kullanabilirsiniz. AKS tarafından sağlanan hizmetin kullanılması, PSW ile konaktaki diğer SW bileşenleri arasındaki uyumluluğun daha iyi korunmasına yardımcı olur. Aşağıdaki özellik ayrıntılarını okuyun.

Uzak kanıtlama işlemi gerçekleştiren kapanım uygulamaları için oluşturulan bir tırnak işareti gerekir. Bu alıntı, uygulamanın kimliği, durumu ve çalışan ortamına ilişkin şifreleme kanıtı sağlar. Nesil, Intel'in PSW'sinin parçası olan güvenilir yazılım bileşenleri gerektirir.

Genel Bakış

Dekont

Bu özellik yalnızca özel Intel SGX donanımı kullanan DC'ler için gereklidirv2/DCsv3 VM'leri.

Intel, tırnak oluşturma işlemini çalıştırmak için iki kanıtlama modunu destekler. Hangi türün seçileceği için bkz. [kanıtlama türü farklılıkları] (#attestation-tür farklılıkları).

  • in-proc: enclave uygulama işleminin içinde güvenilen yazılım bileşenlerini barındırıyor. Bu yöntem, yerel kanıtlama gerçekleştirirken yararlıdır (tek bir VM düğümünde 2 kapanım uygulaması arasında)

  • out-of-proc: enclave uygulamasının dışında güvenilen yazılım bileşenlerini barındırıyor. Bu, uzak kanıtlama gerçekleştirirken tercih edilen bir yöntemdir.

SGX uygulamaları, varsayılan olarak proc içi kanıtlama modunu kullanarak Open Enclave SDK'sı kullanılarak oluşturulur. SGX tabanlı uygulamalar, proc'un dışından izin verir ve ek barındırma gerektirir. Bu uygulamalar, uygulama dışında Mimari Kapanım Hizmeti Yöneticisi (AESM) gibi gerekli bileşenleri kullanıma sunar.

Bu özelliğin kullanılması kesinlikle önerilir. Bu özellik, Intel Platform güncelleştirmeleri veya DCAP sürücü güncelleştirmeleri sırasında kapanım uygulamalarınız için çalışma süresini artırır.

Kanıtlama türü farklılıkları

Kapsayıcılı her uygulama için PSW'nin teklif oluşturma bileşenleri için güncelleştirme gerekmez.

Kullanıma uygun olmayan kapsayıcı sahiplerinin kapsayıcıları içindeki güncelleştirmeleri yönetmesi gerekmez. Kapsayıcı sahipleri bunun yerine kapsayıcının dışındaki merkezi hizmeti çağıran sağlanan arabirime güvenir.

Güncel olmayan PSW bileşenleri nedeniyle güncel olmayan PSW bileşenleri nedeniyle hatalarla ilgili bir sorun yoktur. Teklif oluşturma işlemi, güvenilen bilgi işlem tabanının (TCB) parçası olan güvenilir SW bileşenlerini içerir: Quoting Enclave (QE) ve Sağlama Sertifikası Kapanım (PCE). Kanıtlama gereksinimlerini korumak için bu SW bileşenlerinin güncel olması gerekir. Sağlayıcı bu bileşenlere yönelik güncelleştirmeleri yönetir. Müşteriler, kapsayıcıları içindeki güncel olmayan güvenilir SW bileşenleri nedeniyle kanıtlama hatalarıyla hiçbir zaman ilgilenmek zorunda kalmaz.

Proc dışında daha iyi EPC bellek kullanır. Proc kanıtlama modunda, her kapanım uygulaması uzaktan kanıtlama için QE ve PCE kopyalarını oluşturur. Proc dışında kapsayıcı bu kuşatmaları barındırmaz ve kapsayıcı kotasından kapanım belleği kullanmaz.

Çekirdek zorlamasına karşı korumalar da vardır. SGX sürücüsü Linux çekirdeğine akışla aktarıldığında, bir kapanım daha yüksek ayrıcalığa sahiptir. Bu ayrıcalık, kapanım işleminin PCE'yi çağırmasına olanak tanır ve bu da proc modunda çalışan kapanım uygulamasını bozar. Varsayılan olarak kuşatmalar bu izni alamaz. Bu ayrıcalığı bir kapanım uygulamasına vermek için uygulama yükleme işleminde değişiklik yapılması gerekir. Hizmet dışı istekleri işleyen hizmet sağlayıcısı, hizmetin bu ayrıcalıkla yüklendiğinden emin olur.

PSW ve DCAP ile geriye dönük uyumluluğu denetlemeniz gerekmez. Sağlayıcı geriye dönük uyumluluk için PSW'nin teklif oluşturma bileşenlerine yönelik güncelleştirmeleri doğrular. Bu adım, uyumluluk sorunlarını önceden ele alır ve gizli iş yükleri için güncelleştirmeleri dağıtmadan önce bunları giderir.

Gizli iş yükleri için proc kanıtı yetersiz

Proc dışı kanıtlama modeli, gizli iş yükleri için çalışır. Teklif isteği sahibi ve teklif oluşturma ayrı ayrı, ancak aynı fiziksel makinede yürütülür. Teklif oluşturma merkezi bir şekilde gerçekleşir ve tüm varlıklardan QUOTES istekleri sunar. Arabirimi düzgün bir şekilde tanımlayın ve herhangi bir varlığın teklif istemesi için arabirimi bulunabilir hale getirin.

Diagram of quote requestor and quote generation interface.

Soyut model gizli iş yükü senaryoları için geçerlidir. Bu model zaten kullanılabilir olan AESM hizmetini kullanır. AESM kapsayıcılı hale getirilir ve Kubernetes kümesi genelinde bir daemon kümesi olarak dağıtılır. Kubernetes, her aracı düğümünde dağıtılacak bir pod içinde sarmalanmış bir AESM hizmet kapsayıcısının tek bir örneğini garanti eder. AESM hizmet kapsayıcısı sgx-device-plugin QE ve PCE kuşatmalarını başlatmak için EPC belleği sgx-device-plugin isteğinde bulunacağı için yeni SGX Quote daemon kümesinin daemon kümesine bağımlılığı vardır.

Her kapsayıcının oluşturma sırasında ortam değişkenini SGX_AESM_ADDR=1 ayarlayarak kullanıma alınmış teklif oluşturmayı kabul etmesi gerekir. Kapsayıcı, isteği varsayılan Unix etki alanı yuvasına yönlendiren paketini libsgx-quote-exde içermelidir.

Bir uygulama yine de önceki gibi proc içi kanıtlamayı kullanabilir. Ancak, bir uygulama içinde hem in-proc hem de out-of-proc'yi aynı anda kullanamazsınız. Proc dışı altyapı varsayılan olarak kullanılabilir ve kaynakları kullanır.

Dekont

Değiştirilmemiş kapsayıcılarınızı çalıştırmak için Intel SGX sarmalayıcı yazılımı (OSS/ISV) kullanıyorsanız, donanımla kanıtlama etkileşimi genellikle üst düzey uygulamalarınız için işlenir. Lütfen sağlayıcı başına kanıtlama uygulamasına bakın.

Örnek uygulama

Varsayılan olarak, bu hizmet AKS Kümeniz için "confcom" eklentisiyle etkinleştirilmez. Lütfen eklentiyi aşağıdaki komutla güncelleştirin

az aks addon update --addon confcom --name " YourAKSClusterName " --resource-group "YourResourceGroup " --enable-sgxquotehelper

Hizmet açıldıktan sonra, akışı doğrulamak için Open Enclave tabanlı bir uygulama için aşağıdaki docker örneğini kullanın. SGX_AESM_ADDR=1 Docker dosyasında ortam değişkenini ayarlayın. Alternatif olarak, dağıtım dosyasındaki değişkeni de ayarlayabilirsiniz. Docker dosyası ve dağıtım YAML ayrıntıları için bu örneği izleyin.

Dekont

Proc dışı kanıtlamanın düzgün çalışması için Intel'den alınan libsgx-quote-ex paketinin uygulama kapsayıcısında paketlenmesi gerekir. Aşağıdaki yönergelerde ayrıntılar yer alır.

# Refer to Intel_SGX_Installation_Guide_Linux for detail
FROM ubuntu:18.04 as sgx_base
RUN apt-get update && apt-get install -y \
    wget \
    gnupg

# Add the repository to sources, and add the key to the list of
# trusted keys used by the apt to authenticate packages
RUN echo "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu bionic main" | tee /etc/apt/sources.list.d/intel-sgx.list \
    && wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add -
# Add Microsoft repo for az-dcap-client
RUN echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main" | tee /etc/apt/sources.list.d/msprod.list \
    && wget -qO - https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

FROM sgx_base as sgx_sample
RUN apt-get update && apt-get install -y \
    clang-7 \
    libssl-dev \
    gdb \
    libprotobuf10 \
    libsgx-dcap-ql \
    libsgx-quote-ex \
    az-dcap-client \
    open-enclave
WORKDIR /opt/openenclave/share/openenclave/samples/attestation
RUN . /opt/openenclave/share/openenclave/openenclaverc \
    && make build
# this sets the flag for out of proc attestation mode, alternatively you can set this flag on the deployment files
ENV SGX_AESM_ADDR=1 

CMD make run

Bunun yerine, dağıtım YAML dosyasında proc kanıtlama modunu aşağıdaki gibi ayarlayın:

apiVersion: batch/v1
kind: Job
metadata:
  name: sgx-test
spec:
  template:
    spec:
      containers:
      - name: sgxtest
        image: <registry>/<repository>:<version>
        env:
        - name: SGX_AESM_ADDR
          value: 1
        resources:
          limits:
            kubernetes.azure.com/sgx_epc_mem_in_MiB: 10
        volumeMounts:
        - name: var-run-aesmd
          mountPath: /var/run/aesmd
      restartPolicy: "Never"
      volumes:
      - name: var-run-aesmd
        hostPath:
          path: /var/run/aesmd

Dağıtım başarılı olmalı ve uygulamalarınızın SGX Teklif Yardımcısı hizmetini kullanarak uzaktan kanıtlama gerçekleştirmesine izin vermelidir.

Sonraki Adımlar