Configuration de Secrets Manager dans votre cluster Kubernetes Service

Lorsque vous intégrez IBM Cloud Secrets Manager à votre cluster IBM Cloud Kubernetes Service, vous pouvez gérer de manière centralisée les certificats de sous-domaines Ingress et d'autres secrets.

A propos de Secrets Manager

Avec Secrets Manager, vous pouvez utiliser un seul service pour gérer vos secrets et contrôler qui y a accès. Une instance Secrets Manager n'est pas automatiquement mise à disposition dans votre cluster. Cependant, vous pouvez utiliser une seule instance d' Secrets Manager sur plusieurs clusters, et un même cluster peut comporter plusieurs instances.

Quelles fonctionnalités puis-je obtenir avec Secrets Manager?

Avec Secrets Manager, vous pouvez:

  • Créez des secrets gérés d' Kubernetes, avec des certificats d' TLS Ingress inclus.
  • Créez des secrets Kubernetes de n'importe quel type à l'aide du CRN de n'importe quelle instance Secrets Manager que vous possédez.
  • Mettez à jour automatiquement vos secrets dans votre cluster de manière régulière.
  • Suivez les dates d'expiration de vos certificats à partir de la console IBM Cloud.
  • Contrôlez qui a accès à vos secrets en créant des groupes de secrets pour les utilisateurs approuvés.

Notez que pour que vos secrets soient mis à jour automatiquement, vous devez enregistrer au moins une instance d' Secrets Manager dans votre cluster. Pour plus d'informations, consultez la section « Enregistrement de votre instance d' Secrets Manager » dans votre cluster.

Foire aux questions Secrets Manager

Veuillez garder à l'esprit les points suivants lorsque vous utilisez Secrets Manager.

Quels types de secrets sont pris en charge avec Secrets Manager?
Secrets Manager prend en charge les données d'identification IAM, les secrets de valeur de clé, les données d'identification de l'utilisateur, les secrets arbitraires et les secrets de Kubernetes. En ce qui concerne les secrets d' Kubernetes, Secrets Manager prend en charge à la fois les types de secrets TLS et non- TLS (opaques). Avec les secrets TLS, vous pouvez spécifier un seul CRN de certificat. Avec les secrets non liés à un TLS, vous pouvez spécifier plusieurs champs pour extraire des secrets non liés à un certificat. Si vous ne précisez pas de type de secret lors de la création d'un secret, le type « TLS » est appliqué par défaut. Pour plus d'informations sur les valeurs confidentielles prises en charge, voir Utilisation de secrets de types différents.
Les secrets stockés dans une instance Secrets Manager enregistrée sont-ils automatiquement mis à jour?
Oui. Si vous disposez d'une instance Secrets Manager enregistrée dans votre cluster, les secrets du cluster sont automatiquement mis à jour avec les valeurs de Secrets Manager une fois par jour. Ces mises à jour sont effectuées à l'aide de la valeur du secret provenant du CRN correspondant.
Mes secrets sont-ils automatiquement mis à jour si je ne crée pas et n'enregistre pas d'instance Secrets Manager ?
Si vous ne disposez pas d'une instance Secrets Manager enregistrée dans votre cluster, vos secrets Ingress par défaut continuent de se mettre à jour automatiquement tous les 90 jours et sont appliqués à votre cluster. Toutefois, les secrets que vous avez créés et qui référencent le secret Ingress par défaut ne sont pas automatiquement mis à jour.
Exemple de scénario: Vous disposez d'un certificat Ingress par défaut dans l'espace de nom default. Vous exécutez la commande ibmcloud ks ingress secret create et référencez le CRN du certificat Ingress par défaut pour mettre en miroir le certificat dans l'espace de nom istio-system. Sans instance Secrets Manager, le certificat Ingress par défaut dans l'espace de nom default est automatiquement mis à jour. Toutefois, vous êtes responsable de la mise à jour régulière du certificat dans l'espace de nom istio-system à l'aide des commandes kubectl ou d'une autre méthode de rotation.
J'ai créé des secrets qui font référence au certificat Ingress par défaut, mais je n'ai pas créé et enregistré d'instance Secrets Manager. Comment gérer mes secrets?
Si vous n'enregistrez pas d'instance Secrets Manager, IBM Cloud Kubernetes Service ne met à jour que automatiquement le secret Ingress par défaut. Vous êtes responsable de la gestion des autres secrets à l'aide des commandes kubectl ou d'une autre méthode de rotation. Si vous disposez de secrets qui font référence au certificat Ingress par défaut, vous devez les supprimer à l'aide de ibmcloud ks ingress secret rm.
Quelle est la différence entre les commandes de l'interface de ligne de commande ibmcloud ks ingress instance et les commandes de l'interface de ligne de commande ibmcloud ks ingress secret ?
Il existe deux ensembles de commandes CLI qui fonctionnent directement avec des instances Secrets Manager dans IBM Cloud Kubernetes Service: les commandes ibmcloud ks ingress secret et les commandes ibmcloud ks ingress instance. Les commandes ibmcloud ks ingress instance permettent de gérer vos instances Secrets Manager. Les commandes ibmcloud ks ingress secret sont utilisées pour gérer vos secrets Ingress qui sont stockés dans une instance Secrets Manager ou des secrets qui sont écrits directement dans le cluster.

