Utilizzo dei secret per archiviare i dati sensibili

Puoi utilizzare un secret per archiviare informazioni riservate di configurazione, come password e chiavi di accesso, nel cluster GKE. Questa pagina descrive il modo in cui Config Connector utilizza i valori dei secret durante la configurazione delle risorse Google Cloud.

Panoramica

Questa sezione offre una panoramica sull'utilizzo dei secret con Config Connector.

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 contenente una password, quindi fai riferimento al Secret per un utente su un database Cloud SQL.

Aggiornamento dei secret

Quando applichi un aggiornamento a un Secret, Config Connector aggiorna la risorsa quando prosegue la riconciliazione dello stato desiderato. Ad esempio, se aggiorni il secret che viene indicato 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 rimuove 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à in SQLUser.

Risolvere i problemi

Se crei una risorsa che fa riferimento a un secret che non esiste, Config Connector crea un evento DependencyNotFound o DependencyInvalid.

Secret e più progetti

Poiché Kubernetes non consente l'accesso ai secret in spazi dei nomi, se utilizzi Config Connector per gestire più progetti, devi applicare secret in ogni spazio dei nomi mappato a un progetto.

Trasferimento di un secret a una risorsa

In questa sezione creerai un server Cloud SQL e imposterai la password predefinita dell'utente con un secret.

Prima di iniziare

Per completare questi passaggi, devi disporre di:

  • Config Connector installato su un cluster Kubernetes
  • L'API Cloud SQL Admin abilitata nel tuo progetto. Per confermare che l'API sia abilitata, esegui questo comando gcloud:

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

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

API Service Usage

  1. Config Connector utilizza l'API Service Usage per abilitare le API del servizio. Per eseguire questi passaggi, devi abilitare l'API Utilizzo del servizio. Puoi abilitare questa API utilizzando l'interfaccia a riga di comando di Google Cloud:
    gcloud services enable serviceusage.googleapis.com
  2. Copia il seguente 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 Config Connector per gestire le risorse.

gcloud

Per abilitare l'API Admin SQL con l'interfaccia a riga di comando di Google Cloud, esegui il comando seguente:

gcloud services enable sqladmin.googleapis.com

Creazione di un server Cloud SQL

  1. Copia il file YAML qui sotto in un file denominato sql-server-example.yaml. Viene creato un server Cloud SQL denominato sqlserver-1 e un utente denominato sqluser-sample. La password per sqluser-sample è impostata da un riferimento risorsa su 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 file YAML qui sotto 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 tuo 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 Config Connector per gestire le risorse.

    Config Connector crea l'istanza Cloud SQL e un utente con la password specificata. L'operazione potrebbe richiedere diversi 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 STATUS di RUNNABLE.

  5. 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, l'utente e il secret di Cloud SQL 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 Config Connector per gestire le risorse.

Passaggi successivi