Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W dodatku Service Mesh opartym na Istio dla usługi Azure Kubernetes Service urząd certyfikacji (CA) Istio domyślnie generuje główny certyfikat z podpisem własnym oraz klucz i używa ich do podpisywania certyfikatów obciążeń. Aby chronić klucz głównego urzędu certyfikacji, należy użyć głównego urzędu certyfikacji, który działa na bezpiecznej maszynie w trybie offline. Za pomocą głównego urzędu certyfikacji można wystawiać certyfikaty pośrednie do urzędów certyfikacji Istio, które działają w każdym klastrze. Urząd Certyfikacji Istio może podpisywać certyfikaty dla obciążeń przy użyciu certyfikatu i klucza określonego przez administratora oraz dystrybuować certyfikat główny, również określony przez administratora, do obciążeń jako korzeń zaufania. W tym artykule opisano, jak używać własnych certyfikatów i kluczy dla urzędu certyfikacji Istio w dodatku siatki usług bazującej na Istio dla Azure Kubernetes Service.
W tym artykule opisano, jak skonfigurować urząd certyfikacji Istio, używając certyfikatu głównego, certyfikatu podpisującego i klucza dostarczonych jako dane wejściowe za pośrednictwem Azure Key Vault do dodatku do siatki usług opartej na Istio.
Zanim rozpoczniesz
Weryfikowanie wersji Azure CLI
Dodatek wymaga zainstalowania Azure CLI w wersji 2.57.0 lub nowszej. Możesz uruchomić polecenie az --version , aby zweryfikować wersję. Aby zainstalować lub uaktualnić, zobacz Install Azure CLI.
Konfigurowanie Azure Key Vault
Potrzebujesz zasobu Azure Key Vault aby podać certyfikat i kluczowe dane wejściowe do dodatku Istio.
Należy wygenerować certyfikat główny, certyfikaty pośrednie, klucz pośredni i łańcuch certyfikatów w trybie offline. Kroki 1–3 z tego miejsca zawierają przykład sposobu generowania tych plików.
Utwórz wpisy tajne w Azure Key Vault przy użyciu certyfikatów i klucza:
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>Włącz dostawcę Azure Key Vault w sterowniku CSI magazynu tajemnic dla klastra.
az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTERUwaga
Podczas rotacji certyfikatów, aby kontrolować, jak szybko wpisy tajne są synchronizowane z klastrem, można użyć parametru
--rotation-poll-intervaldodatku dostawcy wpisów tajnych Azure Key Vault. Na przykład:az aks addon update --resource-group $RESOURCE_GROUP --name $CLUSTER --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 20s.Jeśli Key Vault używa Azure kontroli dostępu opartej na rolach dla modelu uprawnień, postępuj zgodnie z instrukcjami here aby przypisać rolę Azure użytkownika Key Vault Secrets User dla tożsamości zarządzanej przypisanej przez użytkownika dodatku. Alternatywnie, jeśli magazyn kluczy korzysta z modelu uprawnień zasad dostępu magazynu, autoryzuj przypisaną tożsamość zarządzaną użytkownika dodatku, aby uzyskać dostęp do zasobu Azure Key Vault, korzystając z polityki dostępu.
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
Konfigurowanie dodatku siatki usług opartej na platformie Istio z certyfikatami CA wtyczki
Włącz dodatek siatki usługi Istio dla istniejącego klastra usługi AKS podczas odwoływania się do utworzonych wcześniej wpisów tajnych Azure Key Vault:
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_NAMEUwaga
W przypadku istniejących klastrów z dodatkiem Istio, korzystających z samopodpisanego certyfikatu głównego generowanego przez CA Istio, przełączenie na CA wtyczki nie jest obsługiwane. Najpierw należy wyłączyć mesh w tych klastrach, a następnie włączyć go ponownie przy użyciu powyższego polecenia, aby umożliwić przekazywanie wejść CA wtyczki.
Sprawdź, czy płaszczyzna sterowania Istio odebrała niestandardowy urząd certyfikacji:
kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController | grep x509Oczekiwane dane wyjściowe powinny być podobne do następujących:
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"
Rotacja urzędu certyfikacji
Ze względów bezpieczeństwa lub zasad może być konieczne okresowe obracanie urzędów certyfikacji. W tej sekcji opisano sposób obsługi scenariuszy rotacji pośredniego urzędu certyfikacji i głównego urzędu certyfikacji.
Rotacja pośredniego urzędu certyfikacji
Można zmienić pośredni urząd certyfikacji, zachowując ten sam nadrzędny urząd certyfikacji. Zaktualizuj tajemnice w zasobie Azure Key Vault za pomocą nowych plików certyfikatów i kluczy:
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>Poczekaj na czas trwania
--rotation-poll-interval. Sprawdź, czy certyfikaty w klastrze zostały odświeżone na podstawie nowego pośredniego urzędu certyfikacji, który został zaktualizowany w zasobie Azure Key Vault.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerOczekiwane dane wyjściowe powinny być podobne do następujących:
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 reloadedObciążenia otrzymują certyfikaty z płaszczyzny sterowania Istio, które są domyślnie ważne przez 24 godziny. Jeśli nie uruchomisz ponownie podów, wszystkie obciążenia uzyskają nowe certyfikaty końcowe na podstawie nowego pośredniego CA w ciągu 24 godzin. Jeśli chcesz wymusić na wszystkich tych zadaniach uzyskanie nowych certyfikatów końcowych natychmiast od nowego pośredniego urzędu certyfikacji, należy ponownie uruchomić zadania.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Rotacja nadrzędnego urzędu certyfikacji
Należy zaktualizować tajemnice Azure Key Vault z plikiem certyfikatu głównego zawierającym zarówno stare, jak i nowe certyfikaty główne.
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>Zawartość
root-cert.pemma następujący format:-----BEGIN CERTIFICATE----- <contents of old root certificate> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <contents of new root certificate> -----END CERTIFICATE-----Sprawdź
istioddzienniki, gdy certyfikaty zostaną zsynchronizowane z klastrem.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-systemOczekiwane dane wyjściowe:
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 reloadedMusisz poczekać 24 godziny (domyślny czas ważności certyfikatu liścia) lub wymusić ponowne uruchomienie wszystkich obciążeń. Dzięki temu wszystkie obciążenia rozpoznają zarówno stare, jak i nowe urzędy certyfikacji na potrzeby weryfikacji mTLS.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>Teraz możesz zaktualizować sekrety Azure Key Vault tylko przy użyciu nowego urzędu certyfikacji (nowego CA, bez starego CA):
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>Sprawdź
istioddzienniki, gdy certyfikaty zostaną zsynchronizowane z klastrem.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerOczekiwane dane wyjściowe:
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"Na podstawie przykładowych wyników przedstawionych w tym artykule można zauważyć, że przeszliśmy z Root A (używanego podczas włączania dodatku) do Root B.