Secrets requis
- Mise à jour2026-07-09
- Temps de lecture : 11 minute(s)
Les secrets sont des objets Kubernetes qui permettent de stocker des informations confidentielles.
Une bonne gestion des secrets est essentielle pour maintenir la sécurité de votre SystemLink Enterprise déploiement. Vous devez créer des secrets avant de déployer SystemLink Enterprise. Vous devez gérer les secrets conformément aux politiques de sécurité de votre organisation.
Cette section décrit les besoins secrets SystemLink Enterprise et fournit des conseils sur la gestion sécurisée des secretsSystemLink Enterprise.
Les secrets mentionnés dans cette rubrique sont requis et sont de type Opaque (sauf indication contraire).
Gestion sécurisée des secrets
Vous pouvez gérer les secrets en utilisant deux approches principales :
- Helm-Managed Secrets: Définissez des secrets dans le fichier systemlink-secrets.yaml. Vous déployez des secrets sur le cluster Kubernetes dans le cadre de l'installation Helm. Cette approche est plus simple à configurer mais nécessite des étapes supplémentaires pour crypter le fichier des secrets pour un stockage sécurisé dans le contrôle de version.
- Gestion des secrets externes : stockez et gérez les secrets dans un système de gestion des secrets externe tel que HashiCorp Vault, AWS Secrets Manager ou Azure Key Vault. Les secrets sont synchronisés au cluster Kubernetes en utilisant des outils tels que l'opérateur de secrets externes. Cette approche permet une gestion centralisée des secrets.
Secrets gérés par Helm avec fichiers de valeurs chiffrées
Lorsque vous utilisez Helm pour gérer des secrets, configurez le paramètre global.deploySecrets à vrai dans systemlink-values.yaml. Définissez les secrets dans le fichier systemlink-secrets.yaml et déployez-les sur le cluster pendant l'installation ou la mise à niveau Helm.
Pour stocker en toute sécurité le fichier systemlink-secrets.yaml dans le contrôle de version, vous devez le crypter. Une approche consiste à utiliser le plug-in Helm Secrets avec Mozilla SOPS (Secrets OPerationS).
Utilisation de Helm Secrets et Mozilla SOPS :Le plug-in Helm Secrets s’intègre à Mozilla SOPS pour crypter et décrypter les fichiers de valeurs Helm. SOPS prend en charge plusieurs backends de cryptage, y compris AWS KMS, Azure Key Vault, Google Cloud KMS et PGP.
Pour utiliser Helm Secrets :
- Installez le plug-in Helm Secrets :
helm plugin install https://github.com/jkroepke/helm-secrets --version <version>
- Installez Mozilla SOPS en suivant les instructions d'installation SOPS.
- Configurez votre backend de cryptage (AWS KMS, Azure Key Vault, GCP KMS ou PGP). Reportez-vous à la documentation SOPS pour plus de détails sur la configuration.
- Cryptez votre fichier systemlink-secrets.yaml :
helm secrets encrypt systemlink-secrets.yaml
- Déployez SystemLink Enterprise en utilisant mise-à-niveau de helm secrets plutôt que des commandes mise-à-niveau de helm. Le plug-in Helm Secrets décrypte automatiquement le fichier de valeurs chiffrées pendant le déploiement.
Vous pouvez valider le fichier systemlink-secrets.yaml chiffré en toute sécurité dans le contrôle de version.
Outils de gestion de secrets externes
Les outils de gestion de secrets externes fournissent un stockage et une gestion centralisés des secrets en dehors du cluster Kubernetes. Les secrets sont synchronisés avec Kubernetes en utilisant des opérateurs ou des agents. Lorsque vous utilisez la gestion de secrets externes, définissez le paramètre global.deploySecrets à faux dans systemlink-values.yaml pour empêcher Helm de déployer des secrets.
L'opérateur de secrets externes est un opérateur Kubernetes qui synchronise les secrets des systèmes de gestion de secrets externes avec les objets Kubernetes Secret. L'opérateur supporte plusieurs backends, notamment HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager, etc.
Pour utiliser l'opérateur de secrets externes :
- Installez External Secrets Operator dans votre cluster Kubernetes en suivant le guide d'installation.
- Configurez une ressource SecretStore ou ClusterSecretStore qui définit la connexion à votre système de gestion de secrets externe. Reportez-vous à la documentation spécifique au gestionnaire pour plus de détails sur la configuration.
- Créez des ressources ExternalSecret pour chaque SystemLink Enterprise secret. L'opérateur synchronisera les secrets de votre système externe avec Kubernetes.
- Définissez global.deploySecrets: false dans systemlink-values.yaml.
- Déployez SystemLink Enterprise en utilisant Helm.
Meilleures pratiques de sécurité
Pour en savoir plus sur les secrets et la sécurité Kubernetes, reportez-vous à la documentation Kubernetes Secrets et aux Kubernetes Good Practices for Secrets.
Exemples de format de secret
Cette section fournit des exemples de génération et de visualisation de secrets dans Kubernetes. Les secrets sont stockés au format base64 dans le cluster.
Génération de clés de chiffrement :
Utilisez OpenSSL ou des outils similaires pour générer des clés aléatoires sûres cryptographiquement.
- Clés AES-256 (32 octets) :
openssl rand -base64 32
Exemple de sortie :
h8F3mK9pL2nQ7vR4tY6uE1wX5zA8bC0dD2fG4hJ6k=
- Clés AES-128 (16 octets) :
openssl rand -base64 16
Exemple de sortie :
mK9pL2nQ7vR4tY6u
- Clés AEAD (32 octets) :
openssl rand -base64 32
Exemple de sortie :
p2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT5vW8=
- Clés de signature SHA-256 (32-64 octets) :
openssl rand -base64 48
Exemple de sortie :
G4hJ6kL7mN9qR2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT4uV5wX8yA9b
- Clés API whitelistées (42 octets) :
openssl rand -base64 42
Exemple de sortie :
kL7mN9qR2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT4uV5w=
- MongoDB Replica Set Key :
Les clés du jeu de réplicas MongoDB sont utilisées pour authentifier les pods dans le cluster de base de données. Reportez-vous à la documentation MongoDB pour obtenir des instructions de génération de clés.
- RabbitMQ Erlang Cookie:
openssl rand -hex 32
Exemple de sortie :
a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
- Clés RSA pour Salt Master :
Utilisées pour la communication Salt Master avec les minions. Doivent être au format PKCS1.
# Generate RSA private key (4096-bit) openssl genrsa 4096 # Generate RSA public key from private key openssl rsa -in private_key.pem -pubout -outform PEM
Exemple de clé privée :
-----BEGIN RSA PRIVATE KEY----- MIIJKAIBAAKCAgEA1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL ... -----END RSA PRIVATE KEY-----
Exemple de clé publique :
-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1234567890abcdefgh ... -----END PUBLIC KEY-----
- Format de chaîne de connexion MongoDB :
Reportez-vous à Configuring MongoDB for SystemLink Enterprise pour obtenir des exemples et des formats de chaînes de connexion.
- Format de chaîne de connexion PostgreSQL :
Reportez-vous à PostgreSQL pour obtenir des exemples de chaînes de connexion et des détails de configuration.
- Affichage des secrets dans Kubernetes :
Utilisez kubectl pour afficher les secrets déployés sur le cluster. Les données secrètes sont encodées en base64 :
# View a secret in YAML format kubectl get secret webserver-session -n systemlink -o yaml
Exemple de sortie :
apiVersion: v1 kind: Secret metadata: name: webserver-apikey namespace: systemlink type: Opaque data: encryptionKey: aDhGM21LOXBMMm5RN3ZSNHRZNnVFMXdYNXpBOGJDMGQ= signatureKey: RDJmRzRoSjZrN21MOHBOOXFSMnNUNHVWNXdYOHlBOWI=
Décodage d'une valeur secrète :
kubectl get secret webserver-session -n systemlink -o jsonpath='{.data.encryptionKey}' | base64 -d - Création manuelle de secrets :
Si vous n'utilisez pas de secrets gérés par Helm, créez des secrets directement avec kubectl :
# Create a secret with multiple fields kubectl create secret generic oidc-secret \ --from-literal=clientId='my-client-id' \ --from-literal=clientSecret='my-client-secret' \ --from-literal=jwks='' \ -n systemlink
Secrets Image Pull
Le dépôt de conteneurs NI qui héberge SystemLink Enterprise est privé et requiert un accès par authentification. Les informations d'identification à SystemLink Enterprise doivent vous avoir été communiquées. Configurez les secrets d'extraction d'image pour SystemLink Enterprise à l'aide du tableau global.imagePullSecrets dans systemlink-values.yaml et systemlink-admin-values.yaml. Les secrets Image Pull doivent être conformes au format kubernetes.io/dockerconfigjson.
| Secret | Détails |
|---|---|
| niartifacts-secret | — |
Secrets d'authentification
| Secret | Détails |
|---|---|
| oidc-secret | Identifie SystemLink Enterprise auprès de votre fournisseur d'authentification OpenID Connect (OIDC) et comprend les champs suivants.
|
Clés API sur liste d’autorisation
- apiKey : séquence de 42 octets de chiffres aléatoires encodée en base64.
| Secret | Détails |
|---|---|
| alarmservice-apikey | — |
| alarmserviceroutineexecutor-apikey | — |
| assetservice-apikey | — |
| comments-apikey | — |
| dashboardhost-apikey | — |
| jupyterhub-apikey | — |
| nbexec-argo-workflow-apikey | |
| routineeventtrigger-apikey | — |
| routineexecutor-apikey | — |
| routinescheduletrigger-apikey | — |
| saltmaster-init-apikey | — |
| sessionmanagerservice-apikey | — |
| systemsmanagement-service-apikey | — |
| tageventprocessor-apikey | — |
| testmonitor-apikey | — |
| webserver-apikey | — |
| workorder-apikey | — |
Hachages de clés API sur liste d’autorisation
| Secret | Détails |
|---|---|
| userservices-apikey-whitelist | Permet de gérer la liste des clés API approuvées, sur liste d’autorisation. Ce secret contient un champ unique.
|
Clés de cryptage
| Secret | Détails |
|---|---|
| fileingestionservices-encryption-key |
Champ : encryptionKey Type de clé : AES-256 Encodage : Base64 |
| fileingestionservices-download-encryption-key |
Champ : encryptionKey Type de clé : AES-256 Encodage : Base64 |
| saltmaster-rsa-keys |
Champ : saltmaster-private-key Type : RSA Format : PKCS Champ : saltmaster-private-key Type : RSA Format : PKCS1 |
| systemsmanagementservice-dataprotection |
Champ : aesKey Type de clé : AES-128 Encodage : Base64 |
| systemsstateservice-dataprotection |
Champ : aesKey Type de clé : AES-128 Encodage : Base64 |
| taghistorian-continuation-token |
Champ : encryptionKey Type de clé : AEAD Longueur de clé : 32 octets Encodage : Base64 |
| userservices-continuation-token |
Champ : encryptionKey Type de clé : AEAD Longueur de clé : 32 octets Encodage : Base64 |
| webappservices-continuation-token |
Champ : encryptionKey Type de clé : AEAD Longueur de clé : 32 octets Encodage : Base64 |
| webserver-session |
Champ : encryptionKey Type de clé : AES-128 Encodage : Base64 Champ : signatureKey Type de clé : SHA-256 Encodage : Base64 |
Informations d'identification de tiers
Utilisez les secrets Kubernetes pour authentifier des services tiers, notamment MongoDB, PostgreSQL, Elasticsearch, Dremio et RabbitMQ.
Informations d'identification Elasticsearch
| Secret | Détails |
|---|---|
| sl-elasticsearch-filescdc-secret | Identifiants pour l'authentification avec l'instance Elasticsearch. Utilisé par les services fileingestion et fileingestioncdc. Ce secret contient le champ suivant :
|
Identifiants Dremio
| Secret | Détails |
|---|---|
| nidataframe-dremio-credentials | Contient les champs suivants :
|
| nidataframe-nessie-credentials | Jeton porteur pour l'authentification Dremio avec Nessie. Ce secret contient le champ suivant :
|
Identifiants Grafana
| Secret | Détails |
|---|---|
| grafana-login | Permet de définir un administrateur pour Grafana avec les champs suivants :
|
Identifiants MongoDB
Toutes les instances MongoDB stockent les informations d'identification dans un secret contenant les champs suivants :
- mongodb-root-password : mot de passe octroyant des droits superutilisateur au cluster de base de données.
- mongodb-passwords : tableau de mots de passe octroyant tous un accès complet à une base de données individuelle. Ces mots de passe ne peuvent pas comprendre de virgules ou autres caractères réservés, comme défini par la spécification URL IETF.Remarque Séparez les mots de passe par des virgules. N'utilisez pas d'espace blanc ni de séparateur de fin. Par exemple : motdepasse1,motdepasse2. Tous les secrets correspondant à des identifiants MongoDB, à l'exception de userservices-mongodb-credentials et saltmaster-mongodb-credentials, nécessitent un mot de passe.
- mongodb-replica-set-key : clé pour l'authentification des nœuds dans un jeu de réplicas MongoDB.
- mongodb-connection-string: la chaîne de connexion, y compris les informations d'identification, pour l'authentification à la base de données MongoDB.
| Secret | Détails |
|---|---|
| assetservice-mongodb-credentials | — |
| locationservice-mongodb-credentials | — |
| fileingestionservices-mongodb-credentials | — |
| nbexecservice-mongodb-credentials | — |
| nicomments-mongodb-credentials | — |
| nidataframe-mongodb-credentials | — |
| nispecificationmanagement-mongodb-credentials | Installation facultative |
| niworkorder-mongodb-credentials | Installation facultative |
| notification-mongodb-credentials | — |
| repositoryservice-mongodb-credentials | — |
| routines-mongodb-credentials | — |
| routinescheduletrigger-mongodb-credentials | — |
| systemsmanagementservice-mongodb-credentials | — |
| systemsstateservice-mongodb-credentials | — |
| saltmaster-mongodb-credentials | Nécessite deux mots de passe mongodb-passwords : l'un pour la base de données des minions et l'autre pour la base de données des pillars (dans cet ordre). |
| taghistoriandb-mongodb-credentials | — |
| tags-mongodb-credentials | — |
| userdata-mongodb-credentials | — |
| userservices-mongodb-credentials | Nécessite deux mongodb-passwords : l'un mot de passe pour la base de données des utilisateurs et l'autre mot de passe pour la base de données des clés (dans cet ordre). |
| webappservices-mongodb-credentials | — |
Identifiants PostgreSQL
| Secret | Détails |
|---|---|
| dashboardhost-postgres-secrets | Contient les champs suivants :
|
| testmonitorservicedb-connection | Présente deux formes avec les champs suivants, selon que la connexion à la base de données a été définie avec une chaîne de connexion ou en tant que paramètres. La chaîne de connexion comprend le champ suivant :
|
| dynamicformfields-postgres-connection | Présente deux formes avec les champs suivants, selon que la connexion à la base de données a été définie avec une chaîne de connexion ou en tant que paramètres. La chaîne de connexion comprend le champ suivant :
|
Informations d'identification du serveur proxy
| Secret | Détails |
|---|---|
| webserver-proxy-credentials | Identifiants pour l'authentification avec un serveur proxy afin d'accéder à un fournisseur OIDC. Ce secret contient les champs suivants :
|
Identifiants RabbitMQ
| Secret | Détails |
|---|---|
| rabbitmq-user | Identifiants pour l'authentification avec l'instance RabbitMQ. Ce secret contient les champs suivants :
|
| rabbitmq-erlang-cookie | Valeur de cookie Erlang. Ce secret contient un champ unique :
|
Identifiants Redis
| Secret | Détails |
|---|---|
| webserver-redis-credentials | Contient le champ suivant :
|
Amazon S3 Credentials
Une configuration SystemLink Enterprise requiert les secrets suivants lorsque vous utilisez un fournisseur de stockage de fichiers Amazon S3 ou compatible Amazon S3.
| Secret | Détails |
|---|---|
| feeds-s3-credentials | Contient les champs suivants :
|
| fileingestion-s3-credentials | Contient les champs suivants :
|
| nbexecservice-s3-credentials | Contient les champs suivants :
|
| nidataframe-s3-credentials | Contient les champs suivants :
|
Identifiants de stockage Azure
| Secret | Détails |
|---|---|
| feeds-azure-credentials | Contient les champs suivants :
|
| files-azure-credentials | Contient les champs suivants :
|
| nbexecservice-azure-credentials | Contient les champs suivants :
|
| nidataframe-azure-credentials | Contient les champs suivants :
|
Identifiants SMTP
| Secret | Détails |
|---|---|
| smtp-server-credentials | Contient les champs suivants :
|
Contenu associé
- SystemLink Enterprise dans AWS EKS
Amazon Elastic Kubernetes Service (EKS) est un service Kubernetes géré qui simplifie l'exécution de Kubernetes sur AWS sans avoir besoin d'installer et d'opérer votre propre plan de contrôle Kubernetes.
- SystemLink Enterprise dans Azure AKS
Azure Kubernetes Service (AKS) est un service Kubernetes géré qui simplifie l’exécution de Kubernetes sur Azure sans avoir besoin d’installer et d’utiliser votre propre plan de contrôle Kubernetes.
- generate_whitelisted_key.sh
- systemlink-secrets.yaml
- systemlink-values.yaml
- systemlink-admin-values.yaml
- Configuration de MongoDB pour SystemLink Enterprise
SystemLink Enterprise requiert une base de données MongoDB externe. Vous devez provisionner et gérer votre ou vos propres ensembles de répliques MongoDB avant de déployer SystemLink Enterprise. Cette section décrit les options de déploiement, les informations d'identification de base de données requises et la configuration des chaînes de connexion.
- PostgreSQL
PostgreSQL est requis pour le service hôte du tableau de bord, le service de moniteur de test et le service de champs de formulaire dynamiques.
- Validation de l'installation
Testez que SystemLink Enterprise est installé correctement.
- Rotation de secrets
Les SystemLink Enterprise secrets peuvent devoir être modifiés ou modifiés en fonction des changements apportés à votre environnement, aux politiques de sécurité de votre organisation ou à d'autres exigences opérationnelles. Différents secrets nécessitent différentes procédures pour assurer le bon fonctionnement après modification.