Panoramica della gestione dei certificati nel servizio Azure Kubernetes abilitata da Azure Arc
Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server
Il servizio Azure Kubernetes abilitato da Azure Arc usa una combinazione di autenticazione basata su certificati e token per proteggere le comunicazioni tra servizi (o agenti) responsabili di diverse operazioni all'interno della piattaforma. L'autenticazione basata su certificati usa un certificato digitale per identificare un'entità (agente, computer, utente o dispositivo) prima di concedere l'accesso a una risorsa.
Agente cloud
Quando si distribuisce il servizio Azure Kubernetes abilitato da Arc, il servizio Azure Kubernetes installa gli agenti usati per eseguire varie funzioni all'interno del cluster. Questi agenti includono:
- Agente cloud: un servizio responsabile dell'orchestrazione della piattaforma sottostante.
- Agente del nodo: un servizio che risiede in ogni nodo che esegue il lavoro effettivo della creazione di macchine virtuali, eliminazione e così via.
- Pod del sistema di gestione delle chiavi (KMS): un servizio responsabile della gestione delle chiavi.
- Altri servizi: operatore cloud, gestione certificati e così via.
Il servizio agente cloud nel servizio Azure Kubernetes è responsabile dell'orchestrazione delle operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD) dei componenti dell'infrastruttura, ad esempio Macchine virtuali (VM), interfacce Rete virtuale (VNIC) e reti virtuali (VNET) nel cluster.
Per comunicare con l'agente cloud, i client richiedono il provisioning dei certificati per proteggere questa comunicazione. Ogni client richiede l'associazione di un'identità, che definisce le regole RBAC (Role Based Controllo di accesso) associate al client. Ogni identità è costituita da due entità:
- Token utilizzato per l'autenticazione iniziale, che restituisce un certificato e
- Certificato, ottenuto dal processo di accesso precedente e usato per l'autenticazione in qualsiasi comunicazione.
Ogni entità è valida per un periodo specifico (il valore predefinito è 90 giorni), alla fine del quale scade. Per l'accesso continuo all'agente cloud, ogni client richiede il rinnovo del certificato e il token ruotato.
Tipi di certificato
Esistono due tipi di certificati usati nel servizio Azure Kubernetes abilitati da Arc:
- Certificato CA dell'agente cloud: il certificato usato per firmare/convalidare i certificati client. Questo certificato è valido per 365 giorni (1 anno).
- Certificati client: certificati rilasciati dal certificato CA dell'agente cloud per i client per l'autenticazione all'agente cloud. Questi certificati sono in genere validi per 90 giorni.
Microsoft consiglia di aggiornare i cluster entro 60 giorni da una nuova versione, non solo per garantire che i certificati e i token interni siano mantenuti aggiornati, ma anche per assicurarsi di accedere a nuove funzionalità, correzioni di bug e rimanere aggiornati con le patch di sicurezza critiche. Durante questi aggiornamenti mensili, il processo di aggiornamento ruota tutti i token che non possono essere ruotati automaticamente durante le normali operazioni del cluster. La validità del certificato e del token viene reimpostata nei 90 giorni predefiniti dalla data di aggiornamento del cluster.
Proteggere la comunicazione con i certificati nel servizio Azure Kubernetes abilitato da Arc
I certificati vengono usati per creare comunicazioni sicure tra componenti del cluster. Il servizio Azure Kubernetes offre il provisioning senza tocco, out-of-the-box e la gestione dei certificati per i componenti Kubernetes predefiniti. In questo articolo si apprenderà come effettuare il provisioning e gestire i certificati nel servizio Azure Kubernetes abilitato da Arc.
Certificati e CA
Il servizio Azure Kubernetes genera e usa i certificati e le autorità di certificazione seguenti.
Cluster CA
- Il server API dispone di una CA cluster che firma i certificati per la comunicazione unidirezionale dal server API a
kubelet
. - Ogni
kubelet
oggetto crea anche una richiesta di firma del certificato (CSR), firmata dalla CA cluster, per la comunicazione dalkubelet
server API. - L'archivio valori chiave etcd ha un certificato firmato dalla CA cluster per la comunicazione da etcd al server API.
CA etcd
L'archivio valori chiave etcd ha una CA etcd che firma i certificati per autenticare e autorizzare la replica dei dati tra repliche etcd nel cluster.
CA proxy front-end
La CA front proxy protegge la comunicazione tra il server API e il server API di estensione.
Provisioning dei certificati
Il provisioning dei certificati per un kubelet
oggetto viene eseguito usando il bootstrapping TLS. Per tutti gli altri certificati, usare la chiave e la creazione di certificati basati su YAML.
- I certificati vengono archiviati in /etc/kubernetes/pki.
- Le chiavi sono RSA 4096, EcdsaCurve: P384
Nota
I certificati radice sono validi per 10 anni. Tutti gli altri certificati non radice sono di breve durata e validi per quattro giorni.
Rinnovo e gestione dei certificati
I certificati non radice vengono rinnovati automaticamente. Tutti i certificati del piano di controllo per Kubernetes, ad eccezione dei certificati seguenti sono gestiti:
- Certificato del server Kubelet
- Certificato client Kubeconfig
Come procedura consigliata per la sicurezza, è consigliabile usare l'accesso Single Sign-In di Active Directory per l'autenticazione utente.
Revoca del certificato
La revoca dei certificati deve essere rara e deve essere eseguita al momento del rinnovo del certificato.
Dopo aver ottenuto il numero di serie del certificato da revocare, usare La risorsa personalizzata Kubernetes per definire e rendere persistenti le informazioni di revoca. Ogni oggetto revoche può essere costituito da una o più voci di revoca.
Per eseguire una revoca, usare uno dei seguenti elementi:
- Numero di serie
- Raggruppare
- Nome DNS
- Indirizzo IP
È possibile specificare un'ora notBefore
per revocare solo i certificati rilasciati prima di un determinato timestamp. Se non viene specificato un notBefore
intervallo di tempo, tutti i certificati esistenti e futuri corrispondenti alla revoca verranno revocati.
Nota
La revoca dei kubelet
certificati server non è attualmente disponibile.
Se si usa un numero di serie quando si esegue una revoca, è possibile usare il comando di PowerShell, descritto di seguito, per ottenere il Repair-AksHciClusterCerts
cluster in uno stato di lavoro. Se si usa uno degli altri campi elencati in precedenza, assicurarsi di specificare un'ora notBefore
.
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
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per