Možnosti zabezpečeného nasazení pro připojené rozšíření registru pomocí služby Azure Container Registry

Tento článek popisuje různé scénáře nasazení pro připojené rozšíření registru v clusteru Kubernetes s podporou Arc. Po instalaci připojeného rozšíření registru můžete synchronizovat image z cloudového registru do místních nebo vzdálených umístění.

Než se pustíte do práce, chvíli se dozvíte, jak Kubernetes s podporou Arc funguje koncepčně.

Připojený registr můžete bezpečně nasadit pomocí různých metod šifrování. Pokud chcete zajistit úspěšné nasazení, projděte si požadavky a další související informace podle pokynů pro rychlý start. Ve výchozím nastavení je připojený registr nakonfigurovaný pomocí protokolu HTTPS, režimu ReadOnly, distribuce důvěryhodnosti a služby Cert Manager. Podle vašeho scénáře můžete přidat další přizpůsobení a závislosti.

Co je služba Cert Manager?

Správce certifikátů připojeného registru je služba, která spravuje certifikáty TLS pro připojené rozšíření registru v clusteru Kubernetes s podporou Azure Arc. Zajišťuje zabezpečenou komunikaci mezi připojeným registrem a dalšími komponentami tím, že zpracovává vytváření, obnovení a distribuci certifikátů. Tuto službu můžete nainstalovat jako součást nasazení připojeného registru nebo můžete použít existujícího správce certifikátů, pokud už je nainstalovaná ve vašem clusteru.

Cert-Manager je opensourcový doplněk Kubernetes, který automatizuje správu a vystavování certifikátů TLS z různých zdrojů. Spravuje životní cyklus certifikátů vydaných fondy certifikačních autorit vytvořených pomocí služby CA a zajišťuje jejich platnost a prodloužení před vypršením jejich platnosti.

Co je distribuce důvěryhodnosti?

Distribuce důvěryhodnosti připojeného registru odkazuje na proces bezpečné distribuce důvěryhodnosti mezi připojenou službu registru a klienty Kubernetes v rámci clusteru. Pomocí certifikační autority (CA), jako je cert-manager, k podepisování certifikátů TLS můžete tyto certifikáty distribuovat do služby registru i klientů. Tento proces zajišťuje, aby se všechny entity mohly bezpečně ověřit a udržovat zabezpečené a důvěryhodné prostředí v clusteru Kubernetes.

Nasazení připojeného rozšíření registru pomocí předinstalovaného správce certifikátů

Při použití předinstalované služby cert-manager v clusteru máte kontrolu nad správou certifikátů. Nasaďte připojené rozšíření registru s šifrováním podle uvedených kroků:

V rychlém startu spusťte příkaz az-k8s-extension-create a nastavte cert-manager.enabled=true parametry cert-manager.install=false tak, aby indikoval, že je služba cert-manager nainstalovaná a povolená:

    az k8s-extension create --cluster-name myarck8scluster \ 
    --cluster-type connectedClusters \ 
    --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \ 
    --config service.clusterIP=192.100.100.1 \ 
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json

Nasazení připojeného rozšíření registru pomocí funkce Přineste si vlastní certifikát (BYOC)

Používání vlastního certifikátu (BYOC) umožňuje používat vlastní veřejný certifikát a pár privátních klíčů, abyste měli kontrolu nad správou certifikátů. Toto nastavení umožňuje nasadit připojené rozšíření registru s šifrováním.

Note

Funkce BYOC je užitečná pro zákazníky, kteří dodají svůj vlastní certifikát, jemuž jejich uzly Kubernetes již důvěřují. Neaktualizujte uzly ručně, aby důvěřovaly certifikátům.

Při nasazování rozšíření přidejte veřejný certifikát a dvojici řetězců privátního klíče a hodnoty pomocí následujícího postupu:

  1. Vytvořte certifikát SSL podepsaný svým držitelem s IP adresou připojené služby registru jako síť SAN:

    mkdir /certs
    
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/mycert.key -x509 -days 365 -out /certs/mycert.crt -addext   "subjectAltName = IP:<service IP>"
    
  2. Získejte řetězce s kódováním Base64 těchto souborů certifikátů:

    export TLS_CRT=$(cat mycert.crt | base64 -w0) 
    export TLS_KEY=$(cat mycert.key | base64 -w0) 
    
  3. Vytvořte chráněný soubor nastavení s tajným kódem ve formátu JSON, podobně jako v následujícím příkladu:

    Note

    Veřejný certifikát a pár privátních klíčů musí být kódovány ve formátu base64 a přidány do souboru chráněných nastavení.

    {
    "connectionString": "[connection string here]",
    "tls.crt": $TLS_CRT,
    "tls.key": $TLS_KEY,
    "tls.cacrt": $TLS_CRT
    } 
    
  4. Nasaďte rozšíření připojeného registru pomocí šifrování HTTPS (šifrování TLS) pomocí správy veřejného certifikátu a páru privátních klíčů tím, že nakonfigurujete proměnné nastavené na cert-manager.enabled=false a cert-manager.install=false. Pomocí těchto parametrů není cert-manager nainstalován nebo povolen, protože veřejný certifikát a pár privátních klíčů se místo toho používá k šifrování.

  5. Po úpravě souboru chráněných nastavení spusťte příkaz az-k8s-extension-create pro nasazení:

    az k8s-extension create --cluster-name myarck8scluster \
    --cluster-type connectedClusters \  
    --extension-type  Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \
    --config service.clusterIP=192.100.100.1 \
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json 
    

