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 fornisce 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 Trasferire 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 segreto ed elimini il segreto, la password rimarrà in SQLUser.

Risoluzione dei problemi

Se crei una risorsa che fa riferimento a un secret inesistente, Config Connector creerà un DependencyNotFound o un 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.

Trasferire 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.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 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 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 questo 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. In questo modo viene creato un server Cloud SQL denominato sqlserver-1 e un utente denominato sqluser-sample. La password per sqluser-sample è 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 riportato di seguito in un file denominato example-secret.yaml. Modifica il valore di password prima di salvare. Questo 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 che hai specificato. 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 valore STATUS di RUNNABLE.

  5. Conferma di poterti connettere all'istanza SQL:

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

    Ti viene 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