Hitelesítésszolgáltatói tanúsítványok csatlakoztatása Istio-alapú service mesh-bővítményhez az Azure Kubernetes Service-ben
Az Azure Kubernetes Service Istio-alapú service mesh-bővítményében alapértelmezés szerint az Istio tanúsítványszolgáltató (CA) létrehoz egy önaláírt főtanúsítványt és kulcsot, és azokkal írja alá a számítási feladat tanúsítványait. A legfelső szintű hitelesítésszolgáltató kulcsának védelméhez használjon egy legfelső szintű hitelesítésszolgáltatót, amely egy biztonságos gépen fut offline állapotban. A legfelső szintű hitelesítésszolgáltatóval köztes tanúsítványokat állíthat ki az egyes fürtökben futó Istio hitelesítésszolgáltatóknak. Az Istio hitelesítésszolgáltató a rendszergazda által megadott tanúsítvánnyal és kulccsal aláírhatja a számítási feladat tanúsítványait, és a megbízhatóság gyökereként eloszthat egy rendszergazda által megadott főtanúsítványt a számítási feladatok között. Ez a cikk azt ismerteti, hogyan hozhatja létre az Istio CA saját tanúsítványait és kulcsait az Azure Kubernetes Service Istio-alapú service mesh bővítményében.
Ez a cikk azt ismerteti, hogyan konfigurálhatja az Istio-hitelesítésszolgáltatót főtanúsítványsal, aláíró tanúsítvánnyal és bemenetként megadott kulccsal az Istio-alapú service mesh bővítményhez az Azure Key Vault használatával.
Mielőtt elkezdené
Az Azure CLI verziójának ellenőrzése
A bővítményhez telepítve kell lennie az Azure CLI 2.57.0-s vagy újabb verziójának. A verzió ellenőrzéséhez futtatható az --version
. A telepítéssel vagy frissítéssel kapcsolatban lásd: [Az Azure CLI telepítése][azure-cli-install].
Az Azure Key Vault beállítása
Egy Azure Key Vault-erőforrásra van szüksége az Istio bővítmény tanúsítványának és kulcsbemeneteinek megadásához.
Létre kell hoznia a főtanúsítványt, a köztes tanúsítványokat, a köztes kulcsot és a tanúsítványláncot offline állapotban. Az 1–3. lépésben példákat talál ezekre a fájlokra.
Titkos kulcsok létrehozása az Azure Key Vaultban a tanúsítványok és kulcsok használatával:
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>
Engedélyezze az Azure Key Vault-szolgáltatót a Titkos tár CSI-illesztőprogramjához a fürthöz:
az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTER
Feljegyzés
A tanúsítványok elforgatásával szabályozhatja, hogy a titkos kulcsok milyen gyorsan szinkronizálódnak a fürtre, használhatja az
--rotation-poll-interval
Azure Key Vault titkos kulcsszolgáltatói bővítmény paraméterét. Például:az aks addon update --resource-group $RESOURCE_GROUP --name $CLUSTER --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 20s
Engedélyezze a bővítmény felhasználó által hozzárendelt felügyelt identitásának hozzáférését az Azure Key Vault-erőforráshoz:
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
Feljegyzés
Ha a Key Vaultot Azure RBAC-hitelesítéssel hozta létre az engedélymodellhez a Vault hozzáférési szabályzata helyett, kövesse az itt található utasításokat a felügyelt identitás engedélyeinek létrehozásához. Adjon hozzá egy Azure-szerepkör-hozzárendelést
Key Vault Secrets User
a bővítmény felhasználó által hozzárendelt felügyelt identitásához.
Istio-alapú service mesh-bővítmény beállítása beépülő modul hitelesítésszolgáltatói tanúsítványokkal
Engedélyezze az Istio service mesh bővítményt a meglévő AKS-fürthöz, miközben hivatkozik a korábban létrehozott Azure Key Vault-titkos kódokra:
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_NAME
Feljegyzés
Az Istio-bővítményt használó meglévő fürtök esetében az Istio CA által létrehozott önaláírt főtanúsítvány használata nem támogatott. Először le kell tiltania a hálót ezeken a fürtökön, majd újra engedélyeznie kell a fenti paranccsal a beépülő modul CA-bemeneteinek továbbításához.
Ellenőrizze, hogy a rendszer létrehozza-e a
cacerts
fürtön a következőt:kubectl get secret -n aks-istio-system
Várt kimenet:
NAME TYPE DATA AGE cacerts opaque 4 13h sh.helm.release.v1.azure-service-mesh-istio-discovery.v380 helm.sh/release.v1 1 2m15s sh.helm.release.v1.azure-service-mesh-istio-discovery.v381 helm.sh/release.v1 1 8s
Ellenőrizze, hogy az Istio vezérlősík felvette-e az egyéni hitelesítésszolgáltatót:
kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController | grep x509
A várt kimenetnek a következőhöz hasonlónak kell lennie:
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"
Hitelesítésszolgáltató rotálása
Biztonsági vagy szabályzati okokból előfordulhat, hogy rendszeres időközönként el kell forgatnia a hitelesítésszolgáltatókat. Ez a szakasz bemutatja, hogyan kezelhetők a köztes hitelesítésszolgáltatói és a legfelső szintű hitelesítésszolgáltató rotációs forgatókönyvei.
Köztes hitelesítésszolgáltató rotálása
A köztes hitelesítésszolgáltatót elforgathatja, miközben a legfelső szintű hitelesítésszolgáltatót változatlanul tartja. Frissítse a titkos kulcsokat az Azure Key Vault-erőforrásban az új tanúsítvánnyal és kulcsfájlokkal:
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>
Várja meg a következő időtartamot
--rotation-poll-interval
: . Ellenőrizze, hogy acacerts
titkos kód frissült-e a fürtön az Azure Key Vault-erőforráson frissített új köztes hitelesítésszolgáltató alapján:kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController
A várt kimenetnek a következőhöz hasonlónak kell lennie:
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 reloaded
A számítási feladatok az Istio vezérlősíkról kapnak olyan tanúsítványokat, amelyek alapértelmezés szerint 24 órán át érvényesek. Ha nem indítja újra a podokat, az összes számítási feladat 24 órán belül új levéltanúsítványokat szerez be az új köztes hitelesítésszolgáltató alapján. Ha az összes számítási feladatot az új levéltanúsítványok beszerzésére szeretné kényszeríteni az új köztes hitelesítésszolgáltatótól azonnal, akkor újra kell indítania a számítási feladatokat.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Főtanúsítvány-szolgáltató rotálása
Frissítenie kell az Azure Key Vault titkos kulcsait a főtanúsítvány-fájllal, amely a régi és az új főtanúsítványok összefűzéséhez szükséges:
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>
root-cert.pem
A következő formátum tartalma:-----BEGIN CERTIFICATE----- <contents of old root certificate> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <contents of new root certificate> -----END CERTIFICATE-----
Ellenőrizze
istiod
a naplókat, miután a tanúsítványok szinkronizálva lettek a fürtre.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system
Várt kimenet:
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 reloaded
Vagy várnia kell 24 órát (a levéltanúsítvány érvényességének alapértelmezett ideje), vagy újra kell indítania az összes számítási feladatot. Így minden számítási feladat felismeri a régi és az új hitelesítésszolgáltatókat is az mTLS-ellenőrzéshez.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Mostantól csak az új hitelesítésszolgáltatóval frissítheti az Azure Key Vault titkos kulcsokat (a régi hitelesítésszolgáltató nélkül):
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>
Ellenőrizze
istiod
a naplókat, miután a tanúsítványok szinkronizálva lettek a fürtre.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController
Várt kimenet:
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"
A cikkben bemutatott példakimenetek alapján megfigyelheti, hogy az A gyökérből (a bővítmény engedélyezésekor használt) a B gyökérre váltottunk.
Várjon újra 24 órát, vagy kényszerítse az összes számítási feladat újraindítását. Az újraindítás kényszerítésével a számítási feladatok azonnal új levéltanúsítványokat szereznek be az új legfelső szintű hitelesítésszolgáltatótól.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Azure Kubernetes Service