Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Azure Key Vault-Anbieter für Secrets Store Container Storage Interface (CSI)-Treiber ermöglicht die sichere und automatisierte Verwaltung von geheimen Schlüsseln in Azure Kubernetes Service (AKS). Dieser Artikel enthält Anleitungen zum Konfigurieren des Anbieters, zur Problembehandlung der häufigen Probleme und zum Optimieren der Verwaltung von Geheimnissen in Ihrer AKS-Umgebung.
Voraussetzungen
Führen Sie die Schritte in den folgenden Artikeln aus, bevor Sie mit diesem Leitfaden fortfahren. Nachdem Sie diese Schritte ausgeführt haben, können Sie zusätzliche Konfigurationen anwenden oder eine Problembehandlung auf Ihrem AKS-Cluster ausführen.
Konfigurationsoptionen
Automatische Drehung verwalten
Sobald Sie die automatische Rotation für Azure Key Vault Secrets-Anbieter aktivieren, werden die Pod-Einbindung und das Kubernetes-Geheimnis, das im secretObjects Feld von SecretProviderClass definiert ist, aktualisiert. Dies erfolgt durch regelmäßiges Abfragen von Änderungen basierend auf dem definierten Rotationsabrufintervall. Das standardmäßige Rotationsabrufintervall beträgt zwei Minuten. Wenn ein Geheimnis nach der ersten Pod-Deployment im externen Geheimnisspeicher aktualisiert wird, werden sowohl das Kubernetes-Geheimnis als auch das Pod-Mount regelmäßig erneuert. Die Aktualisierungshäufigkeit und -methode hängt davon ab, wie Ihre Anwendung auf die geheimen Daten zugreift.
Mounten Sie das Kubernetes-Geheimnis als Volume: Verwenden Sie die Funktionen zur automatischen Rotation und Synchronisierung von K8s-Geheimnissen des Secrets Store CSI-Treibers. Die Anwendung muss auf Änderungen aus dem eingebundenen Kubernetes-Geheimnisvolume achten. Wenn der CSI-Treiber das Kubernetes-Geheimnis aktualisiert, werden die entsprechenden Volumeinhalte automatisch ebenfalls aktualisiert.
Die Anwendung liest die Daten aus dem Container-Dateisystem: Verwenden Sie die Rotationsfunktion des Secrets Store CSI-Treibers. Die Anwendung muss die Dateiänderung des vom CSI-Treiber eingebundenen Volumes beachten.
Verwenden Sie den Kubernetes-Schlüssel für eine Umgebungsvariable: Starten Sie den Pod neu, um den neuesten geheimen Schlüssel als Umgebungsvariable abzurufen. Verwenden Sie ein Tool, wie etwa Reloader, um Änderungen des synchronisierten Kubernetes-Geheimnisses zu beobachten und rollierende Upgrades auf Pods auszuführen.
Um die automatische Rotation von Geheimnissen auf einem neuen AKS-Cluster mit dem Befehl
az aks createzu aktivieren und das Add-onenable-secret-rotationzu aktivieren, führen Sie den folgenden Befehl aus:az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keysUm einen vorhandenen AKS-Cluster zu aktualisieren, um die automatische Rotation von Geheimnissen mithilfe des
az aks addon updateBefehls und desenable-secret-rotationParameters zu aktivieren, führen Sie den folgenden Befehl aus:az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Synchronisieren von bereitgestelltem Inhalt mit einem Kubernetes-Geheimnis
Hinweis
Die YAML-Beispiele in diesem Abschnitt sind unvollständig. Sie müssen sie so ändern, dass die ausgewählte Methode zum Zugreifen auf Ihre Schlüsseltresoridentität unterstützt wird. Weitere Informationen finden Sie unter Bereitstellen einer Identität für den Zugriff auf den Azure Key Vault-Anbieter für den Secrets Store CSI-Treiber.
Sie können ein Kubernetes-Geheimnis erstellen, um den bereitgestellten Inhalt zu spiegeln. Ihre Geheimnisse werden synchronisiert, nachdem Sie einen Pod zum Einbinden gestartet haben. Wenn Sie die Pods löschen, die die Geheimnisse nutzen, wird auch Ihr Kubernetes-Geheimnis gelöscht.
Synchronisieren Sie eingebundene Inhalte mit einem Kubernetes-Geheimnis über das Feld secretObjects beim Erstellen einer SecretProviderClass, sodass der gewünschte Status des Kubernetes-Geheimnisses definiert wird, wie im folgenden Beispiel gezeigt. Stellen Sie sicher, dass der objectName im Feld secretObjects mit dem Dateinamen des eingebundenen Inhalts übereinstimmt. Wenn Sie stattdessen objectAlias verwenden, sollte Übereinstimmung mit dem Objektalias bestehen.
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: azure-sync
spec:
provider: azure
secretObjects: # [OPTIONAL] SecretObjects defines the desired state of synced Kubernetes secret objects
- data:
- key: username # data field to populate
objectName: foo1 # name of the mounted content to sync; this could be the object name or the object alias
secretName: foosecret # name of the Kubernetes secret object
type: Opaque # type of Kubernetes secret object (for example, Opaque, kubernetes.io/tls)
Festlegen einer Umgebungsvariable zum Verweisen auf Kubernetes-Geheimnisse
Hinweis
Das YAML-Beispiel zeigt, wie man über Umgebungsvariablen oder volume/volumeMount auf ein Geheimnis zugreifen kann. In der Regel verwendet eine Anwendung eine oder die andere Methode. Um jedoch ein Geheimnis über Umgebungsvariablen verfügbar zu machen, muss mindestens ein Pod das Geheimnis einbinden.
Verweisen Sie auf das neu erstellte Kubernetes-Geheimnis, indem Sie eine Umgebungsvariable in Ihrem Pod festlegen, wie im folgenden Beispielcode gezeigt.
kind: Pod
apiVersion: v1
metadata:
name: busybox-secrets-store-inline
spec:
containers:
- name: busybox
image: registry.k8s.io/e2e-test-images/busybox:1.29-1
command:
- "/bin/sleep"
- "10000"
volumeMounts:
- name: secrets-store01-inline
mountPath: "/mnt/secrets-store"
readOnly: true
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: foosecret
key: username
volumes:
- name: secrets-store01-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "azure-sync"
Migrieren von Open-Source zu AKS-verwaltetem Secrets Store CSI-Treiber
Deinstallieren Sie den open-source Secrets Store CSI-Treiber mit dem folgenden
helm deleteBefehl:helm delete <release name>Tipp
Wenn Sie den Treiber und den Provider mithilfe von Bereitstellungs-YAML-Dateien installiert haben, können Sie die Komponenten mithilfe des folgenden
kubectl deleteBefehls löschen:# Delete AKV provider pods from Linux nodes kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer.yaml # Delete AKV provider pods from Windows nodes kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer-windows.yamlAktualisieren Sie Ihren vorhandenen AKS-Cluster mit dem Feature mithilfe des
az aks enable-addonsBefehls:az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Zugreifen auf Metriken
Sie können den Status und die Leistung des Azure Key Vault-Anbieters für den Secrets Store CSI Driver überwachen, indem Sie Metriken sammeln, die verfügbar gemacht werden. Diese Metriken bieten Einblicke in Anforderungsdauern, Fehlerraten und den Gesamtbetrieb der Anbieter- und Treiberkomponenten, die Ihnen bei der Behandlung von Problemen helfen und die geheime Verwaltung Ihres AKS-Clusters optimieren.
Metriken werden über Prometheus von Port 8898 aus bereitgestellt, doch ist dieser Port nicht standardmäßig außerhalb des Pods zugänglich. Greifen Sie mithilfe des kubectl port-forward Befehls auf die Metriken über "localhost" zu:
kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Diese Metriken helfen Ihnen, die Leistung und Zuverlässigkeit des Azure Key Vault-Anbieters zu überwachen, einschließlich Anforderungslatenz und Fehlernachverfolgung für Key Vault- und gRPC-Vorgänge.
| Metrik | BESCHREIBUNG | Tags |
|---|---|---|
| keyvault_request | Die Verteilung der für das Abrufen vom Schlüsseltresor benötigten Zeit. |
os_type=<runtime os>, , provider=azureobject_name=<keyvault object name>, , object_type=<keyvault object type>error=<error if failed> |
| grpc_request | Die Verteilung der für die gRPC-Anforderungen benötigten Zeit |
os_type=<runtime os>, , provider=azuregrpc_method=<rpc full method>, , grpc_code=<grpc status code>grpc_message=<grpc status message> |
Problembehandlung
Schritte zur Problembehandlung finden Sie unter Problembehandlung für Azure Key Vault-Anbieter für Secrets Store CSI-Treiber.
Nächste Schritte
Weitere Informationen zum Azure Key Vault-Anbieter für den Secrets Store CSI-Treiber finden Sie in den folgenden Ressourcen: