Utilizzo dei secret per archiviare i dati sensibili
Puoi utilizzare un secret per archiviare informazioni di configurazione sensibili, come password e chiavi di accesso, nel tuo cluster GKE. Questa pagina descrive come Config Connector utilizza i valori dei secret durante la configurazione delle risorse Google Cloud .
Panoramica
Questa sezione presenta una panoramica sull'utilizzo dei secret con Config Connector.
Sicurezza e crittografia dei secret at-rest
Poiché i secret di Kubernetes contengono credenziali e stringhe di connessione sensibili, attiva la crittografia dei secret a livello di applicazione sul tuo cluster. GKE cripta i secret at-rest per impostazione predefinita. La crittografia dei secret a livello di applicazione aggiunge un ulteriore livello di sicurezza utilizzando la crittografia envelope di Cloud Key Management Service.
Inoltre, utilizza controllo dell'accesso basato su ruoli (RBAC) per limitare l'accesso in lettura ai secret solo agli amministratori del cluster autorizzati. Applica la stessa limitazione alle risorse Config Connector che archiviano valori sensibili nei campi status, ad esempio IAMServiceAccountKey.
Utilizzo di un secret durante la creazione di una risorsa
Puoi utilizzare i dati all'interno di un secret quando crei una risorsa. In Passaggio di un secret a una risorsa, crei un secret che contiene una password, quindi fai riferimento al secret per un utente in un database Cloud SQL.
Aggiornamento dei secret
Quando applichi un aggiornamento a un secret, Config Connector aggiorna la risorsa alla successiva riconciliazione dello stato desiderato. Ad esempio, se aggiorni il secret a cui viene fatto riferimento come password per un SQLUser, Config Connector aggiornerà la password dell'utente.
Eliminazione dei secret
Se elimini un secret utilizzato da una risorsa, Config Connector non rimuoverà il riferimento della risorsa al secret. Ad esempio, se crei un SQLUser con una password che fa riferimento a un Secret e poi elimini il Secret, la password rimarrà nell'SQLUser.
Risoluzione dei problemi
Se crei una risorsa che fa riferimento a un secret che non esiste, Config Connector creerà un evento DependencyNotFound o DependencyInvalid.
Secret e spazi dei nomi Kubernetes
Poiché Kubernetes non consente l'accesso ai secret tra spazi dei nomi, se utilizzi lo stesso valore del secret per le risorse di spazi dei nomi diversi, devi applicare i secret in ogni spazio dei nomi.
Passaggio di un secret a una risorsa
In questa sezione, creerai un server Cloud SQL e imposterai la password dell'utente predefinito con un secret.
Prima di iniziare
Per completare questi passaggi, devi disporre di quanto segue:
- Config Connector installato su un cluster Kubernetes
L'API Cloud SQL Admin abilitata nel tuo progetto. Per verificare che l'API sia abilitata, esegui il seguente comando
gcloud:gcloud services list --filter=sqladmin.googleapis.comSe il comando stampa
Listed 0 items., devi abilitare l'API. Puoi abilitare l'API con Config Connector e l'API Resource Manager o un comandogcloud.
API Service Usage
- Config Connector utilizza l'API Service Usage per abilitare le API di servizio. Per eseguire questi passaggi, devi abilitare l'API Service Usage. Puoi abilitare questa API utilizzando Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
Copia il seguente YAML in un file denominato
enable-sql.yamlapiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.comApplica
enable-sql.yamlal tuo cluster conkubectl:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACESostituisci
CC_NAMESPACEcon lo spazio dei nomi da cui Config Connector gestisce le risorse.
gcloud
Per abilitare l'API SQL Admin con Google Cloud CLI, esegui questo comando:
gcloud services enable sqladmin.googleapis.com
Creazione di un'istanza Cloud SQL Server
Copia il codice YAML riportato di seguito in un file denominato
sql-server-example.yaml. In questo modo viene creato un server Cloud SQL denominatosqlserver-1e un utente denominatosqluser-sample. La password persqluser-sampleè impostata da un riferimento alla risorsa a un secret denominatosecret-1.apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLInstance metadata: labels: label-one: "sql-server-example" name: sqlserver-1 spec: region: us-central1 databaseVersion: MYSQL_5_7 settings: tier: db-g1-small --- apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLUser metadata: name: sqluser-sample spec: instanceRef: name: sqlserver-1 host: "%" password: valueFrom: secretKeyRef: name: secret-1 # Name of the Secret object to extract a value from key: password # Key that identifies the value to be extractedCopia il codice YAML riportato di seguito in un file denominato
example-secret.yaml. Modifica il valore dipasswordprima di salvare. In questo modo viene dichiaratosecret-1, a cui si fa riferimento nella sezione precedente.apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORDApplica le configurazioni al cluster.
kubectl apply -n CC_NAMESPACE -f example-secret.yamlkubectl apply -n CC_NAMESPACE -f sql-server-example.yamlSostituisci
CC_NAMESPACEcon lo spazio dei nomi da cui Config Connector gestisce le risorse.Config Connector crea l'istanza Cloud SQL e un utente con la password specificata. L'operazione potrebbe richiedere alcuni minuti.
Attendi alcuni minuti e verifica che l'istanza sia disponibile:
gcloud sql instances list --filter="name=sqlserver-1"
L'output dovrebbe includere un server con un
STATUSdiRUNNABLE.Conferma che puoi connetterti all'istanza SQL:
gcloud sql connect sqlserver-1 --user=sqluser-sample
Ti viene chiesta la password.
Pulizia
Se non vuoi conservare l'istanza, elimina l'istanza Cloud SQL, l'utente e il secret con kubectl.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
Sostituisci CC_NAMESPACE con lo spazio dei nomi da cui Config Connector gestisce le risorse.
Passaggi successivi
Scopri come specificare i riferimenti alle risorse tra le risorse Config Connector.
Approfondimento sui secret di Kubernetes.