Poufne kontenery (wersja zapoznawcza) w usłudze Azure Kubernetes Service (AKS)

Kontenery poufne udostępniają zestaw funkcji i możliwości w celu dalszego zabezpieczania standardowych obciążeń kontenerów w celu osiągnięcia wyższych celów dotyczących bezpieczeństwa danych, prywatności danych i integralności kodu środowiska uruchomieniowego. Usługa Azure Kubernetes Service (AKS) obejmuje poufne kontenery (wersja zapoznawcza) w usłudze AKS.

Poufne kontenery bazują na kontenerach Poufnych Kata i szyfrowaniu sprzętowym w celu szyfrowania pamięci kontenera. Ustanawia nowy poziom poufności danych, uniemożliwiając dane w pamięci podczas obliczeń w postaci zwykłego tekstu w formacie czytelnym. Zaufanie jest uzyskiwane w kontenerze za pośrednictwem zaświadczania sprzętowego, co umożliwia dostęp do zaszyfrowanych danych przez zaufane jednostki.

W połączeniu z piaskownicą zasobnika można uruchamiać poufne obciążenia izolowane na platformie Azure, aby chronić dane i obciążenia. Co sprawia, że kontener jest poufny:

  • Przezroczystość: poufne środowisko kontenera, w którym jest udostępniana wrażliwa aplikacja, można zobaczyć i sprawdzić, czy jest bezpieczna. Wszystkie składniki zaufanej bazy obliczeniowej (TCB) mają być typu open source.
  • Inspekcja: masz możliwość zweryfikowania i sprawdzenia, jaka wersja pakietu środowiska CoCo, w tym system operacyjny gościa systemu Linux i wszystkie składniki są aktualne. Firma Microsoft loguje się do środowiska uruchomieniowego systemu operacyjnego gościa i kontenera w celu weryfikacji za pośrednictwem zaświadczania. Zwalnia również bezpieczny algorytm wyznaczania wartości skrótu (SHA) kompilacji systemu operacyjnego gościa w celu utworzenia scenariusza słyszalności i kontroli ciągu.
  • Pełne zaświadczanie: Wszystkie elementy, które są częścią TEE, są w pełni mierzone przez procesor z możliwością zdalnego weryfikowania. Raport sprzętowy z procesora AMD SEV-SNP odzwierciedla warstwy kontenera i skrót konfiguracji środowiska uruchomieniowego kontenera za pośrednictwem oświadczeń zaświadczania. Aplikacja może pobrać raport sprzętowy lokalnie, w tym raport, który odzwierciedla obraz systemu operacyjnego gościa i środowisko uruchomieniowe kontenera.
  • Integralność kodu: wymuszanie środowiska uruchomieniowego jest zawsze dostępne za pośrednictwem zasad zdefiniowanych przez klienta dla kontenerów i konfiguracji kontenerów, takich jak niezmienne zasady i podpisywanie kontenerów.
  • Izolacja od operatora: Projekty zabezpieczeń, które zakładają najmniejsze uprawnienia i najwyższą ochronę izolacji od wszystkich niezaufanych stron, w tym administratorów klientów/dzierżaw. Obejmuje on wzmocnienie zabezpieczeń istniejącego dostępu do płaszczyzny kontroli kubernetes (kubelet) do poufnych zasobników.

Dzięki innym środkom zabezpieczeń lub mechanizmom kontroli ochrony danych w ramach ogólnej architektury te możliwości pomagają spełnić wymagania dotyczące zgodności z przepisami, branżą lub ładem w zakresie zabezpieczania poufnych informacji.

Ten artykuł ułatwia zrozumienie funkcji Poufne kontenery oraz sposób implementowania i konfigurowania następujących elementów:

  • Wdrażanie lub uaktualnianie klastra usługi AKS przy użyciu interfejsu wiersza polecenia platformy Azure
  • Dodaj adnotację do zasobnika YAML, aby oznaczyć zasobnik jako uruchamiany jako poufny kontener
  • Dodawanie zasad zabezpieczeń do zasobnika YAML
  • Włączanie wymuszania zasad zabezpieczeń
  • Wdrażanie aplikacji w przetwarzaniu poufnym

Obsługiwane scenariusze

