Aracılığıyla paylaş


Azure Stack HCI ve Windows Server'da Azure Kubernetes Service ile Windows kapsayıcıları için grup Yönetilen Hizmet Hesaplarını (gMSA) yapılandırma

Şunlar için geçerlidir: Azure Stack HCI 22H2 üzerinde AKS, Windows Server'da AKS

AD Kimlik Doğrulaması'nı kullanmak için, Windows kapsayıcıları için grup Yönetilen Hizmet Hesaplarını (gMSA) etki alanına katılmamış bir konakla çalışacak şekilde yapılandırabilirsiniz. Grup Tarafından Yönetilen Hizmet Hesabı, Windows Server 2012 tanıtılan ve birden çok bilgisayarın parolayı bilmeden kimlik paylaşmasına izin verecek şekilde tasarlanmış özel bir hizmet hesabı türüdür. Windows kapsayıcıları etki alanına katılamaz, ancak Windows kapsayıcılarında çalışan birçok Windows uygulamasının AD Kimlik Doğrulaması gerekir.

Not

Kubernetes topluluğunun Windows kapsayıcılarıyla gMSA kullanmayı nasıl desteklediğini öğrenmek için bkz. gMSA'yı yapılandırma.

Etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA mimarisi

Etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA, gMSA kimlik bilgilerini almak için konak kimliği yerine taşınabilir bir kullanıcı kimliği kullanır. Bu nedenle, Windows çalışan düğümlerini bir etki alanına el ile eklemek artık gerekli değildir. Kullanıcı kimliği Kubernetes'te gizli dizi olarak kaydedilir. Aşağıdaki diyagramda, etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA'nın yapılandırılması işlemi gösterilmektedir:

Grup Yönetilen Hizmet Hesapları sürüm 2'nin diyagramı

Etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA, konak düğümünü etki alanına eklemeden gMSA ile kapsayıcı oluşturma esnekliği sağlar. Windows Server 2019'dan başlayarak, bir eklenti mekanizmasının Active Directory'den gMSA kimlik bilgilerini almasını sağlayan ccg.exe desteklenir. Kapsayıcıyı başlatmak için bu kimliği kullanabilirsiniz. ccg.exe hakkında daha fazla bilgi için bkz. ICcgDomainAuthCredentials arabirimi.

Etki alanına katılmamış bir konak ve etki alanına katılmış bir konak ile kapsayıcılar için gMSA karşılaştırması

gMSA ilk kez tanıtıldığında, kapsayıcı ana bilgisayarının etki alanına katılması gerekiyordu ve bu da Windows çalışan düğümlerini bir etki alanına el ile eklemek için çok fazla yük oluşturdu. Bu sınırlama, etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA ile giderildi, bu nedenle kullanıcılar artık etki alanına katılmamış konaklarla gMSA kullanabilir. gMSA'da yapılan diğer geliştirmeler aşağıdaki özellikleri içerir:

  • Windows çalışan düğümlerini bir etki alanına el ile ekleme gereksinimini ortadan kaldırarak çok fazla ek yüke neden oldu. Ölçeklendirme senaryoları için bu işlem süreci basitleştirir.
  • Sıralı güncelleştirme senaryolarında kullanıcıların artık düğümü bir etki alanına yeniden eklemesi gerekmez.
  • gMSA hizmet hesabı parolalarını almak için çalışan düğümü makine hesaplarını yönetmek için daha kolay bir işlem.
  • Kubernetes ile gMSA'nın yapılandırılması için daha az karmaşık bir uçtan uca işlem.

Başlamadan önce

Grup tarafından yönetilen hizmet hesabıyla bir Windows kapsayıcısı çalıştırmak için aşağıdaki önkoşullara ihtiyacınız vardır:

  • Windows Server 2012 veya üzerini çalıştıran en az bir etki alanı denetleyicisine sahip bir Active Directory etki alanı. gMSA'ları kullanmak için orman veya etki alanı işlev düzeyi gereksinimi yoktur, ancak yalnızca Windows Server 2012 veya üzerini çalıştıran etki alanı denetleyicileri gMSA parolalarını dağıtabilir. Daha fazla bilgi için bkz. gMSA'lar için Active Directory gereksinimleri.
  • gMSA hesabı oluşturma izni. gMSA hesabı oluşturmak için Etki Alanı Yöneticisi olmanız veya msDS-GroupManagedServiceAccount nesneleri oluşturma izinlerine sahip bir hesap kullanmanız gerekir.
  • CredentialSpec PowerShell modülünü indirmek için İnternet'e erişim. Bağlantısız bir ortamda çalışıyorsanız, modülü İnternet erişimi olan bir bilgisayara kaydedebilir ve geliştirme makinenize veya kapsayıcı konağınıza kopyalayabilirsiniz.
  • gMSA ve AD kimlik doğrulamasının çalıştığından emin olmak için Azure Stack HCI ve Windows Server küme düğümlerinin zamanlarını bir etki alanı denetleyicisi veya başka bir zaman kaynağıyla eşitlenecek şekilde yapılandırıldığından emin olun. Ayrıca Hyper-V'nin zamanı herhangi bir sanal makineyle eşitlenecek şekilde yapılandırıldığından da emin olmalısınız.

Etki alanı denetleyicisinde gMSA'yi hazırlama

Etki alanı denetleyicisinde gMSA'yı hazırlamak için şu adımları izleyin:

  1. Etki alanı denetleyicisinde Active Directory'yi hazırlayın ve gMSA hesabını oluşturun.

  2. Bir etki alanı kullanıcı hesabı İçerik Oluşturucu. Bu kullanıcı hesabı/parola kimlik bilgileri Kubernetes gizli dizisi olarak kaydedilir ve gMSA parolasını almak için kullanılır.

  3. Bir GMSA hesabı oluşturmak ve 2. Adımda oluşturulan gMSA hesabının parolasını okuma izni vermek için aşağıdaki New-ADServiceAccount PowerShell komutunu çalıştırın:

     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> 
    

    için -PrincipalsAllowedToRetrieveManagedPassword, aşağıdaki örnekte gösterildiği gibi daha önce oluşturduğunuz etki alanı kullanıcı adını belirtin:

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

gMSA kimlik bilgisi belirtimi JSON dosyasını hazırlama

gMSA kimlik bilgisi belirtimi JSON dosyasını hazırlamak için kimlik bilgisi belirtimi oluşturma adımlarını izleyin.

Kümedeki Windows podları ve kapsayıcıları için gMSA'yi yapılandırma

Kubernetes topluluğu gMSA için etki alanına katılmış Windows çalışan düğümlerini zaten destekliyor. Azure Stack HCI ve Windows Server üzerinde AKS'de bir Windows çalışan düğümüne etki alanına katılmanız gerekmekle birlikte, başka gerekli yapılandırma adımları da vardır. Bu adımlar web kancasını, özel kaynak tanımını (CRD) ve kimlik bilgisi belirtimini yüklemeyi ve rol tabanlı erişim denetimini (RBAC rolü) etkinleştirmeyi içerir. Aşağıdaki adımlarda, yapılandırma işlemini basitleştirmeye yardımcı olmak için oluşturulan PowerShell komutları kullanılır.