Configuration de votre instance Secrets Manager

Suivez les étapes suivantes pour configurer Secrets Manager dans votre cluster.

Activer la communication de service à service

L'intégration d' Secrets Manager à votre cluster IBM Cloud Kubernetes Service nécessite une autorisation de communication entre services. Suivez les étapes de configuration de l'autorisation. Pour plus d'informations, consultez la section « Intégrations » sur Secrets Manager.

  1. Dans la console IBM Cloud, cliquez sur Gérer > Accès (IAM).
  2. Cliquez sur Autorisations.
  3. Cliquez sur Créer.
  4. Dans la liste des services Source, sélectionnez Kubernetes Service.
  5. Sélectionnez l'option permettant de définir la portée de l'accès à Toutes les ressources.
  6. Dans la liste des services cibles, sélectionnez Secrets Manager.
  7. Sélectionnez l'option permettant de définir la portée de l'accès à Toutes les ressources.
  8. Dans la section Accès au service, cochez l'option Manager.
  9. Cliquez sur Autoriser.

Créer une instance d' Secrets Manager

Pour créer une instance d' Secrets Manager via l'interface de ligne de commande (CLI) ou l'interface utilisateur (UI), consultez la documentation « Secrets Manager ». La mise en service complète de votre instance Secrets Manager peut prendre plusieurs minutes.

Lorsque vous créez une instance d' Secrets Manager, celle-ci n'est pas directement déployée dans votre cluster. Vous devez enregistrer votre nouvelle instance d' Secrets Manager auprès de votre cluster à l'étape suivante.

Enregistrez votre instance Secrets Manager dans votre cluster

Suivez les étapes suivantes pour enregistrer votre instance d' Secrets Manager e sur votre cluster.

  1. Obtenez le CRN de l'instance Secrets Manager. Dans la sortie, le CRN se trouve dans la ligne ID.

    ibmcloud resource service-instance <instance_name>
    

    Exemple de sortie

    Name:                  my-secrets-manager-instance
    ID:                    crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1a11111aaa1a1111aa1aa111:111a1111-11a1-111a-1111-1a1a1a1111a1:
    GUID:                  111a1111-11a1-111a-1111-1a1a1a1111a1
    Location:              us-south   
    Service Name:          secrets-manager   
    Service Plan Name:     standard   
    Resource Group Name:   default   
    State:                 active   
    Type:                  service_instance   
    Sub Type:                 
    Created at:            2022-06-08T12:46:45Z   
    Created by:            user@ibm.com   
    Updated at:            2022-06-08T12:54:45Z
    
  2. Enregistrez l'instance dans votre cluster. Indiquez le CRN d'instance trouvé à l'étape précédente.

    Si vous souhaitez enregistrer une instance dans un cluster et la définir comme l'instance par défaut, incluez l'option--is-default. Sinon, vous pouvez définir une instance par défaut avec la commandeibmcloud ks ingress instance default set.

    ibmcloud ks ingress instance register --cluster CLUSTER_NAME_OR_ID --crn INSTANCE_CRN [--is-default]
    
  3. Vérifiez que l'instance Secrets Manager a été enregistrée dans le cluster.

    ibmcloud ks ingress instance ls --cluster CLUSTER_NAME_OR_ID
    

    Exemple de sortie

    Name                                Type              Is Default   Status    Secret Group   CRN   
    my-secrets-manager-instance         secrets-manager   false        created   default        crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1a11111aaa1a1111aa1aa111:111a1111-11a1-111a-1111-1a1a1a1111a1::   
    

Vous pouvez spécifier une instance d' Secrets Manager et un groupe de secrets lors de la création d'un cluster à l'aide de l'option ibmcloud ks cluster create classic ou ibmcloud ks cluster create vpc-gen2 ». Utilisez l'option --sm-instance pour enregistrer une instance dans le cluster et l'option --sm-group pour spécifier un groupe de secrets pouvant accéder aux secrets sur le cluster. Voir la section « Enregistrement d'une instance d' Secrets Manager lors de la création d'un cluster ».

Définissez une instance Secrets Manager par défaut et régénérez vos secrets

