Azure Kubernetes Service'te Gizli Kapsayıcılar için güvenlik ilkesi
Gizli Bilgi İşlem Konsorsiyumu (CCC) tarafından açıklandığı gibi, "Gizli Bilgi İşlem, donanım tabanlı, güvenilir bir Güvenilir Yürütme Ortamı'nda (TEE) hesaplama gerçekleştirerek kullanılan verilerin korunmasıdır." AKS Gizli Kapsayıcıları, kullanımda olan Kubernetes pod verilerini bu podların dışından yetkisiz erişime karşı korumak için tasarlanmıştır. Her pod, kullanımda olan verileri şifreleyerek ve Konak İşletim Sistemi (OS) tarafından verilere erişimi engelleyerek AMD SEV-SNP TEE tarafından korunan bir Yardımcı Program VM'sinde (UVM) yürütülür. Microsoft mühendisleri Gizli Kapsayıcılar (CoCo) ve Kata Kapsayıcıları açık kaynak topluluklarıyla Gizli Kapsayıcıların tasarımı ve uygulanması konusunda işbirliği yaptı.
Güvenlik ilkesine genel bakış
Kata Kapsayıcıları sistem mimarisinin ana bileşenlerinden biri Kata aracısıdır. Gizli Kapsayıcıları uygulamak için Kata Kapsayıcıları kullanılırken aracı donanım tabanlı TEE içinde yürütülür ve bu nedenle podun Güvenilen Bilgi İşlem Tabanı'nın (TCB) bir parçasıdır. Aşağıdaki diyagramda gösterildiği gibi Kata aracısı, TEE dışındaki sistem bileşenlerinin Gizli tabanlı Kubernetes podları oluşturmasına ve yönetmesine olanak sağlayan bir dizi ttrpc API'sini sağlar. Bu diğer bileşenler (örneğin, Kata Dolgusu) podun TCB'sinin bir parçası değildir. Bu nedenle, aracının kendisini hatalı veya kötü amaçlı API çağrılarına karşı koruması gerekir.
AKS Gizli Kapsayıcılarında Kata aracısı API'sinin kendi kendine koruması, gizli podların sahipleri tarafından belirtilen bir güvenlik ilkesi (Kata Aracısı İlkesi olarak da bilinir) kullanılarak uygulanır. İlke belgesi, endüstri standardı Rego ilke dilini kullanarak her poda karşılık gelen kuralları ve verileri içerir. İlkenin Yardımcı Program VM'sinde (UVM) uygulanması, Cloud Native Computing Foundation'ın (CNCF) mezun bir projesi olan Açık İlke Aracısı (OPA) kullanılarak uygulanır.
İlke içeriği
Güvenlik ilkesi, aracı ttrpc API'lerine (ve bu API çağrılarının parametrelerine) yapılan ve Gizli pod'u oluşturmak ve yönetmek için beklenen tüm çağrıları açıklar. Her podun ilke belgesi, Rego dilini kullanan bir metin dosyasıdır. İlke belgesinin üç üst düzey bölümü vardır.
Veri
İlke verileri her poda özgüdür. Şunu içerir:
- Podda oluşturulması beklenen Kapsayıcılar listesi.
- İlke tarafından varsayılan olarak engellenen API'lerin listesi (gizlilik nedeniyle).
Bir poddaki kapsayıcıların her biri için ilke belgesinde yer alan veri örnekleri:
- Görüntü bütünlüğü bilgileri.
- Kapsayıcıda yürütülen komutlar.
- Depolama birimleri ve bağlamaları.
- Yürütme güvenlik bağlamı. Örneğin, kök dosya sistemi salt okunur mu?
- İşlemin yeni ayrıcalıklar kazanmasına izin veriliyor mu?
- Ortam değişkenleri.
- Open Container Initiative (OCI) kapsayıcı çalışma zamanı yapılandırmasındaki diğer alanlar.
Kurallar
Rego biçiminde belirtilen ilke kuralları, Yardımcı Program VM'sinin (UVM) dışından her Kata aracısı API çağrısı için OPA tarafından yürütülür. Aracı, OPA'ya tüm API girişlerini sağlar ve OPA, girişlerin ilke verileriyle tutarlı olup olmadığını denetlemek için kuralları kullanır. İlke kuralları ve veriler API girişlerine izin vermiyorsa, aracı "ilke tarafından engellendi" hata iletisi döndürerek API çağrısını reddeder. Burada bazı kural örnekleri verilmiştir:
- Her kapsayıcı katmanı, Yardımcı Program VM'sine (UVM) salt okunur bir virtio blok cihazı olarak sunulur. Bu blok cihazlarının bütünlüğü, Linux çekirdeğinin dm-verity teknolojisi kullanılarak korunur. dm-verity karma ağacının beklenen kök değeri ilke verilerine eklenir ve çalışma zamanında ilke kuralları tarafından doğrulanır.
- Beklenmeyen bir komut satırı, depolama bağlama, yürütme güvenlik bağlamı veya ortam değişkeni algılandığında kurallar Kapsayıcı oluşturmayı reddeder.
Varsayılan olarak, ilke kuralları tüm podlarda ortaktır. Genpolicy aracı ilke verilerini oluşturur ve her poda özgüdür.
Varsayılan değerler
İlke verilerini ve API girişlerini parametre olarak kullanarak Rego kurallarını değerlendirirken, OPA giriş verilerini temel alan bir değer döndüren en az bir true
kural kümesi bulmaya çalışır. Kurallar döndürmezse true
, OPA aracıya bu API için varsayılan değeri döndürür. İlkedeki varsayılan değerlere örnekler:
default CreateContainerRequest := false
– bir dizi İlke kuralı bu çağrıya açıkça izin vermediği sürece tüm CreateContainer API çağrılarının reddedildiği anlamına gelir.default GuestDetailsRequest := true
– bu API tarafından döndürülen veriler müşteri iş yüklerinin gizliliğine duyarlı olmadığından, TEE dışından GuestDetails API'sine yapılan çağrılara her zaman izin verildiği anlamına gelir.
İlkeyi Kata aracısına gönderme
Tüm AKS Gizli Kapsayıcı Yardımcı Programı VM'leri (UVM), Yardımcı Program VM (UVM) kök dosya sistemine dahil edilen genel ve varsayılan bir ilke kullanılarak başlatılır. Bu nedenle, gerçek müşteri iş yüküyle eşleşen bir İlke çalışma zamanında aracıya sağlanmalıdır. İlke metni, daha önce açıklandığı gibi YAML bildirim dosyanıza eklenir ve Yardımcı Program VM 'sinin (UVM) başlatılması sırasında aracıya bu şekilde sağlanır. İlke ek açıklaması, AKS Gizli Kapsayıcılar sisteminin kubelet, kapsayıcılı ve Kata dolgu bileşenleri aracılığıyla hareket eder. Ardından OPA ile birlikte çalışan aracı, kendi API'lerine yapılan tüm çağrılar için ilkeyi zorlar.
İlke, TCB'nizin parçası olmayan bileşenler kullanılarak sağlanır, bu nedenle başlangıçta bu ilkeye güvenilmez. İlkenin güvenilirliği, aşağıdaki bölümde açıklandığı gibi Uzak Kanıtlama aracılığıyla oluşturulmalıdır.
İlke belgesinde güven oluşturma
Yardımcı Program VM'sini (UVM) oluşturmadan önce Kata dolgusu, İlke belgesinin SHA256 karması hesaplar ve bu karma değeri TEE'ye ekler. Bu eylem, İlke ve Yardımcı Program VM'sinin (UVM) içeriği arasında güçlü bir bağlama oluşturur. Bu TEE alanı daha sonra Yardımcı Program VM'si (UVM) içinde veya dışında yürütülen yazılım tarafından değiştirilemez.
aracı, ilkeyi aldıktan sonra ilke karması sabit TEE alanıyla eşleşir. Aracı, bir karma uyuşmazlığı algılarsa gelen İlkeyi reddeder.
Hassas bilgileri işlemeden önce, iş yüklerinizin herhangi bir Bağlı Tarafa iş yükünün TEE, OS, aracı, OPA ve kök dosya sistemi sürümlerinin beklenen sürümleri kullanılarak yürütüldüğünü kanıtlamak için Uzaktan Kanıtlama adımları gerçekleştirmesi gerekir. Kanıtlama, AMD SEV-SNP donanımından imzalı kanıtlama kanıtı alan Yardımcı Program VM'si (UVM) içinde çalışan bir Kapsayıcıda uygulanır. Kanıtlama kanıtındaki alanlardan biri, daha önce açıklanan ilke karması TEE alanıdır. Bu nedenle Kanıtlama hizmeti, bu alanın değerini pod ilkesinin beklenen karmasıyla karşılaştırarak ilkenin bütünlüğünü doğrulayabilir.
İlke uygulama
Kata aracısı ilkeyi zorunlu tutmaktan sorumludur. Microsoft, Kata ve CoCo topluluğuna, her aracı ttrpc API çağrısı için ilkeyi denetlemekle sorumlu aracı koduna katkıda bulundu. Aracı, API'ye karşılık gelen eylemleri gerçekleştirmeden önce ilke kurallarının ve verilerin çağrıya izin verilip verirseniz veya bunları engelleyip engellemediğini denetlemek için OPA REST API'sini kullanır.