Aşağıdaki adımları tamamlamadan önce AksHci PowerShell modülünün yüklü olduğundan ve kubectl kümenize bağlanaabildiğinden emin olun.

  1. Web kancasını yüklemek için aşağıdaki Install-AksHciGmsaWebhook PowerShell komutunu çalıştırın:

    Install-AksHciGMSAWebhook -Name <cluster name>
    

    Web kancası podunun başarıyla çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:

    kubectl get pods -n kube-system | findstr gmsa
    

    Çalışan gmsa-web kancası ön ekini içeren bir pod görmeniz gerekir.

  2. Active Directory kullanıcı kimlik bilgilerini depolayan gizli nesneyi İçerik Oluşturucu. Aşağıdaki yapılandırma verilerini tamamlayın ve ayarları secret.yaml adlı bir dosyaya kaydedin.

    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>
    

    Ardından, gizli dizi nesnesini oluşturmak için aşağıdaki komutu çalıştırın:

    kubectl apply -f secret.yaml
    

    Not

    Varsayılan ad alanı dışında bir ad alanı altında gizli dizi oluşturursanız dağıtımın ad alanını aynı ad alanına ayarlamayı unutmayın.

  3. Add-AksHciGMSACredentialSpec PowerShell cmdlet'ini kullanarak gMSA CRD'sini oluşturun, rol tabanlı erişim denetimini (RBAC) etkinleştirin ve ardından belirli bir gMSA kimlik bilgisi belirtim dosyasını kullanmak için rolü hizmet hesaplarına atayın. Bu adımlar, Windows podları ve kapsayıcıları için gMSA'yi yapılandırma başlıklı bu Kubernetes makalesinde daha ayrıntılı olarak açıklanmıştır.

    Aşağıdaki PowerShell komutu için giriş olarak JSON kimlik bilgisi belirtimini kullanın (yıldız işareti * içeren parametreler zorunludur):

    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 
    

    Bir örneği görüntülemek için aşağıdaki koda bakın:

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

Uygulamayı dağıtma

Aşağıdaki örnek ayarları kullanarak dağıtım YAML dosyasını İçerik Oluşturucu. Gerekli girdiler , , gmsaCredentialSpecNamevolumeMountsve dnsconfiggirdilerini içerirserviceAccountName.

  1. Hizmet hesabını ekleyin:

    serviceAccountName: default
       securityContext: 
         windowsOptions: 
           gmsaCredentialSpecName:
    
  2. Kimlik bilgisi belirtimi nesnesini ekleyin:

    securityContext: 
         windowsOptions: 
           gmsaCredentialSpecName: <cred spec name>
    
  3. Dağıtımın gizli dizisini bağlayın:

    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. etki alanı denetleyicisinin IP adresini ve etki alanı adını dnsConfig altına ekleyin:

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

Kapsayıcının gMSA ile çalıştığını doğrulama

Kapsayıcıyı dağıttığınızda, çalıştığını doğrulamak için aşağıdaki adımları kullanın:

  1. Aşağıdaki komutu çalıştırarak dağıtımınız için kapsayıcı kimliğini alın:

    kubectl get pods
    
  2. PowerShell’i açın ve aşağıdaki komutu çalıştırın:

    kubectl exec -it <container id> powershell
    
  3. Kapsayıcıya girdikten sonra aşağıdaki komutu çalıştırın:

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

    Bu çıkış, bilgisayarın bir etki alanı denetleyicisi tarafından kimliğinin doğrulandığını ve istemci bilgisayar ile etki alanı denetleyicisi arasında güvenli bir kanal bulunduğunu gösterir.

  4. Kapsayıcının geçerli bir Kerberos Anahtar Verme Anahtarı (TGT) edinip edinemediğini denetleyin.

    klist get krbtgt
    
    A ticket to krbtgt has been retrieved successfully
    

Kümedeki gMSA ayarlarını temizleme

gMSA ayarlarını temizlemeniz gerekiyorsa aşağıdaki kaldırma adımlarını kullanın.

Kimlik bilgisi belirtimini kaldırma

Kaldırmak için aşağıdaki Remove-AksHcigmsaCredentialSpec PowerShell komutunu çalıştırın:

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

Web kancasını kaldırma

Web kancasını kaldırmak için aşağıdaki Uninstall-AksHciGMSAWebhook PowerShell komutunu çalıştırın:

Uninstall-AksHciGMSAWebhook -Name <cluster name>

Sonraki adımlar