Megosztás a következőn keresztül:


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.

Az Istio gyökér- és köztes hitelesítésszolgáltatót ábrázoló diagramja.

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

  1. 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.

  2. 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.

  3. 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>
    
  4. 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

  5. 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

  1. 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.

  2. 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    
    
  3. 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

  1. 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>
    
  2. Várja meg a következő időtartamot --rotation-poll-interval: . Ellenőrizze, hogy a cacerts 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
    
  3. 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

  1. 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
    
  2. 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>
    
  3. 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.

  4. 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>