Overzicht van certificaatbeheer in AKS ingeschakeld door Azure Arc
Van toepassing op: AKS op Azure Stack HCI 22H2, AKS op Windows Server
AKS die is ingeschakeld door Azure Arc maakt gebruik van een combinatie van verificatie op basis van certificaten en tokens om de communicatie tussen services (of agents) die verantwoordelijk zijn voor verschillende bewerkingen binnen het platform te beveiligen. Verificatie op basis van certificaten maakt gebruik van een digitaal certificaat om een entiteit (agent, machine, gebruiker of apparaat) te identificeren voordat toegang wordt verleend tot een resource.
Cloudagent
Wanneer u AKS implementeert die is ingeschakeld door Arc, installeert AKS agents die worden gebruikt om verschillende functies in het cluster uit te voeren. Deze agents zijn onder andere:
- Cloudagent: een service die verantwoordelijk is voor de onderliggende platformindeling.
- Knooppuntagent: een service die zich op elk knooppunt bevindt dat het werkelijke werk doet van het maken, verwijderen van virtuele machines, enzovoort.
- KMS-pod (Key Management System): een service die verantwoordelijk is voor sleutelbeheer.
- Andere services: cloudoperator, certificaatbeheerder, enzovoort.
De cloudagentservice in AKS is verantwoordelijk voor het organiseren van cruD-bewerkingen (create, read, update en delete) van infrastructuuronderdelen zoals virtuele machines (VM's), virtuele netwerkinterfaces (VNIC's) en virtuele netwerken (VNET's) in het cluster.
Voor communicatie met de cloudagent moeten certificaten worden ingericht om deze communicatie te beveiligen. Voor elke client moet een identiteit worden gekoppeld, die de RBAC-regels (Role Based Access Control) definieert die aan de client zijn gekoppeld. Elke identiteit bestaat uit twee entiteiten:
- Een token dat wordt gebruikt voor de eerste verificatie, die een certificaat retourneert en
- Een certificaat dat is verkregen via het bovenstaande aanmeldingsproces en wordt gebruikt voor verificatie in communicatie.
Elke entiteit is geldig voor een specifieke periode (de standaardwaarde is 90 dagen), aan het einde waarvan deze verloopt. Voor continue toegang tot de cloudagent moet voor elke client het certificaat worden vernieuwd en het token gedraaid.
Certificaattypen
Er zijn twee typen certificaten die worden gebruikt in AKS die zijn ingeschakeld door Arc:
- CA-certificaat voor cloudagent: het certificaat dat wordt gebruikt voor het ondertekenen/valideren van clientcertificaten. Dit certificaat is 365 dagen (1 jaar) geldig.
- Clientcertificaten: certificaten die zijn uitgegeven door het CA-certificaat van de cloudagent voor clients voor verificatie bij de cloudagent. Deze certificaten zijn meestal 90 dagen geldig.
Microsoft raadt u aan clusters binnen 60 dagen na een nieuwe release bij te werken, niet alleen om ervoor te zorgen dat interne certificaten en tokens up-to-date blijven, maar ook om ervoor te zorgen dat u toegang krijgt tot nieuwe functies, bugfixes en om up-to-date te blijven met kritieke beveiligingspatches. Tijdens deze maandelijkse updates draait het updateproces alle tokens die niet automatisch kunnen worden geroteerd tijdens normale bewerkingen van het cluster. De geldigheid van certificaten en tokens wordt opnieuw ingesteld op de standaardwaarde van 90 dagen vanaf de datum waarop het cluster wordt bijgewerkt.
Communicatie beveiligen met certificaten in AKS ingeschakeld door Arc
Certificaten worden gebruikt voor het bouwen van beveiligde communicatie tussen onderdelen in het cluster. AKS biedt zero-touch, out-of-the-box inrichting en beheer van certificaten voor ingebouwde Kubernetes-onderdelen. In dit artikel leert u hoe u certificaten inricht en beheert in AKS waarvoor Arc is ingeschakeld.
Certificaten en CA's
AKS genereert en gebruikt de volgende certificeringsinstanties (CA's) en certificaten.
Cluster-CA
- De API-server heeft een cluster-CA, die certificaten ondertekent voor communicatie in één richting van de API-server naar
kubelet
. - Elke
kubelet
aanvraag voor certificaatondertekening (CSR) wordt ook gemaakt, die is ondertekend door de cluster-CA, voor communicatie van dekubelet
naar de API-server. - Het sleutelarchief van etcd heeft een certificaat dat is ondertekend door de cluster-CA voor communicatie van etcd naar de API-server.
etcd CA
Het sleutelarchief etcd heeft een etcd-CA die certificaten ondertekent voor verificatie en autorisatie van gegevensreplicatie tussen etcd-replica's in het cluster.
Front Proxy-CA
De Front Proxy-CA beveiligt de communicatie tussen de API-server en de API-extensieserver.
Certificaatinrichting
Certificaatinrichting voor een kubelet
wordt uitgevoerd met behulp van TLS bootstrapping. Gebruik voor alle andere certificaten de op YAML gebaseerde sleutel en het maken van certificaten.
- De certificaten worden opgeslagen in /etc/kubernetes/pki.
- De sleutels zijn RSA 4096, EcdsaCurve: P384
Notitie
De basiscertificaten zijn 10 jaar geldig. Alle andere, niet-basiscertificaten zijn kortlevend en geldig gedurende vier dagen.
Certificaatvernieuwing en -beheer
Niet-basiscertificaten worden automatisch vernieuwd. Alle besturingsvlakcertificaten voor Kubernetes, met uitzondering van de volgende certificaten, worden beheerd:
- Kubelet-servercertificaat
- Kubeconfig-clientcertificaat
Als best practice voor beveiliging moet u eenmalige aanmelding van Active Directory gebruiken voor gebruikersverificatie.
Certificaatintrekking
Certificaatintrekking moet zeldzaam zijn en moet worden uitgevoerd op het moment van certificaatvernieuwing.
Zodra u het serienummer van het certificaat hebt dat u wilt intrekken, gebruikt u de aangepaste Resource van Kubernetes voor het definiëren en behouden van intrekkingsgegevens. Elk intrekkingsobject kan bestaan uit een of meer intrekkingsvermeldingen.
Gebruik een van de volgende opties om een intrekking uit te voeren:
- Serienummer
- Groep
- DNS-naam
- IP-adres
Een notBefore
tijd kan worden opgegeven om alleen certificaten in te trekken die vóór een bepaalde tijdstempel worden uitgegeven. Als er notBefore
geen tijd is opgegeven, worden alle bestaande en toekomstige certificaten die overeenkomen met de intrekking ingetrokken.
Notitie
Het intrekken van kubelet
servercertificaten is momenteel niet beschikbaar.
Als u een serienummer gebruikt wanneer u een intrekking uitvoert, kunt u de Repair-AksHciClusterCerts
PowerShell-opdracht gebruiken, zoals hieronder wordt beschreven, om uw cluster in een werkende status te krijgen. Als u een van de andere velden gebruikt die eerder worden vermeld, moet u een notBefore
tijd opgeven.
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