Omówienie zarządzania certyfikatami w usłudze AKS włączonej przez usługę Azure Arc
Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server
Usługa AKS włączona przez usługę Azure Arc używa kombinacji uwierzytelniania opartego na certyfikatach i tokenach w celu zabezpieczenia komunikacji między usługami (lub agentami) odpowiedzialnymi za różne operacje na platformie. Uwierzytelnianie oparte na certyfikatach używa certyfikatu cyfrowego do identyfikowania jednostki (agenta, komputera, użytkownika lub urządzenia) przed udzieleniem dostępu do zasobu.
Agent chmury
Podczas wdrażania usługi AKS włączonej przez usługę Arc usługa AKS instaluje agentów używanych do wykonywania różnych funkcji w klastrze. Ci agenci to m.in.:
- Agent chmury: usługa odpowiedzialna za orkiestrację platformy bazowej.
- Agent węzła: usługa, która znajduje się w każdym węźle, który wykonuje rzeczywistą pracę podczas tworzenia, usuwania maszyny wirtualnej itp.
- Zasobnik systemu zarządzania kluczami (KMS): usługa odpowiedzialna za zarządzanie kluczami.
- Inne usługi: operator chmury, menedżer certyfikatów itp.
Usługa agenta w chmurze w usłudze AKS jest odpowiedzialna za organizowanie operacji tworzenia, odczytywania, aktualizowania i usuwania (CRUD) składników infrastruktury, takich jak Virtual Machines (maszyny wirtualne), interfejsy Virtual Network (VNICs) i sieci wirtualne (VNETs) w klastrze.
Aby komunikować się z agentem chmury, klienci wymagają aprowizacji certyfikatów w celu zabezpieczenia tej komunikacji. Każdy klient wymaga skojarzenia tożsamości, która definiuje reguły Access Control oparte na rolach (RBAC) skojarzone z klientem. Każda tożsamość składa się z dwóch jednostek:
- Token używany do uwierzytelniania początkowego, który zwraca certyfikat i
- Certyfikat uzyskany z powyższego procesu logowania i używany do uwierzytelniania w dowolnej komunikacji.
Każda jednostka jest prawidłowa dla określonego okresu (wartość domyślna to 90 dni), na końcu którego wygasa. W przypadku ciągłego dostępu do agenta w chmurze każdy klient wymaga odnowienia certyfikatu i rotacji tokenu.
Typy certyfikatów
Istnieją dwa typy certyfikatów używanych w usłudze AKS włączone przez usługę Arc:
- Certyfikat urzędu certyfikacji agenta chmury: certyfikat używany do podpisywania/weryfikowania certyfikatów klienta. Ten certyfikat jest ważny przez 365 dni (1 rok).
- Certyfikaty klienta: certyfikaty wystawione przez certyfikat urzędu certyfikacji agenta chmury dla klientów do uwierzytelniania w agencie w chmurze. Te certyfikaty są zwykle ważne przez 90 dni.
Firma Microsoft zaleca aktualizowanie klastrów w ciągu 60 dni od nowej wersji, nie tylko w celu zapewnienia aktualności wewnętrznych certyfikatów i tokenów, ale także upewnienia się, że uzyskujesz dostęp do nowych funkcji, poprawek błędów i aktualizowania krytycznych poprawek zabezpieczeń. Podczas tych comiesięcznych aktualizacji proces aktualizacji obraca wszelkie tokeny, które nie mogą być obracane automatycznie podczas normalnych operacji klastra. Ważność certyfikatu i tokenu jest resetowany do wartości domyślnej 90 dni od daty aktualizacji klastra.
Bezpieczna komunikacja z certyfikatami w usłudze AKS włączona przez usługę Arc
Certyfikaty służą do tworzenia bezpiecznej komunikacji między składnikami klastra. Usługa AKS zapewnia bezdotykową, wbudowaną aprowizację i zarządzanie certyfikatami dla wbudowanych składników platformy Kubernetes. W tym artykule dowiesz się, jak aprowizować certyfikaty i zarządzać nimi w usłudze AKS włączonej przez usługę Arc.
Certyfikaty i urzędy certyfikacji
Usługa AKS generuje i używa następujących urzędów certyfikacji i certyfikatów.
Urząd certyfikacji klastra
- Serwer interfejsu API ma urząd certyfikacji klastra, który podpisuje certyfikaty komunikacji jednokierunkowej z serwera interfejsu API do
kubelet
usługi . - Każdy z nich
kubelet
tworzy również żądanie podpisania certyfikatu (CSR), które jest podpisane przez urząd certyfikacji klastra na potrzeby komunikacji zkubelet
serwera interfejsu API. - Magazyn wartości klucza etcd ma certyfikat podpisany przez urząd certyfikacji klastra na potrzeby komunikacji z itpd do serwera interfejsu API.
etcd urzędu certyfikacji
Magazyn wartości klucza etcd ma itpd urzędu certyfikacji, który podpisuje certyfikaty do uwierzytelniania i autoryzacji replikacji danych między replikami etcd w klastrze.
Front Proxy CA
Urząd certyfikacji serwera proxy frontonu zabezpiecza komunikację między serwerem interfejsu API a serwerem interfejsu API rozszerzenia.
Aprowizowanie certyfikatów
Aprowizowanie certyfikatów dla elementu kubelet
odbywa się przy użyciu uruchamiania protokołu TLS. W przypadku wszystkich innych certyfikatów należy użyć klucza opartego na języku YAML i utworzenia certyfikatu.
- Certyfikaty są przechowywane w /etc/kubernetes/pki.
- Klucze to RSA 4096, EcdsaCurve: P384
Uwaga
Certyfikaty główne są ważne przez 10 lat. Wszystkie inne certyfikaty inne niż główne są krótkotrwałe i ważne przez cztery dni.
Odnawianie certyfikatu i zarządzanie nim
Certyfikaty inne niż główne są automatycznie odnawiane. Wszystkie certyfikaty płaszczyzny sterowania dla platformy Kubernetes z wyjątkiem następujących certyfikatów są zarządzane:
- Certyfikat serwera Kubelet
- Certyfikat klienta kubeconfig
Najlepszym rozwiązaniem w zakresie zabezpieczeń jest użycie logowania jednokrotnego usługi Active Directory do uwierzytelniania użytkowników.
Odwołanie certyfikatu
Odwołanie certyfikatu powinno być rzadkie i powinno być wykonywane w momencie odnawiania certyfikatu.
Po uzyskaniu numeru seryjnego certyfikatu, który chcesz odwołać, użyj niestandardowego zasobu Kubernetes do definiowania i utrwalania informacji o odwołaniu. Każdy obiekt odwołania może składać się z co najmniej jednego wpisu odwołania.
Aby wykonać odwołanie, użyj jednego z następujących elementów:
- Numer seryjny
- Group (Grupa)
- Nazwa DNS
- Adres IP
Można notBefore
określić czas, aby odwołać tylko certyfikaty wystawione przed określonym znacznikiem czasu. Jeśli nie notBefore
określono czasu, wszystkie istniejące i przyszłe certyfikaty pasujące do odwołania zostaną odwołane.
Uwaga
Odwołanie certyfikatów kubelet
serwera jest obecnie niedostępne.
Jeśli używasz numeru seryjnego podczas odwoływania, możesz użyć Repair-AksHciClusterCerts
polecenia programu PowerShell opisanego poniżej, aby uzyskać klaster w stanie roboczym. Jeśli używasz dowolnego z innych pól wymienionych wcześniej, pamiętaj o określeniu notBefore
czasu.
apiVersion: certificates.microsoft.com/v1
kind: RenewRevocation
metadata:
name: my-renew-revocation
namespace: kube-system
spec:
description: My list of renew revocations
revocations:
- description: Revoked certificates by serial number
kind: serialnumber
notBefore: "2020-04-17T17:22:05Z"
serialNumber: 77fdf4b1033b387aaace6ce1c18710c2
- description: Revoked certificates by group
group: system:nodes
kind: Group
- description: Revoked certificates by DNS
dns: kubernetes.default.svc.
kind: DNS
- description: Revoked certificates by DNS Suffix
dns: .cluster.local
kind: DNS
- description: Revoked certificates by IP
ip: 170.63.128.124
kind: IP