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 cluster GKE. Questa pagina descrive come Config Connector utilizza i valori dei secret durante la configurazione delle Google Cloud risorse.

Panoramica

Questa sezione presenta 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 Trasmettere un secret a una risorsa, crei un secret che contiene 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 la prossima volta che riconcilia lo 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 in uso 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à sull'SQLUser.

Risoluzione dei problemi

Se crei una risorsa che fa riferimento a un secret inesistente, Config Connector creerà un DependencyNotFound o DependencyInvalid evento.

Secret e spazi dei nomi Kubernetes

Poiché Kubernetes non consente l'accesso ai secret tra gli spazi dei nomi, se utilizzi lo stesso valore secret per le risorse di spazi dei nomi diversi, devi applicare i secret in ogni spazio dei nomi.

Trasmettere 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:

  • 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.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 con un comando gcloud.

API Service Usage

  1. 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
  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 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 riportato di seguito 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 viene impostata da un riferimento a una 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 riportato di seguito in un file denominato example-secret.yaml. Modifica il valore di password prima di salvare. Viene dichiarato secret-1, a cui viene fatto 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. Questa 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 impostato su RUNNABLE.

  5. Verifica di poterti connettere all'istanza SQL:

    gcloud sql connect sqlserver-1 --user=sqluser-sample

    Ti verrà richiesta 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