Erforderliche Secrets
- Aktualisiert2026-07-09
- 9 Minute(n) Lesezeit
Secrets sind Kubernetes-Objekte, die zum Speichern sensibler Informationen verwendet werden.
Eine ordnungsgemäße Verwaltung von Secrets ist für die Aufrechterhaltung der Sicherheit Ihrer SystemLink Enterprise Bereitstellung von entscheidender Bedeutung. Sie müssen Secrets erstellen, bevor Sie SystemLink Enterprise bereitstellen. Sie sollten Secrets gemäß den Sicherheitsrichtlinien Ihrer Organisation verwalten.
In diesem Abschnitt werden die von SystemLink Enterprise benötigten Secrets beschrieben und Hinweise zur sicheren Verwaltung der Secrets von SystemLink Enterprise gegeben.
Die in diesem Thema aufgeführten Secrets sind erforderliche Secrets und weisen den Typ "Opaque" auf, sofern nicht anders angegeben.
Sicheres Verwalten von Secrets
Sie können Secrets mit zwei Hauptmethoden verwalten:
- Helm-verwaltete Secrets: Definieren Sie Secrets in der Datei systemlink-secrets.yaml. Sie verteilen Secrets als Teil der Helm-Installation an den Kubernetes-Cluster. Dieser Ansatz ist einfacher zu konfigurieren, erfordert jedoch zusätzliche Schritte, um die Secrets-Datei für die sichere Speicherung in der Versionsverwaltung zu verschlüsseln.
- Externe Secret-Verwaltung: Speichern und verwalten Sie Secrets in einem externen Secret-Management-System wie HashiCorp Vault, AWS Secrets Manager oder Azure Key Vault. Die Secrets werden mit Tools wie dem Operator für externe Secrets mit dem Kubernetes-Cluster synchronisiert. Dieser Ansatz bietet eine zentrale Verwaltung von Secrets.
Helm-verwaltete Secrets mit verschlüsselten Wertedateien
Wenn Sie Helm zur Verwaltung von Secrets verwenden, konfigurieren Sie den Parameter global.deploySecrets auf true in systemlink-values.yaml. Definieren Sie Secrets in der Datei systemlink-secrets.yaml und verteilen Sie diese während der Helm-Installation oder -Aktualisierung auf den Cluster.
Um die Datei systemlink-secrets.yaml sicher in der Versionsverwaltung zu speichern, müssen Sie sie verschlüsseln. Eine Möglichkeit ist die Verwendung des Helm Secrets Plugins mit Mozilla SOPS (Secrets OPerationS).
Verwendung von Helm Secrets und Mozilla SOPS:Das Helm Secrets Plugin integriert sich mit Mozilla SOPS, um Helm-Wertedateien zu verschlüsseln und zu entschlüsseln. SOPS unterstützt mehrere Verschlüsselungs-Backends, darunter AWS KMS, Azure Key Vault, Google Cloud KMS und PGP.
So verwenden Sie Helm Secrets:
- Installieren Sie das Helm Secrets Plugin:
helm plugin install https://github.com/jkroepke/helm-secrets --version <version>
- Installieren Sie Mozilla SOPS gemäß der SOPS Installationsanweisungen.
- Konfigurieren Sie Ihr Verschlüsselungs-Backend (AWS KMS, Azure Key Vault, GCP KMS oder PGP). Einzelheiten zur Konfiguration finden Sie in der SOPS Dokumentation.
- Verschlüsseln Sie Ihre Datei systemlink-secrets.yaml:
helm secrets encrypt systemlink-secrets.yaml
- Verteilen Sie SystemLink Enterprise mit dem Befehl helm secrets upgrade anstelle des Befehls helm upgrade. Das Helm Secrets Plugin entschlüsselt die verschlüsselte Wertedatei während der Bereitstellung automatisch.
Sie können die verschlüsselte Datei systemlink-secrets.yaml sicher in der Versionsverwaltung einchecken.
Tools zur Verwaltung externer Secrets
Externe Secret-Management-Tools ermöglichen eine zentrale Speicherung und Verwaltung von Secrets außerhalb des Kubernetes-Clusters. Secrets werden mithilfe von Operatoren oder Agenten mit Kubernetes synchronisiert. Wenn Sie externe Secret-Verwaltung verwenden, setzen Sie den Parameter global.deploySecrets in systemlink-values.yaml auf false, um zu verhindern, dass Helm Secrets verteilt.
Der Operator für externe Secrets ist ein Kubernetes-Operator, der Secrets von externen Secret-Management-Systemen mit Kubernetes-Secret-Objekten synchronisiert. Der Betreiber unterstützt mehrere Backends wie HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager und andere.
So verwenden Sie den Operator für externe Secrets:
- Installieren Sie den Operator für externe Secrets in Ihrem Kubernetes-Cluster entsprechend der Installationsanleitung.
- Konfigurieren Sie eine SecretStore- oder ClusterSecretStore-Ressource, die die Verbindung zu Ihrem externen Secret-Management-System definiert. Einzelheiten zur Konfiguration finden Sie in der anbieterspezifischen Dokumentation.
- Erstellen Sie für jedes SystemLink Enterprise Secret Ressourcen. Der Operator synchronisiert die Secrets von Ihrem externen System mit Kubernetes.
- Set global.deploySecrets: false in systemLink-values.yaml.
- Verteilen Sie SystemLink Enterprise mit Helm.
Best Practices für Sicherheit
Weitere Informationen zu Kubernetes Secrets und Sicherheit finden Sie in der Dokumentation zu Kubernetes Secrets und in den Kubernetes Best Practices für Secrets.
Beispiele für Secret-Formate
In diesem Abschnitt finden Sie Beispiele zum Erzeugen und Anzeigen von Secrets in Kubernetes. Secrets werden im base64-kodierten Format im Cluster gespeichert.
Verschlüsselungsschlüssel erzeugen:
Verwenden Sie OpenSSL oder ähnliche Tools, um kryptographisch sichere Zufallsschlüssel zu erzeugen.
- AES-256-Schlüssel (32 Byte):
openssl rand -base64 32
Beispielausgabe:
h8F3mK9pL2nQ7vR4tY6uE1wX5zA8bC0dD2fG4hJ6k=
- AES-128-Schlüssel (16 Byte):
openssl rand -base64 16
Beispielausgabe:
mK9pL2nQ7vR4tY6u
- AEAD-Schlüssel (32 Byte):
openssl rand -base64 32
Beispielausgabe:
p2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT5vW8=
- SHA-256 Signaturschlüssel (32-64 Byte):
openssl rand -base64 48
Beispielausgabe:
G4hJ6kL7mN9qR2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT4uV5wX8yA9b
- Zulässige API-Schlüssel (42 Byte):
openssl rand -base64 42
Beispielausgabe:
kL7mN9qR2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT4uV5w=
- MongoDB-replica-set-key:
MongoDB-Replikat-Set-Schlüssel werden zur Authentifizierung von Pods im Datenbank-Cluster verwendet. Hinweise zur Schlüsselerzeugung finden Sie in der MongoDB-Dokumentation.
- RabbitMQ Erlang Cookie:
openssl rand -hex 32
Beispielausgabe:
a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
- RSA-Schlüssel für Salt Master:
Wird für Salt-Master-Kommunikation mit Minions verwendet. Muss im PKCS1-Format vorliegen.
# 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
Beispiel für privaten Schlüssel:
-----BEGIN RSA PRIVATE KEY----- MIIJKAIBAAKCAgEA1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL ... -----END RSA PRIVATE KEY-----
Beispiel für öffentlichen Schlüssel:
-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1234567890abcdefgh ... -----END PUBLIC KEY-----
- MongoDB-Verbindungs-String-Format:
Beispiele und Formate für Verbindungs-Strings finden Sie unter Konfiguration von MongoDB für SystemLink Enterprise.
- PostgreSQL-Verbindungs-String-Format:
Beispiele für Verbindungs-Strings und Konfigurationsdetails finden Sie unter PostgreSQL.
- Anzeigen von Secrets in Kubernetes:
Verwenden Sie kubectl, um die im Cluster übertragenen Secrets anzuzeigen. Secret-Daten sind base64-kodiert:
# View a secret in YAML format kubectl get secret webserver-session -n systemlink -o yaml
Beispielausgabe:
apiVersion: v1 kind: Secret metadata: name: webserver-apikey namespace: systemlink type: Opaque data: encryptionKey: aDhGM21LOXBMMm5RN3ZSNHRZNnVFMXdYNXpBOGJDMGQ= signatureKey: RDJmRzRoSjZrN21MOHBOOXFSMnNUNHVWNXdYOHlBOWI=
Secret-Wert dekodieren:
kubectl get secret webserver-session -n systemlink -o jsonpath='{.data.encryptionKey}' | base64 -d - Manuelles Erstellen von Secrets:
Wenn Sie keine Helm-verwalteten Secrets verwenden, erstellen Sie Secrets direkt mit 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
Image-Pull-Secrets
Das NI-Container-Repository, das SystemLink Enterprise hostet, ist privat und erfordert einen authentifizierten Zugriff. Sie haben Zugangsdaten für den Zugang zu SystemLink Enterprise erhalten. Konfigurieren Sie Image-Pull-Secrets für SystemLink Enterprise mit dem Array global.imagePullSecrets in systemlink-values.yaml und systemlink-admin-values.yaml. Die Image-Pull-Secrets müssen dem Format kubernetes.io/dockerconfigjson entsprechen.
| Secret | Details |
|---|---|
| niartifacts-secret | — |
Authentifizierungs-Secrets
| Secret | Details |
|---|---|
| oidc-secret | Identifiziert SystemLink Enterprise bei Ihrem OpenID Connect-Authentifizierungsanbieter und umfasst die folgenden Felder:
|
Zulässige API-Schlüssel
- apiKey: Eine 42-Byte-Zufallszahlenfolge, die base64-codiert ist.
| Secret | Details |
|---|---|
| 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 | — |
Zulässige API-Key-Hashes
| Secret | Details |
|---|---|
| userservices-apikey-whitelist | Verwaltet die Liste der autorisierten zulässigen API-Schlüssel. Dieses Secret enthält nur ein einziges Feld:
|
Encryption-Schlüssel
| Secret | Details |
|---|---|
| fileingestionservices-encryption-key |
Feld: encryptionKey Key Type: AES-256 Kodierung: Base64 |
| fileingestionservices-download-encryption-key |
Feld: encryptionKey Key Type: AES-256 Kodierung: Base64 |
| saltmaster-rsa-keys |
Feld: saltmaster-private-key Type: RSA Format: PKCS Feld: saltmaster-private-key Type: RSA Format: PKCS1 |
| systemsmanagementservice-dataprotection |
Feld: aesKey Key Type: AES-128 Kodierung: Base64 |
| systemsstateservice-dataprotection |
Feld: aesKey Key Type: AES-128 Kodierung: Base64 |
| taghistorian-continuation-token |
Feld: encryptionKey Key Type: AEAD Schlüssellänge: 32 Byte Kodierung: Base64 |
| userservices-continuation-token |
Feld: encryptionKey Key Type: AEAD Schlüssellänge: 32 Byte Kodierung: Base64 |
| webappservices-continuation-token |
Feld: encryptionKey Key Type: AEAD Schlüssellänge: 32 Byte Kodierung: Base64 |
| webserver-session |
Feld: encryptionKey Key Type: AES-128 Kodierung: Base64 Feld: signatureKey Key Type: SHA-256 Kodierung: Base64 |
Zugangsdaten von Drittanbietern
Mit Kubernetes-Secrets können Sie Dienste von Drittanbietern wie MongoDB, PostgreSQL, Elasticsearch, Dremio und RabbitMQ authentifizieren.
Elasticsearch-Zugangsdaten
| Secret | Details |
|---|---|
| sl-elasticsearch-filescdc-secret | Die Zugangsdaten für die Authentifizierung bei der Elasticsearch-Instanz. Wird von fileingestion- und fileingestioncdc-Diensten verwendet. Dieses Secret hat das folgende Feld.
|
Dremio-Zugangsdaten
| Secret | Details |
|---|---|
| nidataframe-dremio-credentials | Umfasst die folgenden Felder:
|
| nidataframe-nessie-credentials | Inhaber-Token für die Dremio-Authentifizierung bei Nessie. Dieses Secret hat das folgende Feld.
|
Grafana-Zugangsdaten
| Secret | Details |
|---|---|
| grafana-login | Definiert einen Administratorbenutzer für Grafana und umfasst die folgenden Felder:
|
MongoDB-Zugangsdaten
Alle MongoDB-Instanzen speichern Zugangsdaten in einem Secret, das die folgenden Felder umfasst:
- mongodb-root-password: Ein Passwort, das Stammverzeichniszugriff auf den Datenbank-Cluster gewährt.
- mongodb-passwords: Ein Array aus Passwörtern, die jeweils vollen Zugriff auf eine einzelne Datenbank gewähren. Diese Passwörter dürfen keine Kommas oder reservierten Zeichen enthalten, wie sie in der IETF-URL-Spezifikation definiert sind.Hinweis Trennen Sie Passwörter durch Kommas. Fügen Sie keine Leerzeichen und kein abschließendes Trennzeichen ein. Zum Beispiel: password1,password2. Alle MongoDB-Zugangs-Secrets außer userservices-mongodb-credentials und saltmaster-mongodb-credentials erfordern ein Passwort.
- mongodb-replica-set-key: Ein Schlüssel, der zum Authentifizieren von Knoten in einem MongoDB-Replikatsatz verwendet wird.
- mongodb-connection-string: Verbindungs-String, einschließlich Anmeldeinformationen, für die Authentifizierung bei der MongoDB-Datenbank.
| Secret | Details |
|---|---|
| assetservice-mongodb-credentials | — |
| locationservice-mongodb-credentials | — |
| fileingestionservices-mongodb-credentials | — |
| nbexecservice-mongodb-credentials | — |
| nicomments-mongodb-credentials | — |
| nidataframe-mongodb-credentials | — |
| nispecificationmanagement-mongodb-credentials | Optionale Installation |
| niworkorder-mongodb-credentials | Optionale Installation |
| notification-mongodb-credentials | — |
| repositoryservice-mongodb-credentials | — |
| routines-mongodb-credentials | — |
| routinescheduletrigger-mongodb-credentials | — |
| systemsmanagementservice-mongodb-credentials | — |
| systemsstateservice-mongodb-credentials | — |
| saltmaster-mongodb-credentials | Erfordert zwei Passwörter (mongodb-passwords): ein Passwort für die "Minions"- und ein Passwort für die "Pillars"-Datenbanken, in dieser Reihenfolge. |
| taghistoriandb-mongodb-credentials | — |
| tags-mongodb-credentials | — |
| userdata-mongodb-credentials | — |
| userservices-mongodb-credentials | Erfordert zwei Passwörter (mongodb-passwords): ein Passwort für den Benutzer und ein Passwort für die Schlüsseldatenbanken. |
| webappservices-mongodb-credentials | — |
Anmeldedaten PostgreSQL
| Secret | Details |
|---|---|
| dashboardhost-postgres-secrets | Umfasst die folgenden Felder:
|
| testmonitorservicedb-connection | Verfügt über zwei Formulare mit den folgenden Feldern, je nachdem, ob die Datenbankverbindung mit einem Verbindungs-String oder als Parameter definiert wurde. Der Verbindungs-String umfasst das folgende Feld:
|
| dynamicformfields-postgres-connection | Verfügt über zwei Formulare mit den folgenden Feldern, je nachdem, ob die Datenbankverbindung mit einem Verbindungs-String oder als Parameter definiert wurde. Der Verbindungs-String umfasst das folgende Feld:
|
Proxy-Server-Zugangsdaten
| Secret | Details |
|---|---|
| webserver-proxy-credentials | Die Zugangsdaten für die Authentifizierung bei einem Proxy-Server für den Zugriff auf einen OIDC-Anbieter. Dieses Secret umfasst die folgenden Felder:
|
RabbitMQ-Zugangsdaten
| Secret | Details |
|---|---|
| rabbitmq-user | Die Zugangsdaten für die Authentifizierung bei der RabbitMQ-Instanz. Dieses Secret umfasst die folgenden Felder:
|
| rabbitmq-erlang-cookie | Ein Erlang-Cookie-Wert. Dieses Secret umfasst nur ein Feld:
|
Redis-Zugangsdaten
| Secret | Details |
|---|---|
| webserver-redis-credentials | Umfasst das folgende Feld:
|
Amazon S3-Zugangsdaten
Eine SystemLink Enterprise-Konfiguration erfordert bei Verwendung eines Amazon S3- oder eines mit Amazon S3 kompatiblen Dateispeicherproviders folgende Secrets:
| Secret | Details |
|---|---|
| feeds-s3-credentials | Umfasst die folgenden Felder:
|
| fileingestion-s3-credentials | Umfasst die folgenden Felder:
|
| nbexecservice-s3-credentials | Umfasst die folgenden Felder:
|
| nidataframe-s3-credentials | Umfasst die folgenden Felder:
|
Azure Storage-Zugangsdaten
| Secret | Details |
|---|---|
| feeds-azure-credentials | Umfasst die folgenden Felder:
|
| files-azure-credentials | Umfasst die folgenden Felder:
|
| nbexecservice-azure-credentials | Umfasst die folgenden Felder:
|
| nidataframe-azure-credentials | Umfasst die folgenden Felder:
|
SMTP-Zugangsdaten
| Secret | Details |
|---|---|
| smtp-server-credentials | Umfasst die folgenden Felder:
|
Verwandte Inhalte
- SystemLink Enterprise in AWS EKS
Amazon Elastic Kubernetes Service (EKS) ist ein verwalteter Kubernetes-Dienst, der die Ausführung von Kubernetes auf AWS vereinfacht, ohne dass ein eigenes Kubernetes-Steuerflugzeug installiert und betrieben werden muss.
- SystemLink Enterprise in Azure AKS
Azure Kubernetes Service (AKS) ist ein verwalteter Kubernetes-Dienst, der die Ausführung von Kubernetes in Azure vereinfacht, ohne dass eine eigene Kubernetes-Steuerebene installiert und betrieben werden muss.
- generate_whitelisted_key.sh
- systemlink-secrets.yaml
- systemlink-values.yaml
- systemlink-admin-values.yaml
- Konfigurieren von MongoDB für SystemLink Enterprise
SystemLink Enterprise erfordert eine externe MongoDB-Datenbank. Sie müssen Ihre eigenen MongoDB-Replikatsätze bereitstellen und verwalten, bevor Sie SystemLink Enterprise bereitstellen. In diesem Abschnitt werden Verteilungsoptionen, erforderliche Datenbank-Zugangsdaten und die Konfiguration von Verbindungs-Strings beschrieben.
- PostgreSQL
PostgreSQL ist für den Dashboard-Host-Dienst, Testüberwachungsdienst und dynamische Formularfelder-Dienst erforderlich.
- Validieren der Installation
Testen Sie, ob SystemLink Enterprise korrekt installiert wurde.
- Rotierende Secrets
SystemLink Enterprise Secrets müssen möglicherweise aufgrund von Änderungen an Ihrer Umgebung, den Sicherheitsrichtlinien Ihres Unternehmens oder anderen betrieblichen Anforderungen geändert oder rotiert werden. Unterschiedliche Secrets erfordern unterschiedliche Verfahren, um den ordnungsgemäßen Betrieb nach der Änderung sicherzustellen.