Sdílet prostřednictvím


Konfigurace skupinových účtů spravované služby (gMSA) pro kontejnery Windows s Azure Kubernetes Service ve službě Azure Stack HCI a Windows Serveru

Platí pro: AKS ve Službě Azure Stack HCI 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ého v Windows Server 2012, který je navržený tak, aby umožňoval více počítačům 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žívání 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 místo identity hostitele identitu přenosného uživatele. Proto už není nutné ručně připojovat pracovní uzly Windows k doméně. Identita uživatele se v Kubernetes uloží jako tajný klíč. 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ů pomocí gMSA bez připojení hostitelského uzlu k doméně. Počínaje Windows Serverem 2019 se podporuje ccg.exe, který 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 najdete v tématu Rozhraní ICcgDomainAuthCredentials.

Porovnání gMSA pro kontejnery s hostitelem, který není připojený k doméně, a hostitelem připojeným k doméně

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

  • Eliminování požadavku na ruční připojení pracovních uzlů Windows k doméně, což způsobilo spoustu režijních nákladů. V případě scénářů škálování se tím proces zjednodušuje.
  • Ve scénářích se zajištěním aktualizací se uživatelé už nemusí znovu připojit k uzlu k doméně.
  • Jednodušší proces správy účtů počítačů pracovního uzlu pro načtení hesel účtu služby gMSA.
  • Méně složitý proces konfigurace gMSA s Kubernetes

Než začnete

Ke spuštění kontejneru 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. Pro použití gMSA nejsou žádné požadavky na úroveň funkčnosti doménové struktury nebo domény, ale hesla gMSA můžou distribuovat jenom řadiče domény s Windows Server 2012 nebo novějším. Další informace najdete v tématu Požadavky služby Active Directory pro gMSA.
  • 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 CredentialSpec PowerShellu Pokud pracujete v odpojené 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 uzly clusteru Azure Stack HCI a Windows Server jsou nakonfigurované tak, aby synchronizovaly svůj č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 se všemi 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 následovně:

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

  2. Create účet uživatele domény. Tyto přihlašovací údaje uživatelského účtu nebo hesla se uloží jako tajný klíč Kubernetes a použijí se k načtení hesla gMSA.

  3. Pokud chcete vytvořit účet GMSA a udělit oprávnění ke čtení hesla pro účet gMSA vytvořený 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> 
    

    Pro -PrincipalsAllowedToRetrieveManagedPasswordzadejte už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 se specifikací přihlašovacích údajů gMSA

Pokud chcete připravit soubor JSON se specifikací přihlašovacích údajů gMSA, postupujte podle pokynů 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 nemusíte připojovat k pracovnímu uzlu Windows v AKS ve službě Azure Stack HCI a Windows Server, existují další požadované kroky konfigurace. Mezi tyto kroky patří instalace webhooku, definice vlastního 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é pomáhají 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 ke clusteru.

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

    Install-AksHciGMSAWebhook -Name <cluster name>
    

    Pokud chcete ověřit, jestli je pod webhooku úspěšně spuštěný, spusťte následující příkaz:

    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. Create objekt tajného kódu, který ukládá přihlašovací údaje uživatele služby Active Directory. Vyplňte 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 objekt tajného kódu:

    kubectl apply -f secret.yaml
    

    Poznámka

    Pokud vytvoříte tajný kód v jiném oboru 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 používaly konkrétní soubor specifikace přihlašovacích údajů gMSA. Tyto kroky jsou podrobněji popsané v tomto článku o kubernetes o konfiguraci gMSA pro pody a kontejnery Windows.

    Jako vstup pro následující příkaz PowerShellu použijte specifikaci přihlašovacích údajů JSON (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

Create soubor YAML nasazení pomocí následujícího ukázkového nastavení. Mezi požadované položky patří serviceAccountName, gmsaCredentialSpecNamevolumeMounts, a 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. V části dnsConfig přidejte IP adresu řadiče domény a název domény:

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

Ověřte, že kontejner funguje 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 budete 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 že mezi klientským počítačem a řadičem domény existuje zabezpečený kanál.

  4. Zkontrolujte, jestli kontejner může získat platný lístek pro udělení lístku protokolu Kerberos (TGT).

    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 provést odinstalaci, 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 PowerShellu Uninstall-AksHciGMSAWebhook :

Uninstall-AksHciGMSAWebhook -Name <cluster name>

Další kroky