Usa autorità di certificazione cluster personalizzate

Le autorità di certificazione (CA) dei cluster emettono e firmano i certificati per abilitare l'autenticazione e la crittografia sicura tra i componenti del cluster. Per impostazione predefinita, Google Distributed Cloud, l'API Cluster crea le CA del cluster quando crei in un nuovo cluster. Questo documento descrive come puoi utilizzare il tuo certificato autorità con Google Distributed Cloud. L'utilizzo di CA dei cluster personalizzati offre controllo sull'emissione e la gestione dei certificati dei cluster. Puoi anche l'attendibilità nel controllo, i parametri dell'algoritmo di crittografia, la profondità certificati e il loro scopo.

Per utilizzare CA personalizzate, devi fornire le CA radice, composte da un file di certificato CA e il file di chiave privata corrispondente. Devi fornire un certificato CA e un file della chiave per ciascuna delle seguenti CA del cluster richieste:

  • etcd CA: il certificato per il certificato CA etcd protegge la comunicazione tra il server API di Kubernetes e le repliche etcd e anche la comunicazione tra le repliche etcd.

  • CA cluster: il certificato per la CA del cluster protegge le comunicazioni tra il server API Kubernetes e tutti i client API interni di Kubernetes. Tra i client ci sono kubelet, gestore del controller e scheduler.

  • front-proxy CA: il certificato per la CA front-proxy protegge comunicazione con API aggregate.

Puoi fornire una coppia di chiavi di certificato univoca per ogni CA oppure puoi riutilizzare la coppia chiave-certificato per più di una CA.

Applichi le coppie di chiavi certificato creazione del cluster (solo metodo bmctl) e la rotazione CA. CA del cluster personalizzato è compatibile con tutti i tipi di cluster: amministratore, utente, ibrido e autonomo.

Prerequisiti

Sei responsabile della preparazione delle tue CA radice in base a quanto segue: regole:

  • Le CA personalizzate sono CA radice, ognuna composta da un file di certificato autofirmato e un file di chiave privata.

  • Per il certificato, ti consigliamo di utilizzare Formato DER (Distinguiled Encoding Rules) (consulta il suggerimento X.690 per le regole di codifica ASN.1). Il file del certificato deve contenere dati con codifica Base64, preceduti da ‑‑‑‑‑BEGIN CERTIFICATE‑‑‑‑‑ e seguito da ‑‑‑‑END CERTIFICATE‑‑‑‑‑.

  • Per la chiave privata, ti consigliamo di utilizzare il metodo Standard di crittografia a chiave pubblica (PKCS) #1 formato. Il file della chiave deve contenere dati codificati in base64 preceduti da ‑‑‑‑BEGIN RSA PRIVATE KEY‑‑‑‑ e seguito da ‑‑‑‑END RSA PRIVATE KEY‑‑‑‑.

  • Per ridurre al minimo le potenziali interruzioni del cluster, le CA personalizzate non dovrebbero scadere prima oltre cinque anni. Ti consigliamo un periodo di scadenza più lungo, ad esempio da 10 a 30 anni.

  • Assicurati che i file del certificato e della chiave si trovino sulla workstation di amministrazione in cui esegui i comandi bmctl.

  • L'utente che esegue i comandi bmctl deve avere accesso alla directory in in cui archivi i file. Ti consigliamo di inserire i file in un la directory esistente utilizzata per certificati e chiavi. Ad esempio, puoi archiviare i file in ~/baremetal/bmctl-workspace/.sa-keys insieme e gestire le chiavi account di servizioo.

  • L'utente che esegue i comandi bmctl deve avere accesso in lettura ai file.

Usa una CA personalizzata durante la creazione del cluster

Quando crei un cluster con bmctl, devi prima aggiornare il file di configurazione del cluster per descrivere le funzionalità e le impostazioni del cluster. Per utilizzare la funzionalità CA cluster personalizzato durante creazione del cluster, hai due opzioni per specificare le CA del cluster personalizzate il file di configurazione del cluster:

  • Specifica i percorsi sia per i file dei certificati CA sia per la chiave privata file
  • Specifica solo i percorsi per i file di chiavi private

Quando specifichi solo le chiavi private, bmctl cerca la CA corrispondente di certificati nella stessa directory. I file dei certificati devono avere lo stesso del file corrispondente ai file della chiave privata corrispondenti e all'estensione del file .crt. Per Ad esempio, se il percorso della chiave privata è /custom-ca/cluster_ca.key, allora bmctl prevede che il percorso del certificato sia /custom-ca/cluster_ca.crt.