Nasazení připojeného registru se správou tajemství Kubernetes

Pomocí tajného kódu Kubernetes ve vašem clusteru můžete bezpečně spravovat autorizovaný přístup mezi pody v rámci clusteru. Toto nastavení umožňuje nasadit připojené rozšíření registru s šifrováním.

Přidejte proměnnou a hodnotu tajného řetězce protokolu TLS Kubernetes pomocí následujícího postupu:

  1. Vytvoření certifikátu SSL podepsaného svým držitelem s IP adresou připojené služby registru jako sítě SAN

    mkdir /certs
    
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/mycert.key -x509 -days 365 -out /certs/mycert.crt -addext    "subjectAltName = IP:<service IP>"
    
  2. Získejte řetězce s kódováním base64 z těchto souborů certifikátů:

    export TLS_CRT=$(cat mycert.crt | base64 -w0) 
    export TLS_KEY=$(cat mycert.key | base64 -w0) 
    
  3. Vytvoření tajného kódu Kubernetes:

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: k8secret
      type: kubernetes.io/tls
    data:
      ca.crt: $TLS_CRT
      tls.crt: $TLS_CRT
      tls.key: $TLS_KEY
    EOF
    
  4. Vytvořte chráněný soubor nastavení s tajným kódem ve formátu JSON, podobně jako v následujícím příkladu:

        { 
        "connectionString": "[connection string here]",
        "tls.secret": “k8secret” 
        } 
    
  5. Nasaďte rozšíření připojeného registru s šifrováním HTTPS (TLS) pomocí správy tajemství Kubernetes. Konfigurace proměnných nastavených na cert-manager.enabled=false a cert-manager.install=false. Pomocí těchto parametrů není cert-manager nainstalovaný nebo povolený, protože tajný klíč Kubernetes se místo toho používá k šifrování.

  6. Po úpravě souboru chráněných nastavení spusťte příkaz az-k8s-extension-create pro nasazení:

    az k8s-extension create --cluster-name myarck8scluster \
    --cluster-type connectedClusters \  
    --extension-type  Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \
    --config service.clusterIP=192.100.100.1 \
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json 
    

Nasazení připojeného registru pomocí vlastní distribuce důvěry

Pomocí vlastních tajných kódů Kubernetes nebo párů veřejného certifikátu a privátního klíče můžete nasadit připojené rozšíření registru pomocí šifrování TLS, vlastní distribuce důvěryhodnosti a odmítnout výchozí distribuci důvěryhodnosti připojeného registru. Toto nastavení umožňuje nasadit připojené rozšíření registru s šifrováním. Nezapomeňte přidat tajný klíč Kubernetes nebo veřejný certifikát a páry proměnných a hodnot privátního klíče do souboru chráněných nastavení ve formátu JSON.

Pokud chcete použít tuto možnost, nastavte parametry trustDistribution.enabled=false a trustDistribution.skipNodeSelector=false tak, aby při nasazení rozšíření odmítaly distribuci důvěryhodnosti připojeného registru.

az k8s-extension create --cluster-name myarck8scluster \ 
--cluster-type connectedClusters \ 
--extension-type Microsoft.ContainerRegistry.ConnectedRegistry \ 
--name myconnectedregistry \ 
--resource-group myresourcegroup \ 
--config service.clusterIP=192.100.100.1 \
--config trustDistribution.enabled=false \ 
--config cert-manager.enabled=false \
--config cert-manager.install=false \ 
--config-protected-file <JSON file path> 

Při použití těchto parametrů není cert-manager nainstalován nebo povolen a distribuce důvěryhodnosti připojeného registru není vynucena. Místo toho použijete distribuci důvěryhodnosti poskytovanou clusterem k navázání vztahu důvěryhodnosti mezi připojeným registrem a klientskými uzly.

Vyčistěte zdroje

Podle těchto kroků odeberte připojené rozšíření registru, odpovídající pody připojeného registru a nastavení konfigurace.

  1. Spuštěním příkazu az-k8s-extension-delete odstraňte připojené rozšíření registru:

    az k8s-extension delete --name myconnectedregistry 
    --cluster-name myarcakscluster \ 
    --resource-group myresourcegroup \ 
    --cluster-type connectedClusters
    
  2. Spuštěním příkazu az acr connected-registry delete odstraňte připojený prostředek registru:

    az acr connected-registry delete --registry myacrregistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup
    

Další kroky