Sdílet prostřednictvím


Konfigurace skupinových účtů spravované služby (gMSA) pro kontejnery Windows pomocí služby Azure Kubernetes Service na místním prostředí Azure a Na Windows Serveru

Platí pro: AKS v Azure Local 22H2, AKS na Windows Serveru

Pokud chcete použít ověřování AD, můžete nakonfigurovat skupinové účty spravované služby (gMSA) pro kontejnery Windows tak, aby běžely s hostitelem, který není připojený k doméně. Skupinový účet spravované služby je speciální typ účtu služby zavedený ve Windows Serveru 2012, který je navržený tak, aby více počítačům umožňovalo sdílet identitu bez znalosti hesla. Kontejnery Windows nemůžou být připojené k doméně, ale mnoho aplikací windows, které běží v kontejnerech Windows, stále potřebuje ověřování AD.

Poznámka:

Informace o tom, jak komunita Kubernetes podporuje použití gMSA s kontejnery Windows, najdete v tématu Konfigurace gMSA.

Architektura gMSA pro kontejnery s hostitelem, který není připojený k doméně

GMSA pro kontejnery s hostitelem, který není připojený k doméně, používá k načtení přihlašovacích údajů gMSA přenosnou identitu uživatele místo identity hostitele. Proto už není nutné ručně připojovat pracovní uzly Windows k doméně. Identita uživatele se uloží jako tajný kód v Kubernetes. Následující diagram znázorňuje proces konfigurace gMSA pro kontejnery s hostitelem, který není připojený k doméně:

Diagram skupinových účtů spravované služby verze 2

GMSA pro kontejnery s hostitelem, který není připojený k doméně, poskytuje flexibilitu při vytváření kontejnerů s gMSA bez připojení hostitelského uzlu k doméně. Počínaje Windows Serverem 2019 se podporuje ccg.exe, což umožňuje mechanismus modulu plug-in pro načtení přihlašovacích údajů gMSA ze služby Active Directory. Tuto identitu můžete použít ke spuštění kontejneru. Další informace o ccg.exe naleznete v tématu ICcgDomainAuthCredentials rozhraní.

Porovnání gMSA pro kontejnery s nedoménovým hostitelem a hostitelem připojeným k doméně

Při počátečním zavedení gMSA se vyžadovalo, aby byl hostitel kontejneru připojený k doméně, který vytvořil spoustu režijních nákladů na ruční připojení pracovních uzlů Windows k doméně. Toto omezení bylo vyřešeno u gMSA pro kontejnery s hostitelem, který není připojený k doméně, takže uživatelé teď můžou používat gMSA s hostiteli bez připojení k doméně. Další vylepšení gMSA zahrnují následující funkce:

  • Odstranění požadavku na ruční připojení pracovních uzlů Windows k doméně, což způsobilo velkou režii. Pro scénáře škálování to proces zjednodušuje.
  • Ve scénářích postupné aktualizace už se uživatelé nemusí znovu připojit k uzlu k doméně.
  • Jednodušší proces správy účtů počítačů pracovních uzlů pro načtení hesel účtu služby gMSA.
  • Méně složitý komplexní proces konfigurace gMSA s Kubernetes.

Než začnete

Pokud chcete spustit kontejner Windows s účtem spravované služby skupiny, potřebujete následující požadavky:

  • Doména služby Active Directory s alespoň jedním řadičem domény se systémem Windows Server 2012 nebo novějším. Neexistují žádné požadavky na úroveň funkčnosti doménové struktury nebo domény pro použití gMSA, ale hesla gMSA můžou distribuovat jenom řadiče domény s Windows Serverem 2012 nebo novějším. Další informace najdete v tématu Požadavky služby Active Directory pro gMSAs.
  • Oprávnění k vytvoření účtu gMSA Chcete-li vytvořit účet gMSA, musíte být správce domény nebo použít účet, který má oprávnění k vytváření objektů msDS-GroupManagedServiceAccount .
  • Přístup k internetu ke stažení modulu PowerShell CredentialSpec Pokud pracujete v odpojeném prostředí, můžete modul uložit do počítače s přístupem k internetu a zkopírovat ho do vývojového počítače nebo hostitele kontejneru.
  • Pokud chcete zajistit, aby ověřování gMSA a AD fungovalo, ujistěte se, že jsou uzly clusteru Azure Local a Windows Server nakonfigurované tak, aby synchronizovaly čas s řadičem domény nebo jiným zdrojem času. Měli byste se také ujistit, že je technologie Hyper-V nakonfigurovaná tak, aby synchronizovala čas s libovolnými virtuálními počítači.