In entrambi i casi, i percorsi vengono specificati nella sezione delle credenziali del di configurazione del deployment, come mostrato nei seguenti esempi.

Esempio 1: specificare i percorsi dei certificati e delle chiavi

Il seguente estratto di un file di configurazione di cluster mostra come specificare i percorsi dei file di certificato e chiave per ogni CA del cluster. In questo Ad esempio, il certificato CA e i file della chiave si trovano nella stessa directory i file di chiavi JSON dell'account di servizio.

gcrKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-gcr.json
...
cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-cloud-ops.json
clusterCACertPath: bmctl-workspace/.sa-keys/cluster_ca_cert.pem
clusterCAPrivateKeyPath: bmctl-workspace/.sa-keys/cluster_ca_key.pem
etcdCACertPath: bmctl-workspace/.sa-keys/etcd_ca_cert.pem
etcdCAPrivateKeyPath: bmctl-workspace/.sa-keys/etcd_ca_key.pem
frontProxyCACertPath: bmctl-workspace/.sa-keys/front_proxy_ca_cert.pem
frontProxyCAPrivateKeyPath: bmctl-workspace/.sa-keys/front_proxy_ca_key.pem
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin-test
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
...

Esempio 2: specifica solo i percorsi delle chiavi private

Il seguente estratto di un file di configurazione di cluster mostra come specificare solo i percorsi dei file chiave. In questo esempio, i file delle chiavi private CA si trovano nella stessa directory dei file chiave JSON dell'account di servizio. La CA corrispondente anche i file dei certificati devono trovarsi nella directory /.sa-keys. File di certificati hanno lo stesso nome file dei file chiave, ma con estensione .crt. Quindi, Il file del certificato CA etcd ha il nome etcd_ca.crt.

gcrKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-gcr.json
...
cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-cloud-ops.json
clusterCAPrivateKeyPath: bmctl-workspace/.sa-keys/cluster_ca_key.pem
etcdCAPrivateKeyPath: bmctl-workspace/.sa-keys/etcd_ca_key.pem
frontProxyCAPrivateKeyPath: bmctl-workspace/.sa-keys/front_proxy_ca_key.pem
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin-test
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
...

Esempio 3: riutilizzare una singola coppia di file di certificati CA e di chiave

Il seguente estratto di un file di configurazione di cluster mostra come specificare solo i percorsi dei file chiave. In questo esempio, viene utilizzata una singola coppia chiave-certificato per tutte le CA del cluster. Il certificato CA e i file della chiave privata sono entrambi in Directory /custom-ca. Seguendo la convenzione di denominazione, il certificato CA il nome file è custom_ca.crt.

gcrKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-gcr.json
...
cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-cloud-ops.json
clusterCAPrivateKeyPath: /custom-ca/custom_ca.key
etcdCAPrivateKeyPath: /custom-ca/custom_ca.key
frontProxyCAPrivateKeyPath: /custom-ca/custom_ca.key
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin-test
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
...

Utilizza una CA personalizzata durante la rotazione della CA

Quando ruoti le CA, puoi specificare percorsi per il certificato CA del cluster personalizzato e i file di chiave privata. Opzioni sono simili alle opzioni per specificare le CA del cluster personalizzate per la creazione del cluster. Quando esegui il comando bmctl update credentials certificate-authorities rotate, sono disponibili le seguenti opzioni:

  • Specifica i percorsi sia per i file dei certificati CA personalizzati che per quelli privati e i file chiave.
  • Specifica solo i percorsi per i file di chiavi private CA personalizzate. La il file del certificato CA corrispondente deve trovarsi nella stessa directory, avere dello stesso nome del file della chiave e hanno un'estensione del file .crt.
  • Riutilizza una coppia di certificato e chiave CA specificando lo stesso certificato e la stessa chiave per più di una CA del cluster.
  • Ometti gli argomenti per i percorsi delle CA personalizzati. Se non specifichi un'autorità di certificazione personalizzata quando ruoti le CA, Google Distributed Cloud crea e utilizza CA del cluster standard.

Esempio 1: specificare i percorsi del certificato CA e della chiave privata

