Como usar secrets para armazenar dados confidenciais


Use um Secret para armazenar informações sensíveis de configuração, como senhas e chaves de acesso, no cluster do GKE. Esta página descreve como o Config Connector usa valores de secret ao configurar seus recursos Google Cloud .

Visão geral

Nesta seção, apresentamos uma visão geral sobre o uso de Secrets com o Config Connector.

Como usar um secret ao criar um recurso

É possível usar os dados dentro de um secret ao criar um recurso. Em Como passar um secret para um recurso, crie um secret que contenha uma senha e referencie o secret de um usuário em um banco de dados do Cloud SQL.

Como atualizar Secrets

Quando você aplica uma atualização a um Secret, o Config Connector atualiza o recurso na próxima reconciliação do estado pretendido. Por exemplo, se você atualizar o secret mencionado como a senha de um SQLUser, o Config Connector atualizará a senha do usuário.

Como excluir Secrets

Se você excluir um secret que está sendo usado por um recurso, o Config Connector não removerá a referência do recurso do secret. Por exemplo, se você criar um SQLUser com uma senha que referencie um secret e, em seguida, excluir o secret, a senha permanecerá no SQLUser.

Solução de problemas

Se você criar um recurso que faça referência a um Secret inexistente o Config Connector criará um Evento DependencyNotFound ou DependencyInvalid.

Secrets e namespaces do Kubernetes

Como o Kubernetes não permite acesso a secrets nos Namespaces, se você estiver usando o mesmo valor de secret para recursos de Namespaces diferentes, aplique secrets em todos os Namespaces.

Como passar um Secret para um recurso

Nesta seção, você criará um servidor Cloud SQL e definirá a senha do usuário padrão com um Secret.

Antes de começar

Para concluir essas etapas, você precisa do seguinte:

  • Config Connector instalado em um cluster do Kubernetes
  • A API Cloud SQL Admin ativada no seu projeto. Para confirmar que a API está ativada, execute o seguinte comando gcloud:

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

    Se o comando imprimir Listed 0 items., você precisará ativar a API. É possível ativar a API com o Config Connector e a API Resource Manager, ou um comando gcloud.

API Service Usage

  1. O Config Connector usa a API Service Usage para ativar as APIs de serviço. Para executar essas etapas, ative a API Service Usage. É possível ativar essa API usando a CLI do Google Cloud:
    gcloud services enable serviceusage.googleapis.com
  2. Copie o seguinte YAML em um arquivo chamado enable-sql.yaml

    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sqladmin.googleapis.com
    
  3. Aplique enable-sql.yaml ao cluster com kubectl:

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

    Substitua CC_NAMESPACE pelo namespace em que o Config Connector gerencia recursos.

gcloud

Para ativar a API SQL Admin com a CLI do Google Cloud, execute o seguinte comando:

gcloud services enable sqladmin.googleapis.com

Como criar um servidor do Cloud SQL

  1. Copie o YAML abaixo para um arquivo chamado sql-server-example.yaml. Isso cria um servidor do Cloud SQL chamado sqlserver-1 e um usuário chamado sqluser-sample. A senha de sqluser-sample é definida por uma referência de recurso para um secret chamado 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. Copie o YAML abaixo para um arquivo chamado example-secret.yaml. Edite o valor de password antes de salvar. Isso declara secret-1, mencionado na seção anterior.

    apiVersion: v1
    kind: Secret
    metadata:
      name:  secret-1
    stringData:
      password: PASSWORD
    
  3. Aplique as configurações ao cluster.

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

    Substitua CC_NAMESPACE pelo namespace em que o Config Connector gerencia recursos.

    O Config Connector cria a instância do Cloud SQL e um usuário com a senha que você especificou. Isso pode levar alguns minutos.

  4. Aguarde alguns minutos e confirme se a instância está disponível:

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

    O resultado precisa incluir um servidor com STATUS de RUNNABLE.

  5. Confirme se é possível se conectar à instância SQL:

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

    Sua senha será solicitada.

Como limpar

Se você não quer manter a instância, exclua essa instância, o usuário e o secret do Cloud SQL com kubectl.

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

Substitua CC_NAMESPACE pelo namespace em que o Config Connector gerencia recursos.

A seguir