Příprava gMSA v řadiči domény

Při přípravě gMSA v řadiči domény postupujte takto:

  1. V řadiči domény připravte službu Active Directory a vytvořte účet gMSA.

  2. Vytvořte uživatelský účet domény. Tento uživatelský účet/heslo přihlašovací údaje se ukládají jako tajný kód Kubernetes a používají se k načtení hesla gMSA.

  3. Pokud chcete vytvořit účet GMSA a udělit oprávnění ke čtení hesla účtu gMSA vytvořeného v kroku 2, spusťte následující příkaz PowerShellu New-ADServiceAccount :

     New-ADServiceAccount -Name "<gmsa account name>" -DnsHostName "<gmsa account name>.<domain name>.com" -ServicePrincipalNames "host/<gmsa account name>", "host/<gmsa account name>.<domain name>.com" -PrincipalsAllowedToRetrieveManagedPassword <username you created earlier> 
    

    Zadejte -PrincipalsAllowedToRetrieveManagedPassworduživatelské jméno domény, které jste vytvořili dříve, jak je znázorněno v následujícím příkladu:

    New-ADServiceAccount -Name "WebApp01" -DnsHostName "WebApp01.akshcitest.com" -ServicePrincipalNames "host/WebApp01", "host/WebApp01.akshcitest.com" -PrincipalsAllowedToRetrieveManagedPassword "testgmsa"
    

Příprava souboru JSON specifikace přihlašovacích údajů gMSA

Pokud chcete připravit soubor JSON specifikace přihlašovacích údajů gMSA, postupujte podle kroků pro vytvoření specifikace přihlašovacích údajů.

Konfigurace gMSA pro pody a kontejnery Windows v clusteru

Komunita Kubernetes už podporuje pracovní uzly Windows připojené k doméně pro gMSA. I když se v AKS na místním a Windows Serveru nepotřebujete připojit k pracovnímu uzlu Windows v AKS, existují další požadované kroky konfigurace. Mezi tyto kroky patří instalace webhooku, vlastní definice prostředku (CRD) a specifikace přihlašovacích údajů a povolení řízení přístupu na základě role (role RBAC). Následující kroky používají příkazy PowerShellu, které jsou vytvořené, které vám pomůžou zjednodušit proces konfigurace.

Před provedením následujících kroků se ujistěte, že je nainstalovaný modul PowerShellu AksHci a kubectl může se připojit k vašemu clusteru.

  1. Pokud chcete nainstalovat webhook, spusťte následující příkaz Install-AksHciGmsaWebhook PowerShell:

    Install-AksHciGMSAWebhook -Name <cluster name>
    

    Spuštěním následujícího příkazu ověřte, že je pod webhooku úspěšně spuštěný:

    kubectl get pods -n kube-system | findstr gmsa
    

    Měl by se zobrazit jeden pod s předponou gmsa-webhook , která je spuštěná.

  2. Vytvořte tajný objekt, který ukládá přihlašovací údaje uživatele služby Active Directory. Dokončete následující konfigurační data a uložte nastavení do souboru s názvem secret.yaml.

    apiVersion: v1
    kind: Secret
    metadata:
       name: <secret-name>
       namespace: <secret under namespace other than the default>
    type: Opaque
    stringData:
       domain: <FQDN of the domain, for example: akshcitest.com>
       username: <domain user who can retrieve the gMSA password>
       password: <password>
    

    Potom spuštěním následujícího příkazu vytvořte tajný objekt:

    kubectl apply -f secret.yaml
    

    Poznámka:

    Pokud vytvoříte tajný klíč pod jiným oborem názvů, než je výchozí, nezapomeňte nastavit obor názvů nasazení na stejný obor názvů.

  3. Pomocí rutiny PowerShellu Add-AksHciGMSACredentialSpec vytvořte gMSA CRD, povolte řízení přístupu na základě role (RBAC) a pak přiřaďte roli účtům služby, aby bylo možné použít konkrétní soubor s údaji o přihlašovacích údajích gMSA. Tyto kroky jsou podrobněji popsány v tomto článku Kubernetes o konfiguraci gMSA pro pody a kontejnery Windows.

    Jako vstup použijte specifikaci přihlašovacích údajů JSON pro následující příkaz PowerShellu (parametry s hvězdičkami * jsou povinné):

    Add-AksHciGMSACredentialSpec -Name <cluster name>*  
      -credSpecFilePath <path to JSON credspec>* 
      -credSpecName <name for credspec as the k8s GMSACredentialSpec object>* 
      -secretName <name of secret>* 
      -secretNamespace <namespace of secret>  
      -serviceAccount <name of service account to bind to clusterrole>  
      -clusterRoleName <name of clusterrole to use the credspec>*  
      -overwrite 
    

    Pokud chcete zobrazit příklad, podívejte se na následující kód:

    Add-AksHciGMSACredentialSpec -Name mynewcluster 
      -credSpecFilePath .\credspectest.json 
      -credSpecName credspec-mynewcluster 
      -secretName mysecret 
      -clusterRoleName clusterrole-mynewcluster
    

