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.
Im Istio-basierten Dienstgitter-Addon für Azure Kubernetes Service generiert die Istio-Zertifizierungsstelle standardmäßig ein selbstsigniertes Stammzertifikat und einen selbstsignierten Schlüssel und verwendet sie zum Signieren der Workloadzertifikate. Um den Stammzertifizierungsstellen-Schlüssel zu schützen, sollten Sie eine Stammzertifizierungsstelle verwenden, die offline auf einem sicheren Computer ausgeführt wird. Sie können die Stammzertifizierungsstelle verwenden, um Zwischenzertifikate für die Istio-Zertifizierungsstellen auszustellen, die in jedem Cluster ausgeführt werden. Eine Istio-Zertifizierungsstelle kann Workloadzertifikate mit dem von den Administratoren angegebenen Zertifikat und Schlüssel signieren und ein von den Administratoren angegebenes Stammzertifikat als Vertrauensanker an die Workloads verteilen. In diesem Artikel wird beschrieben, wie Sie Ihre eigenen Zertifikate und Schlüssel für die Istio-Zertifizierungsstelle im Istio-basierten Service Mesh Add-On für Azure Kubernetes Service einbringen können.
In diesem Artikel wird erklärt, wie Sie die Istio-Zertifizierungsstelle mit einem Stammzertifikat, einem Signierzertifikat und einem Schlüssel konfigurieren können, die als Eingaben unter Verwendung von Azure Key Vault für das auf Istio basierende Service Mesh-Add-On bereitgestellt werden.
Voraussetzungen
Überprüfen Sie die Azure CLI Version
Für das Add-on wird Azure CLI Version 2.57.0 oder höher benötigt. Sie können az --version ausführen, um die Version zu überprüfen. Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI.
Einrichten von Azure Key Vault
Sie benötigen eine Azure Key Vault-Ressource zum Bereitstellen des Zertifikats und der Schlüsseleingaben für das Istio-Add-On.
Sie müssen ein Stammzertifikat, Zwischenzertifikate, einen Zwischenschlüssel und die Zertifikatkette offline generieren. Die Schritte 1 bis 3 aus diesem Abschnitt veranschaulichen das Generieren dieser Dateien.
Erstellen Sie geheime Schlüssel in Azure Key Vault mithilfe der Zertifikate und des Schlüssels:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path-to-folder/cert-chain.pem>Aktivieren Sie Azure Key Vault Provider für den Secret Store CSI-Treiber für Ihren Cluster:
az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTERHinweis
Wenn Sie Zertifikate drehen, um zu steuern, wie schnell die Geheimnisse mit dem Cluster synchronisiert werden, können Sie den Parameter
--rotation-poll-intervalder Azure Key Vault Secrets Provider-Erweiterung verwenden. Beispiel:az aks addon update --resource-group $RESOURCE_GROUP --name $CLUSTER --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 20sWenn Ihr Key Vault Azure RBAC für das Berechtigungsmodell verwendet, befolgen Sie die Anweisungen here, um eine Azure Rolle des Key Vault Geheimen Benutzers für die vom Benutzer zugewiesene verwaltete Identität des Add-Ons zuzuweisen. Wenn Ihr Schlüsseltresor das Berechtigungsmodell mit Tresorzugriffsrichtlinie verwendet, können Sie alternativ die vom Benutzer zugewiesene verwaltete Identität des Add-Ons zum Zugriff auf die Azure Key Vault-Ressource unter Verwendung der Zugriffsrichtlinie autorisieren:
OBJECT_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query 'addonProfiles.azureKeyvaultSecretsProvider.identity.objectId' -o tsv) az keyvault set-policy --name $AKV_NAME --object-id $OBJECT_ID --secret-permissions get
Einrichten eines Istio-basierten Servicenetz-Add-Ons mit Plug-In-Zertifizierungsstellenzertifikaten
Aktivieren Sie das Istio-Servicenetz-Add-On für Ihren vorhandenen AKS-Cluster, während Sie auf die zuvor erstellten Azure Key Vault-Geheimnisse verweisen:
az aks mesh enable --resource-group $RESOURCE_GROUP --name $CLUSTER \ --root-cert-object-name root-cert \ --ca-cert-object-name ca-cert \ --ca-key-object-name ca-key \ --cert-chain-object-name cert-chain \ --key-vault-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$AKV_NAMEHinweis
Für vorhandene Cluster mit Istio-Add-On, das das von der Istio-Zertifizierungsstelle generierte selbstsignierte Stammzertifikat verwendet, wird der Wechsel zur Plug-In-Zertifizierungsstelle nicht unterstützt. Sie müssen das Netz für diese Cluster zuerst deaktivieren und dann wieder mit dem obigen Befehl aktivieren, um die Plug-In-Zertifizierungsstelleneingaben zu durchlaufen.
Überprüfen Sie, ob die Istio-Steuerungsebene die benutzerdefinierte Zertifizierungsstelle aufgenommen hat:
kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController | grep x509Die Ausgabe sollte in etwa wie folgt aussehen:
2023-11-06T15:49:15.493732Z info x509 cert - Issuer: "CN=Intermediate CA - A1,O=Istio,L=cluster-A1", Subject: "", SN: e191d220af347c7e164ec418d75ed19e, NotBefore: "2023-11-06T15:47:15Z", NotAfter: "2033-11-03T15:49:15Z" 2023-11-06T15:49:15.493764Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Intermediate CA - A1,O=Istio,L=cluster-A1", SN: 885034cba2894f61036f2956fd9d0ed337dc636, NotBefore: "2023-11-04T01:40:02Z", NotAfter: "2033-11-01T01:40:02Z" 2023-11-06T15:49:15.493795Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Root A,O=Istio", SN: 18e2ee4089c5a7363ec306627d21d9bb212bed3e, NotBefore: "2023-11-04T01:38:27Z", NotAfter: "2033-11-01T01:38:27Z"
Rotation der Zertifizierungsstelle
Sie müssen die Zertifizierungsstellen aus Sicherheits- und Richtliniengründen ggf. in regelmäßigen Abständen rotieren. In diesem Abschnitt erfahren Sie, wie Sie Rotationsszenarios für Zwischenzertifizierungsstellen und Stammzertifizierungsstellen behandeln.
Rotation der Zwischenzertifizierungsstelle
Sie können die Zwischenzertifizierungsstelle rotieren und gleichzeitig die Stammzertifizierungsstelle unverändert lassen. Aktualisieren Sie die geheimen Schlüssel in Azure Key Vault Ressource mit den neuen Zertifikat- und Schlüsseldateien:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>Warten Sie die Dauer von
--rotation-poll-intervalab. Überprüfen Sie, ob die Zertifikate auf dem Cluster basierend auf der neuen Zwischenzertifizierungsstelle aktualisiert wurden, die in der Azure Key Vault-Ressource aktualisiert wurde.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerDie Ausgabe sollte in etwa wie folgt aussehen:
2023-11-07T06:16:21.091844Z info Update Istiod cacerts 2023-11-07T06:16:21.091901Z info Using istiod file format for signing ca files 2023-11-07T06:16:21.354423Z info Istiod has detected the newly added intermediate CA and updated its key and certs accordingly 2023-11-07T06:16:21.354910Z info x509 cert - Issuer: "CN=Intermediate CA - A2,O=Istio,L=cluster-A2", Subject: "", SN: b2753c6a23b54d8364e780bf664672ce, NotBefore: "2023-11-07T06:14:21Z", NotAfter: "2033-11-04T06:16:21Z" 2023-11-07T06:16:21.354967Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Intermediate CA - A2,O=Istio,L=cluster-A2", SN: 17f36ace6496ac2df88e15878610a0725bcf8ae9, NotBefore: "2023-11-04T01:40:22Z", NotAfter: "2033-11-01T01:40:22Z" 2023-11-07T06:16:21.355007Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Root A,O=Istio", SN: 18e2ee4089c5a7363ec306627d21d9bb212bed3e, NotBefore: "2023-11-04T01:38:27Z", NotAfter: "2033-11-01T01:38:27Z" 2023-11-07T06:16:21.355012Z info Istiod certificates are reloadedDie Workloads erhalten Zertifikate von der Istio-Steuerungsebene, die standardmäßig 24 Stunden gültig sind. Wenn Sie die Pods nicht neu starten, erhalten alle Workloads basierend auf der neuen Zwischenzertifizierungsstelle in 24 Stunden neue untergeordnete Zertifikate. Wenn Sie erzwingen möchten, dass all diese Workloads sofort neue untergeordnete Zertifikate von der neuen Zwischenzertifizierungsstelle erhalten, müssen Sie die Workloads neu starten.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Rotation der Stammzertifizierungsstelle
Sie müssen Azure Key Vault-Geheimnisse mit der Stammzertifikatdatei mit der Verkettung der alten und neuen Stammzertifikate aktualisieren:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>Der Inhalt von
root-cert.pemfolgt diesem Format:-----BEGIN CERTIFICATE----- <contents of old root certificate> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <contents of new root certificate> -----END CERTIFICATE-----Überprüfen Sie die
istiod-Protokolle, sobald die Zertifikate mit dem Cluster synchronisiert wurden.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-systemErwartete Ausgabe:
2023-11-07T06:42:00.287916Z info Updating new ROOT-CA 2023-11-07T06:42:00.287928Z info update root cert and generate new dns certs 2023-11-07T06:42:00.288254Z info Update trust anchor with new root cert 2023-11-07T06:42:00.288279Z info trustBundle updating Source IstioCA with certs 2023-11-07T06:42:00.288298Z info Istiod has detected the newly added intermediate CA and updated its key and certs accordingly 2023-11-07T06:42:00.288303Z info Istiod certificates are reloadedSie müssen entweder 24 Stunden warten (Standardzeit für die Gültigkeit des untergeordneten Zertifikats) oder einen Neustart aller Workloads erzwingen. Auf diese Weise erkennen alle Workloads sowohl die alte als auch die neuen Zertifizierungsstellen für die mTLS-Überprüfung.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>Jetzt können Sie Azure Key Vault-Geheimnisse nur mit der neuen CA (ohne die alte CA) aktualisieren.
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>Überprüfen Sie die
istiod-Protokolle, sobald die Zertifikate mit dem Cluster synchronisiert wurden.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerErwartete Ausgabe:
2023-11-07T08:01:17.780299Z info x509 cert - Issuer: "CN=Intermediate CA - B1,O=Istio,L=cluster-B1", Subject: "", SN: 1159747c72cc7ac7a54880cd49b8df0a, NotBefore: "2023-11-07T07:59:17Z", NotAfter: "2033-11-04T08:01:17Z" 2023-11-07T08:01:17.780330Z info x509 cert - Issuer: "CN=Root B,O=Istio", Subject: "CN=Intermediate CA - B1,O=Istio,L=cluster-B1", SN: 2aba0c438652a1f9beae4249457023013948c7e2, NotBefore: "2023-11-04T01:42:12Z", NotAfter: "2033-11-01T01:42:12Z" 2023-11-07T08:01:17.780345Z info x509 cert - Issuer: "CN=Root B,O=Istio", Subject: "CN=Root B,O=Istio", SN: 3f9da6ddc4cb03749c3f43243a4b701ce5eb4e96, NotBefore: "2023-11-04T01:41:54Z", NotAfter: "2033-11-01T01:41:54Z"Anhand der in diesem Artikel gezeigten Beispielausgaben können Sie erkennen, dass von „Root A“ (beim Aktivieren des Add-Ons verwendet) zu „Root B“ gewechselt wurde.