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 Integration eines Azure Key Vault als geheimen Speicher mit einem Azure Kubernetes Service (AKS)-Cluster über ein CSI-Volume.
Features
- Einbinden von Geheimnissen, Schlüsseln und Zertifikaten in einen Pod mithilfe eines CSI-Volumes.
- Unterstützung von CSI-Inlinevolumes.
- Unterstützung für das Einbinden mehrerer Geheimnisspeicherobjekte als einzelnes Volume.
- Unterstützt die Pod-Portabilität mit der
SecretProviderClassbenutzerdefinierten Ressourcendefinition (Custom Resource Definition, CRD). - Unterstützung von Windows-Containern.
- Synchronisieren mit Kubernetes-Geheimnissen.
- Unterstützung für die automatische Rotation eingebundener Inhalte und synchronisierter Kubernetes-Geheimnisse.
Einschränkungen
- Ein Container, der ein
ConfigMapoderSecretalssubPathVolume-Mount verwendet, erhält keine automatisierten Updates, wenn das Secret rotiert wird, was eine Limitierung von Kubernetes ist. Damit die Änderungen wirksam werden, muss die Anwendung die geänderte Datei neu laden, indem sie entweder nach Änderungen im Dateisystem sucht oder indem sie den Pod neu starten. Weitere Informationen finden Sie unter Bekannte Einschränkungen des Secrets Store CSI-Treibers. - Das Add-On erstellt in der Knotenressourcengruppe (
MC_) eine verwaltete Identität mit dem Namenazurekeyvaultsecretsprovider-xxxxxund weist sie dem Skalierungssatz für virtuelle Computer automatisch zu. Sie können diese verwaltete Identität oder Ihre eigene verwaltete Identität verwenden, um auf den Schlüsseltresor zuzugreifen. Es wird nicht unterstützt, um die Erstellung der Identität zu verhindern.
Voraussetzungen
- Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Überprüfen Sie, ob Ihre Version der Azure CLI 2.30.0 oder höher ist. Wenn es sich um eine frühere Version handelt, installieren Sie die neueste Version.
Netzwerk
- Wenn Sie isolierte Netzwerkcluster verwenden, empfiehlt es sich, privaten Endpunkt für den Zugriff auf Azure Key Vault einzurichten.
- Wenn der Cluster einen ausgehenden Typ
userDefinedRoutingaufweist und ein Firewallgerät verwendet, das ausgehenden Datenverkehr basierend auf Domänennamen steuern kann, stellen Sie sicher, dass die erforderlichen ausgehenden Netzwerkregeln und FQDNs zugelassen sind. - Wenn Sie den Eingang im Cluster einschränken, stellen Sie sicher, dass die Ports 9808 und 8095 geöffnet sind.
Rollen
- In diesem Artikel wird die Rolle Key Vault Secrets Officer verwendet, um Ihrem Konto die Berechtigung zum Erstellen eines Secrets im Schlüsseltresor zu erteilen.
- Im Artikel zur Bereitstellung des Azure Key Vault-Zugriffs benötigt die Identität, die mit der
SecretProviderClassverwendet wird, Key Vault-Zertifikatbenutzer, um aufkeycertificatezuzugreifen, und Key Vault-Secret-Benutzer, um auf densecretObjekttyp zuzugreifen.
Erstellen oder Aktualisieren eines AKS-Clusters
Erstellen Sie einen AKS-Cluster mit dem Azure Key Vault-Anbieter zur Unterstützung des Secrets Store CSI Driver.
Erstellen Sie Variablen, die in den Befehlen zum Erstellen eines AKS-Clusters und eines Key Vault verwendet werden.
export RANDOM_STRING=$(printf '%05d%05d' "$RANDOM" "$RANDOM") export KEYVAULT_NAME=myKeyVault${RANDOM_STRING} export RESOURCE_GROUP=myResourceGroup export CLUSTER_NAME=myAKSCluster export LOCATION=eastus2Azure Key Vault-Namen müssen global eindeutig, alphanumerisch einschließlich Bindestrichen und 3-24 Zeichen sein. Der Name des Schlüsseltresors verkettet den Wert der
KEYVAULT_NAME-Variablen mit der 10-stelligen Zeichenfolge dermyKeyVault-VariablenRANDOM_STRING.Erstellen Sie mithilfe des Befehls
az group createeine Azure-Ressourcengruppe.az group create --name $RESOURCE_GROUP --location $LOCATIONVerwenden Sie den Befehl
az aks createmit dem Parameter--enable-addons azure-keyvault-secrets-provider, um einen AKS-Cluster mit Azure Key Vault Provider for Secrets Store CSI-Treiber zu erstellen.Der
--enable-addons-Parameter erstellt eine vom Benutzer zugewiesene verwaltete Identität namensazurekeyvaultsecretsprovider-xxxx, die Sie zum Authentifizieren bei Ihrem Schlüsseltresor verwenden können. Die verwaltete Identität wird in der Knotenressourcengruppe (MC_) gespeichert und automatisch dem Skalierungssatz für virtuelle Computer zugewiesen. Sie können diese verwaltete Identität oder Ihre eigene verwaltete Identität verwenden, um auf den Schlüsseltresor zuzugreifen. Es wird nicht unterstützt, um die Erstellung der Identität zu verhindern.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --enable-addons azure-keyvault-secrets-provider \ --generate-ssh-keysTipp
Wenn Sie Microsoft Entra Workload ID verwenden möchten, muss der
az aks create-Befehl die Parameter--enable-oidc-issuerund--enable-workload-identityenthalten.
Überprüfen der verwalteten Identität
Führen Sie die folgenden Schritte aus, um zu überprüfen, ob die verwaltete Identität erstellt und dem Virtual Machine Scale Set des Clusters zugewiesen wurde.
Überprüfen Sie, ob die verwaltete Identität erstellt und dem Cluster mithilfe des
az aks showBefehls zugewiesen wurde.az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query addonProfiles{ "azureKeyvaultSecretsProvider": { "config": { "enableSecretRotation": "false", "rotationPollInterval": "2m" }, "enabled": true, "identity": { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "resourceId": "/subscriptions/<subscriptionID>/resourcegroups/MC_myResourceGroup_myAKSCluster_eastus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/azurekeyvaultsecretsprovider-myakscluster" } } }Die
resourceIdEigenschaft zeigt die Ressourcengruppe und den Namen der Identitätazurekeyvaultsecretsprovider-myaksclusteran.Vergewissern Sie sich, dass die manged-Identität dem Virtual Machine Scale Set der Knotenressourcengruppe zugewiesen ist.
NODE_RG=$(az aks show \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --query nodeResourceGroup --output tsv) VMSS_NAME=$(az vmss list \ --resource-group $NODE_RG \ --query [].name --output tsv) az vmss show --name $VMSS_NAME --resource-group $NODE_RG --query '[id, identity]'Die Ausgabe zeigt die
Microsoft.Compute/virtualMachineScaleSetsRessourcen-ID des Virtual Machines Scale Set und die EigenschaftuserAssignedIdentitiesmit einer Ressourcen-ID fürazurekeyvaultsecretsprovider-myakscluster, die bestätigt, dass die Identität des Virtual Machine Scale Set zugewiesen ist.
Überprüfen der Installation des Azure Key Vault Provider for Secrets Store CSI-Treibers
Rufen Sie die Anmeldeinformationen des AKS-Clusters mit dem Befehl
az aks get-credentialsab.az aks get-credentials \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUPVerifizieren Sie, ob die Installation mittels des
kubectl get pods-Befehls abgeschlossen ist, der alle Pods mit densecrets-store-csi-driver- undsecrets-store-provider-azure-Labels imkube-system-Namespace auflistet.kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)' -o wideDas
o wide-Flag nimmt den Knoten, auf dem jeder Pod ausgeführt wird, in die Ausgabe auf.Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
NAME READY STATUS RESTARTS AGE NODE aks-secrets-store-csi-driver-4vpkj 3/3 Running 2 4m25s aks-nodepool1-12345678-vmss000002 aks-secrets-store-csi-driver-ctjq6 3/3 Running 2 4m21s aks-nodepool1-12345678-vmss000001 aks-secrets-store-csi-driver-tlvlq 3/3 Running 2 4m24s aks-nodepool1-12345678-vmss000000 aks-secrets-store-provider-azure-5p4nb 1/1 Running 0 4m21s aks-nodepool1-12345678-vmss000000 aks-secrets-store-provider-azure-6pqmv 1/1 Running 0 4m24s aks-nodepool1-12345678-vmss000001 aks-secrets-store-provider-azure-f5qlm 1/1 Running 0 4m25s aks-nodepool1-12345678-vmss000002
Erstellen einer Azure Key Vault-Instanz oder Verwenden einer vorhandenen
Erstellen oder aktualisieren Sie einen Schlüsseltresor mit Azure rollenbasierter Zugriffssteuerung (Azure RBAC), aktiviert mit dem Befehl az keyvault create oder az keyvault update mit der Kennzeichnung --enable-rbac-authorization.
Azure RBAC ist standardmäßig aktiviert, wenn Sie einen neuen Schlüsseltresor erstellen, auch wenn Sie den --enable-rbac-authorization Parameter nicht einschließen. Der Parameter wird benötigt, wenn Sie einen vorhandenen Schlüsseltresor aktualisieren, der Azure RBAC deaktiviert hat.
Weitere Informationen zu Schlüsseltresor-Berechtigungsmodellen und Azure RBAC finden Sie unter Bereitstellen des Zugriffs auf Schlüsseltresorschlüssel, Zertifikate und geheime Schlüssel mit einer rollenbasierten Azure-Zugriffssteuerung
Aktivieren Sie die Azure RBAC-Autorisierung für einen neuen Schlüsseltresor, oder aktualisieren Sie einen vorhandenen Schlüsseltresor.
Führen Sie den
az keyvault createBefehl aus, um einen neuen Schlüsseltresor mit aktiviertem Azure RBAC zu erstellen.az keyvault create \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --enable-rbac-authorizationFühren Sie den Befehl
az keyvault showaus, um zu überprüfen, ob Azure RBAC für den Schlüsseltresor aktiviert ist.az keyvault show \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.enableRbacAuthorizationDie Ausgabe sollte sein
true.Fügen Sie mithilfe des Befehls
az role assignment createeine Rollenzuweisung für Ihr Benutzerkonto für den Schlüsseltresorbereich hinzu, um im nächsten Schritt ein Schlüsseltresor-Secret hinzufügen zu können.Die Rolle "Key Vault Secrets Officer" mit eindeutiger ID
b86a8fe4-44ce-4948-aee5-eccb2c155cd7wird hinzugefügt, und Sie können den Namen oder den eindeutigen Bezeichner verwenden. Die Verwendung des eindeutigen Bezeichners der Rolle ist eine bewährte Methode, um Probleme zu vermeiden, wenn sich der Rollenname ändert.KEYVAULT_ID=$(az keyvault show \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --query id -o tsv) MYID=$(az ad signed-in-user show --query id --output tsv) az role assignment create \ --assignee-object-id $MYID \ --role "b86a8fe4-44ce-4948-aee5-eccb2c155cd7" \ --scope $KEYVAULT_ID \ --assignee-principal-type UserEs kann mehrere Minuten dauern, bis die Rollenzuweisung wirksam wird. Sie können überprüfen, ob die Rollenzuweisung mit dem folgenden Befehl erstellt wurde:
az role assignment list \ --assignee-object-id $MYID \ --scope $KEYVAULT_ID \ --query '[].{Role:roleDefinitionName, Scope:scope}' \ --output tableErstellen Sie mit dem Befehl
az keyvault secret setin dem Schlüsseltresor ein Nur-Text-Secret in dem Schlüsseltresor mit dem NamenExampleSecret.Ihr Key Vault kann Schlüssel, Geheimnisse und Zertifikate speichern. Der
valueParameter verwendet dieRANDOM_STRINGVariable, um einen eindeutigen Wert für den geheimen Schlüssel zu erstellen.az keyvault secret set \ --vault-name $KEYVAULT_NAME \ --name ExampleSecret \ --value MyAKSExampleSecret${RANDOM_STRING}Überprüfen Sie mit dem Befehl
az keyvault secret show, ob das Secret dem Schlüsseltresor hinzugefügt wurde.az keyvault secret show --vault-name $KEYVAULT_NAME --name ExampleSecret
Bereinigen von Ressourcen
Wenn Sie zum nächsten Artikel wechseln und diese Ressourcen benötigen, ignorieren Sie die folgenden Schritte. Andernfalls sollten Sie die in diesem Artikel erstellten Ressourcen löschen, wenn Sie fertig sind und nicht beabsichtigen, den nächsten Artikel fortzusetzen, um unnötige Kosten zu vermeiden.
Entfernen Sie die Anmeldeinformationen Ihres Clusters aus Ihrer lokalen .kube/config-Datei.
KUBE_CONTEXT=$(kubectl config current-context) kubectl config delete-context $KUBE_CONTEXTLöschen Sie die Ressourcengruppe und alle darin enthaltenen Ressourcen, einschließlich Ressourcen in der Knotenressourcengruppe (
MC_) mithilfe desaz group deleteBefehls.az group delete --name $RESOURCE_GROUP --yes --no-wait
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie den Azure Key Vault Provider for Secrets Store CSI-Treiber in einem AKS-Cluster verwenden. Bereitstellen einer Identität für den Zugriff auf den Azure-Schlüsseltresor. Um zu erfahren, wie das geht, fahren Sie mit dem nächsten Artikel fort.