Utiliser des secrets pour stocker des données sensibles
Vous pouvez utiliser un Code secret pour stocker des informations de configuration sensibles, telles que des mots de passe et des clés d'accès, dans votre cluster GKE. Cette page explique comment Config Connector utilise des valeurs Secret lors de la configuration de vos ressources Google Cloud.
Présentation
Cette section explique comment utiliser les secrets à l'aide de Config Connector.
Utiliser un secret lors de la création d'une ressource
Vous pouvez utiliser les données dans un secret lorsque vous créez une ressource. Dans la section Transmettre un secret à une ressource, vous créez un secret contenant un mot de passe, puis vous référencez le secret pour un utilisateur sur une base de données Cloud SQL.
Mettre à jour les secrets
Lorsque vous appliquez une mise à jour à un secret, Config Connector met à jour la ressource pour qu'elle corresponde à l'état souhaité. Par exemple, si vous mettez à jour le secret référencé comme mot de passe pour une valeur SQLUser
, Config Connector mettra à jour le mot de passe de l'utilisateur.
Supprimer les secrets
Si vous supprimez un secret utilisé par une ressource, Config Connector ne supprime pas la référence de la ressource au secret. Par exemple, si vous créez un utilisateur SQL avec un mot de passe qui fait référence à un secret, puis que vous supprimez le code secret, le mot de passe restera sur SQLUser.
Dépannage
Si vous créez une ressource faisant référence à un secret qui n'existe pas, Config Connector créera un événement DependencyNotFound
ou DependencyInvalid
.
Secrets et espaces de noms Kubernetes
Étant donné que Kubernetes n'autorise pas l'accès aux secrets dans les espaces de noms, si vous utilisez la même valeur de secret pour les ressources de différents espaces de noms, vous devez appliquer des secrets dans chaque espace de noms.
Transmettre un secret à une ressource
Dans cette section, vous allez créer un serveur Cloud SQL et définir le mot de passe de l'utilisateur par défaut avec un secret.
Avant de commencer
Pour effectuer ces étapes, vous avez besoin des éléments suivants :
- Config Connector installé sur un cluster Kubernetes
L'API Cloud SQL Admin activée dans votre projet Pour vérifier que l'API est activée, exécutez la commande
gcloud
suivante :gcloud services list --filter=sqladmin.googleapis.com
Si la commande affiche
Listed 0 items.
, vous devez activer l'API. Vous pouvez activer l'API avec Config Connector et l'API Resource Manager, ou une commandegcloud
.
API Service Usage
- Config Connector utilise l'API Service Usage pour activer les API de service. Pour effectuer ces opérations, vous devez activer l'API Service Usage. Vous pouvez activer cette API à l'aide de la Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
Copiez le fichier YAML suivant dans un fichier nommé
enable-sql.yaml
:apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.com
Appliquez
enable-sql.yaml
à votre cluster aveckubectl
:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.
gcloud
Pour activer l'API SQL Admin avec la Google Cloud CLI, exécutez la commande suivante:
gcloud services enable sqladmin.googleapis.com
Créer un serveur Cloud SQL
Copiez le manifeste YAML ci-dessous dans un fichier nommé
sql-server-example.yaml
. Cela crée un serveur Cloud SQL nommésqlserver-1
et un utilisateur nommésqluser-sample
. Le mot de passe desqluser-sample
est défini par une référence de ressource à un secret nommé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
Copiez le manifeste YAML ci-dessous dans un fichier nommé
example-secret.yaml
. Modifiez la valeur depassword
avant de l'enregistrer. Cela indique la valeursecret-1
, référencée dans la section précédente.apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORD
Appliquez les configurations à votre cluster.
kubectl apply -n CC_NAMESPACE -f example-secret.yaml
kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.Config Connector crée l'instance Cloud SQL et un utilisateur avec le mot de passe que vous avez spécifié. Cela peut prendre quelques minutes.
Patientez quelques minutes et vérifiez que l'instance est disponible :
gcloud sql instances list --filter="name=sqlserver-1"
Le résultat doit inclure un serveur avec
STATUS
deRUNNABLE
.Confirmez que vous pouvez vous connecter à l'instance SQL :
gcloud sql connect sqlserver-1 --user=sqluser-sample
Vous êtes invité à saisir votre mot de passe.
Nettoyer
Si vous ne souhaitez pas conserver l'instance, supprimez l'instance Cloud SQL, l'utilisateur et le secret avec kubectl
.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
Remplacez CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.
Étape suivante
Découvrez comment spécifier des références de ressources entre les ressources de Config Connector.
Découvrez en détail les secrets Kubernetes.