Kontenery poufne (wersja zapoznawcza) są odpowiednie dla scenariuszy wdrażania obejmujących poufne dane. Na przykład dane osobowe (PII) lub wszelkie dane z silnymi zabezpieczeniami wymaganymi do zapewnienia zgodności z przepisami. Oto niektóre typowe scenariusze z kontenerami:

  • Uruchamianie analizy danych big data przy użyciu platformy Apache Spark w celu rozpoznawania wzorców oszustw w sektorze finansowym.
  • Uruchamianie własnych modułów uruchamianych w usłudze GitHub w celu bezpiecznego podpisywania kodu w ramach praktyk DevOps ciągłej integracji i ciągłego wdrażania (CI/CD).
  • Maszyny Edukacja wnioskowanie i trenowanie modeli uczenia maszynowego przy użyciu zaszyfrowanego zestawu danych z zaufanego źródła. Odszyfrowuje tylko wewnątrz poufnego środowiska kontenera, aby zachować prywatność.
  • Tworzenie czystych pomieszczeń danych big data na potrzeby dopasowywania identyfikatorów w ramach obliczeń wielostronnych w branżach takich jak handel detaliczny z reklamami cyfrowymi.
  • Tworzenie stref docelowych bez zaufania do poufnego przetwarzania w celu spełnienia przepisów dotyczących prywatności na potrzeby migracji aplikacji do chmury.

Kwestie wymagające rozważenia

Poniżej przedstawiono zagadnienia dotyczące tej wersji zapoznawczej funkcji Poufne kontenery:

  • Wzrost czasu uruchamiania zasobnika w porównaniu z zasobnikami runc i zasobnikami izolowanymi jądrami.
  • Obrazy kontenerów w wersji 1 nie są obsługiwane.
  • Aktualizacje do wpisów tajnych i konfiguracji Mapy nie są odzwierciedlane w gościu.
  • Efemeryczne kontenery i inne metody rozwiązywania problemów, takie jak exec kontener, dane wyjściowe dziennika z kontenerów, a stdio (ReadStreamRequest i WriteStreamRequest) wymagają modyfikacji zasad i ponownego wdrażania.
  • Narzędzie generatora zasad nie obsługuje typów wdrożeń cronjob.
  • Ze względu na to, że pomiary warstwy obrazu kontenera są kodowane w zasadach zabezpieczeń, nie zalecamy używania tagu latest podczas określania kontenerów.
  • Usługi, moduły równoważenia obciążenia i punkty końcoweLices obsługują tylko protokół TCP.
  • Wszystkie kontenery we wszystkich zasobnikach w klastrach muszą być skonfigurowane na .imagePullPolicy: Always
  • Generator zasad obsługuje tylko zasobniki używające adresów IPv4.
  • Nie można zmienić wartości konfiguracji Mapy i wpisów tajnych, jeśli ustawienie jest używane przy użyciu metody zmiennej środowiskowej po wdrożeniu zasobnika. Zasady zabezpieczeń uniemożliwiają jej korzystanie.
  • Dzienniki kończenia zasobników nie są obsługiwane. Podczas gdy zasobniki zapisują dzienniki /dev/termination-log zakończenia do lub do lokalizacji niestandardowej, jeśli określono w manifeście zasobnika, host/kubelet nie może odczytać tych dzienników. Zmiany z gościa do tego pliku nie są odzwierciedlane na hoście.

Omówienie alokacji zasobów

Ważne jest, aby zrozumieć zachowanie alokacji zasobów pamięci i procesora w tej wersji.

  • Procesor CPU: podkładka przypisuje jeden procesor wirtualny do podstawowego systemu operacyjnego wewnątrz zasobnika. Jeśli nie określono żadnego zasobu limits , obciążenia nie mają przypisanych oddzielnych udziałów procesora CPU, procesor wirtualny jest następnie współużytkowany z tym obciążeniem. Jeśli określono limity procesora CPU, udziały procesora CPU są jawnie przydzielane dla obciążeń.
  • Pamięć: Program obsługi Kata-CC używa 2 GB pamięci dla systemu operacyjnego UVM i X MB dodatkowej pamięci, gdzie X jest zasobem limits , jeśli jest określony w manifeście YAML (co powoduje 2 GB maszyny wirtualnej, gdy nie podano limitu, bez niejawnej pamięci dla kontenerów). Program obsługi kata używa pamięci podstawowej 256 MB dla systemu operacyjnego UVM i X MB dodatkowej pamięci, gdy zasób limits jest określony w manifeście YAML. Jeśli limity nie są określone, dodawany jest niejawny limit wynoszący 1792 MB, co powoduje dodanie maszyny wirtualnej o rozmiarze 2 GB i 1792 MB niejawnej pamięci dla kontenerów.

W tej wersji określanie żądań zasobów w manifestach zasobnika nie jest obsługiwane. Kontener Kata ignoruje żądania zasobów z manifestu YAML zasobnika, a w związku z tym kontenerd nie przekazuje żądań do podkładki. Użyj zasobu limit zamiast zasobu requests , aby przydzielić pamięć lub zasoby procesora CPU dla obciążeń lub kontenerów.

Dzięki lokalnemu systemowi plików kontenera wspieranemu przez pamięć maszyny wirtualnej zapisywanie w systemie plików kontenera (w tym rejestrowanie) może wypełnić dostępną pamięć udostępnioną zasobnikowi. Ten warunek może spowodować potencjalne awarie zasobnika.

Następne kroki