bmctl update credentials certificate-authorities rotate \
    --cluster CLUSTER_NAME \
    --kubeconfig ADMIN_KUBECONFIG \
    --cluster-ca-cert-path=CLUSTER_CA_CERT_PATH \
    --cluster-ca-private-key-path=CLUSTER_CA_KEY_PATH \
    --etcd-ca-cert-path=ETCD_CA_CERT_PATH \
    --etcd-ca-private-key-path=ETCD_CA_KEY_PATH \
    --front-proxy-ca-cert-path=FRONT_PROXY_CA_CERT_PATH \
    --front-proxy-ca-private-key-path=FRONT_PROXY_CA_KEY_PATH

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster per il quale vuoi per ruotare le CA.
  • ADMIN_KUBECONFIG: il percorso del cluster di amministrazione kubeconfig. Per i cluster a gestione autonoma, questo file è l'agente del cluster kubeconfig.
  • CLUSTER_CA_CERT_PATH: il percorso della CA del cluster del certificato.
  • CLUSTER_CA_KEY_PATH: il percorso della CA privata del cluster chiave.
  • ETCD_CA_CERT_PATH: il percorso del certificato CA etcd .
  • ETCD_CA_KEY_PATH: il percorso della chiave privata CA etcd .
  • FRONT_PROXY_CA_CERT_PATH: il percorso del front-proxy del certificato.
  • FRONT_PROXY_CA_KEY_PATH: il percorso del front-proxy chiave privata.

Esempio 2: specifica solo i percorsi delle chiavi private

bmctl update credentials certificate-authorities rotate \
    --cluster CLUSTER_NAME \
    --kubeconfig ADMIN_KUBECONFIG \
    --cluster-ca-private-key-path=CLUSTER_CA_KEY_PATH \
    --etcd-ca-private-key-path=ETCD_CA_KEY_PATH \
    --front-proxy-ca-private-key-path=FRONT_PROXY_CA_KEY_PATH

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster per il quale vuoi per ruotare le CA.
  • ADMIN_KUBECONFIG: il percorso del cluster di amministrazione kubeconfig. Per i cluster a gestione autonoma, questo file è l'agente del cluster kubeconfig.
  • CLUSTER_CA_KEY_PATH: il percorso della CA privata del cluster chiave.
  • ETCD_CA_KEY_PATH: il percorso della chiave privata CA etcd .
  • FRONT_PROXY_CA_KEY_PATH: il percorso del front-proxy chiave privata.

CA intermedie

I cluster della versione 1.29 supportano l'uso di CA intermedie come Funzionalità di anteprima. Questa funzionalità non è la stessa fase di lancio per tutte le versioni dei prodotti supportate:

  • 1.29: Anteprima
  • 1.28: Non disponibile
  • 1.16: Non disponibile

Analogamente al requisito della CA radice per le CA personalizzate, devi utilizzare le CA intermedie devono preparare tre insiemi di CA. Ogni CA è costituita da un file di certificato e il file di chiave privata corrispondente. Devi fornire un certificato CA e un file della chiave per ciascuna delle seguenti CA del cluster richieste:

  • CA etcd
  • CA del cluster
  • CA front-proxy

Come per le CA radice, puoi fornire una coppia di chiavi di certificato unica per ogni CA puoi riutilizzare una coppia di chiavi certificato per più di una delle CA specificando gli stessi percorsi di file nella configurazione della CA.

Quando utilizzi CA intermedie, il file del certificato CA deve contenere l'intera che include certificati provenienti dalle CA intermedie fino la CA radice. I certificati sono elencati in ordine inverso. firmato, con l'ultimo certificato CA intermedio in alto e la CA radice certificato in basso.

Nell'esempio seguente (a partire dalla CA radice in basso), l'ordine indica quanto segue:

  • La CA radice ha firmato il certificato CA intermedio-A
  • La CA Intermedia-A ha firmato il certificato CA Intermedia-B
  • La catena prosegue fino al certificato CA intermedio Y finale, che è firmato dall'Intermediate-X CA
-----BEGIN CERTIFICATE-----
<Intermediate-Y CA CERT CONTENT>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<Intermediate-X CA CERT CONTENT>
-----END CERTIFICATE-----
...
-----BEGIN CERTIFICATE-----
<Intermediate-B CA CERT CONTENT>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<Intermediate-A CA CERT CONTENT>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<ROOT CA CERT CONTENT>
-----END CERTIFICATE----- 

Per continuare con questo esempio, la chiave privata associata Il certificato CA intermedio Y deve essere trasmesso insieme al certificato CA. come in una CA personalizzata.

-----BEGIN RSA PRIVATE KEY-----
<Intermediate-Y PRIVATE KEY CONTENT>
-----END RSA PRIVATE KEY-----

Per verificare se il cluster utilizza la CA intermedia, ispeziona il certificato conteggio nel secret CA del cluster:

kubectl get secret CLUSTER_NAME-ca \
    --kubeconfig ADMIN_KUBECONFIG
    -n cluster-CLUSTER_NAME \
    -o jsonpath='{.data.tls\.crt}' | base64 --decode | grep "BEGIN CERTIFICATE" | wc -l