Lorsque vous définissez une instance Secrets Manager par défaut, tous les nouveaux certificats d'entrée de sous-domaine sont stockés dans cette instance.

  1. Exécutez la commande pour définir la nouvelle instance par défaut. Vous pouvez éventuellement spécifier un groupe de secrets qui est autorisé à accéder aux secrets dans l'instance.

    ibmcloud ks ingress instance default set --cluster CLUSTER_NAME_OR_ID --name INSTANCE_NAME --secret-group SECRET_GROUP_ID
    
  2. Régénérez vos secrets. Tous les secrets gérés par IBM, tels que vos secrets Ingress par défaut, sont téléchargés dans la nouvelle instance par défaut. Ces secrets sont automatiquement mis à jour et le CRN est modifié pour référencer l'instance Secrets Manager.

    1. Répertoriez les sous-domaines nlb-dns de votre cluster.
        ibmcloud ks nlb-dns ls --cluster CLUSTER_NAME_OR_ID
        ```
    2. Pour chaque sous-domaine de votre cluster, exécutez la commande pour régénérer vos secrets gérés par IBM. Le CRN de ces secrets est mis à jour pour référencer le CRN de la nouvelle instance par défaut Secrets Manager.
    
        La régénération de vos secrets est limitée à cinq fois par semaine. Suivez attentivement les étapes de ce document, car les répéter peut vous amener à atteindre la limite. Si vous ne régénérez pas vos secrets, ou si vous avez atteint la limite, vos secrets seront téléchargés vers votre instance Secrets Manager lors du prochain cycle de renouvellement.
        {: important}
    
        ```sh {: pre}
        ibmcloud ks nlb-dns secret regenerate --cluster CLUSTER_NAME_OR_ID --nlb-subdomain NLB_SUBDOMAIN
        ```
    
    3. Vérifiez que vos secrets Ingress par défaut ont été régénérés. Dans la sortie, le CRN des secrets Ingress par défaut doit contenir `secrets-manager`.
    
        La régénération de vos secrets peut prendre plusieurs minutes. Au cours de ce processus, la colonne **Statut** de la sortie indique `regenerating` et passe à `created` lorsque la régénération est terminée.
        {: note}
    
        ```sh {: pre}
        ibmcloud ks ingress secret ls --show-crn --cluster CLUSTER_NAME_OR_ID
        ```
        Exemple de sortie
    
        ```sh {: screen}
        Name                                Namespace   Expiry              Domains                                Status    Type   CRN
        secret-11111aa1a1a11aa1111111-000   default     3 months from now   secret-11111aa1a1a.us-s…domain.cloud   created   TLS    crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1:secret:a111aa11-11a1
        secret-22222aa2a2a22aa2222222-000   default     3 months from now   secret-22222aa2a2a.us-s…domain.cloud   created   TLS    crn:v1:bluemix:public:secrets-manager:us-south:a/2aa222aa2:secret:a222aa22-22a2   
        ```
    

Contrôle de l'accès à vos secrets avec des groupes de secrets

Avec Secrets Manager, vous pouvez utiliser des groupes de secrets pour contrôler qui a accès aux secrets de votre cluster. Un groupe de secrets peut être affecté à un groupe d'accès IAM afin que seuls des utilisateurs sélectionnés ou des ID de service puissent accéder aux secrets du groupe de secrets. Pour plus d'informations, voir Organisation de vos secrets.

Enregistrement d'une instance d' Secrets Manager lors de la création d'un cluster

Si vous créez un nouveau cluster Classic ou VPC, vous pouvez associer une instance Secrets Manager et un groupe de secrets existants à ce cluster lors de sa création. Les secrets du cluster sont stockés dans l'instance d' Secrets Manager s et appliqués au groupe de secrets.

L'instance « Secrets Manager » enregistrée lors de la création du cluster ne devient pas automatiquement l'instance par défaut « Secrets Manager ». Vous devez toujours définir l'instance par défaut manuellement.

Si vous créez un cluster dans l'interface de ligne de commande avec ibmcloud ks cluster create classic ou ibmcloud ks cluster create vpc-gen2, vous pouvez spécifier une instance Secrets Manager ou un groupe de secrets avec les options de commande suivantes:

  • --sm-instance: utilisez cette option pour enregistrer une instance Secrets Manager dans le cluster en spécifiant le CRN de l'instance. Pour trouver le CRN d'une instance d' Secrets Manager, exécutez ibmcloud resource service-instance <name_of_instance> ou accédez à votre liste de ressources dans l'interface utilisateur et cliquez sur l'instance.
  • --sm-group: utilisez cette option pour spécifier l'ID du groupe de secrets. Pour trouver l'ID de groupe de secrets, exécutez ibmcloud secrets-manager secret-groups.

Si vous créez un cluster dans l'interface utilisateur, procédez comme suit pour spécifier une instance Secrets Manager ou un groupe de secrets:

  1. Dans la section Intégrations de la page de création de cluster, sélectionnez l'option permettant d'activer Secrets Manager.
  2. Dans le menu déroulant InstanceSecrets Manager, sélectionnez l'instance que vous souhaitez enregistrer dans le cluster. Si aucune instance n'est disponible, créez-en une.
  3. Dans le menu déroulant GroupeSecrets Manager, sélectionnez le groupe de secrets à appliquer.
  4. Créez le cluster.
  5. Vérifiez que l'instance Secrets Manager est enregistrée dans le cluster.
    1. Lorsque votre cluster est entièrement provisionné, cliquez dessus pour afficher ses détails. Sous Intégrations, recherchez l'en-tête Secrets Manager et cliquez sur Gérer.
    2. Dans le panneau latéral, vérifiez que l'instance correcte est répertoriée sous Instances Secrets Manager enregistrées.
    3. Pour enregistrer des instances supplémentaires dans le cluster, cliquez sur Enregistrer des instances.