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 Secret durante la configurazione delle risorse. Google Cloud

Panoramica

Questa sezione presenta una panoramica dell'utilizzo di Secret con Config Connector.

Utilizzare un secret durante la creazione di una risorsa

Puoi utilizzare i dati all'interno di un secret quando crei una risorsa. In Passare un Secret a una risorsa, crei un Secret contenente una password e poi fai riferimento al Secret per un utente su un database Cloud SQL.

Aggiornamento dei secret

Quando applichi un aggiornamento a un segreto, Config Connector aggiorna la risorsa al successivo riavvio dello stato desiderato. Ad esempio, se aggiorni il segreto a cui viene fatto riferimento come password per un SQLUser, Config Connector aggiornerà la password dell'utente.

Eliminazione dei secret

Se elimini un segreto in uso da una risorsa, Config Connector non rimuoverà il riferimento della risorsa al segreto. Ad esempio, se crei un utente SQL con una password che fa riferimento a un segreto e poi elimini il segreto, la password rimarrà nell'utente SQL.

Risoluzione dei problemi

Se crei una risorsa che fa riferimento a un segreto non esistente, Config Connector creerà un Evento DependencyNotFound o DependencyInvalid.

Secret e spazi dei nomi Kubernetes

Poiché Kubernetes non consente l'accesso ai secret tra gli 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.

Trasmissione di un secret a una risorsa

In questa sezione, creerai un server Cloud SQL e imposterai la password dell'utente predefinito con un segreto.

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 progetto. Per verificare che l'API sia abilitata, esegui il seguente comando gcloud:

    gcloud services list --filter=sqladmin.googleapis.com
    

    Se il comando stampa Listed 0 items., devi abilitare l'API. Puoi attivare l'API con Config Connector e l'API Resource Manager o un comando gcloud.

API Service Usage

  1. Config Connector utilizza l'API Service Usage per attivare le API di servizio. Per eseguire questi passaggi, devi abilitare l'API Utilizzo servizio. Puoi abilitare questa API utilizzando Google Cloud CLI:
    gcloud services enable serviceusage.googleapis.com
  2. Copia il seguente codice YAML in un file denominato enable-sql.yaml

    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sqladmin.googleapis.com
    
  3. Applica enable-sql.yaml al tuo cluster con kubectl:

    kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
    

    Sostituisci CC_NAMESPACE con lo spazio dei nomi da cui Config Connector gestisce le risorse.

gcloud

Per abilitare l'API SQL Admin con Google Cloud CLI, esegui il seguente comando:

gcloud services enable sqladmin.googleapis.com

Creazione di un server Cloud SQL

  1. Copia il codice YAML di seguito in un file denominato sql-server-example.yaml. Verrà creato un server Cloud SQL denominato sqlserver-1 e un utente sqluser-sample. La password per sqluser-sample viene impostata da un riferimento alla risorsa a un secret denominato secret-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 extracted
    
  2. Copia il codice YAML di seguito in un file denominato example-secret.yaml. Modifica il valore per password prima di salvare. Dichiara secret-1, a cui si fa riferimento nella sezione precedente.

    apiVersion: v1
    kind: Secret
    metadata:
      name:  secret-1
    stringData:
      password: PASSWORD
    
  3. Applica le configurazioni al cluster.

    kubectl apply -n CC_NAMESPACE -f example-secret.yaml
    kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
    

    Sostituisci CC_NAMESPACE con 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.

  4. Attendi alcuni minuti e verifica che l'istanza sia disponibile:

    gcloud sql instances list --filter="name=sqlserver-1"

    L'output deve includere un server con un STATUS di RUNNABLE.

  5. Verifica di poter 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 segreto 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