Nasazení aplikace

Pomocí následujícího příkladu vytvořte soubor YAML nasazení. Mezi požadované položky patří serviceAccountName, gmsaCredentialSpecName, volumeMountsa dnsconfig.

  1. Přidejte účet služby:

    serviceAccountName: default
       securityContext: 
         windowsOptions: 
           gmsaCredentialSpecName:
    
  2. Přidejte objekt specifikace přihlašovacích údajů:

    securityContext: 
         windowsOptions: 
           gmsaCredentialSpecName: <cred spec name>
    
  3. Připojte tajný kód pro nasazení:

    volumeMounts:
         - name: <volume name>
           mountPath: <vmount path>
           readOnly: true
       volumes:
         - name: <volume name>
           secret:
             secretName: <secret name>
             items:
               - key: username
                 path: my-group/my-username
    
  4. Přidejte IP adresu řadiče domény a názvu domény v části dnsConfig:

    dnsConfig: 
         nameservers:
           - <IP address for domain controller>
         searches: 
           - <domain>
    

Ověřte, že kontejner pracuje s gMSA.

Po nasazení kontejneru pomocí následujících kroků ověřte, že funguje:

  1. Spuštěním následujícího příkazu získejte ID kontejneru pro vaše nasazení:

    kubectl get pods
    
  2. Otevřete PowerShell a spusťte následující příkaz:

    kubectl exec -it <container id> powershell
    
  3. Jakmile jste v kontejneru, spusťte následující příkaz:

    Nltest /parentdomain 
    Nltest /sc_verify:<domain> 
    
    Connection Status = 0 0x0 NERR_Success The command completed successfully. 
    

    Tento výstup ukazuje, že počítač byl ověřen řadičem domény a mezi klientským počítačem a řadičem domény existuje zabezpečený kanál.

  4. Zkontrolujte, jestli kontejner dokáže získat platný lístek TGT (Kerberos Ticket Grant Ticket).

    klist get krbtgt
    
    A ticket to krbtgt has been retrieved successfully
    

Vyčištění nastavení gMSA v clusteru

Pokud potřebujete vyčistit nastavení gMSA, použijte následující postup odinstalace.

Odinstalace specifikace přihlašovacích údajů

Pokud chcete odinstalovat, spusťte následující příkaz PowerShellu Remove-AksHcigmsaCredentialSpec :

Remove-AksHciGMSACredentialSpec -Name <cluster name> -credSpecName <cred spec object name> -clusterRoleName <clusterrole object name> -serviceAccount <serviceaccount object name> -secretNamespace <namespace of the secret object>

Odinstalace webhooku

Pokud chcete webhook odinstalovat, spusťte následující příkaz Uninstall-AksHciGMSAWebhook PowerShell:

Uninstall-AksHciGMSAWebhook -Name <cluster name>

Další kroky