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


Az Active Directory egyszeri bejelentkezéssel biztonságos kapcsolatot létesíthet a Kubernetes API-kiszolgálóval az Azure Arc által engedélyezett AKS-ben

A következőkre vonatkozik: AKS az Azure Local 22H2-n, AKS Windows Serveren

Az Arc által engedélyezett AKS-ben biztonságos kapcsolatot hozhat létre a Kubernetes API-kiszolgálóval az Active Directory (AD) egyszeri bejelentkezési (SSO) hitelesítő adataival.

Az Arc által engedélyezett AKS-beli AD áttekintése

Active Directory-hitelesítés nélkül tanúsítványalapú kubeconfig fájlra kell támaszkodnia, amikor a parancson keresztül csatlakozik az kubectl API-kiszolgálóhoz. A kubeconfig fájl titkos kulcsokat, például titkos kulcsokat és tanúsítványokat tartalmaz, amelyeket gondosan el kell osztani, ami jelentős biztonsági kockázatot jelenthet.

A tanúsítványalapú kubeconfig használata helyett használhatja az AD SSO hitelesítő adatait az API-kiszolgálóhoz való biztonságos kapcsolódáshoz. Az AKS Arc-integráció lehetővé teszi, hogy a Windows tartományhoz csatlakoztatott gépen lévő felhasználók SSO-hitelesítő adataikkal csatlakozzanak az API-kiszolgálóhoz kubectl . Ez megszünteti a titkos kulcsokat tartalmazó tanúsítványalapú kubeconfig-fájlok kezelését és terjesztését.

Az AD-integráció az AD kubeconfigot használja, amely különbözik a tanúsítványalapú kubeconfig fájloktól, és nem tartalmaz titkos kulcsokat. A tanúsítványalapú kubeconfig fájl azonban biztonsági mentési célokra is használható, például hibaelhárításra, ha problémák merülnek fel az Active Directory hitelesítő adataival való csatlakozással kapcsolatban.

Az AD-integráció egy másik biztonsági előnye, hogy a felhasználók és csoportok biztonsági azonosítóként (SID-k) vannak tárolva. A csoportnevekkel ellentétben az SID-k nem módosíthatók és egyediek, ezért nincs elnevezési ütközés.

Feljegyzés

Az AD SSO-kapcsolat csak számítási feladatokat futtató fürtök esetében támogatott.

Feljegyzés

A beágyazott AD-csoportok használata (AD-csoport létrehozása egy másik AD-csoportban) nem támogatott.

Ez a cikk végigvezeti az Active Directory identitásszolgáltatóként való beállításának és az egyszeri bejelentkezés engedélyezésének lépésein:kubectl

  • Hozza létre az API-kiszolgáló AD-fiókját, majd hozza létre a fiókhoz társított keytab-fájlt . Lásd: AD-hitelesítés létrehozása a keytab-fájllal az AD-fiók létrehozásához és a keytab-fájl létrehozásához.
  • Az AD-hitelesítés a Kubernetes-fürtre való telepítéséhez használja a keytab-fájlt . Ennek a lépésnek a részeként automatikusan létrejön egy alapértelmezett szerepköralapú hozzáférés-vezérlési (RBAC) konfiguráció.
  • Alakítsa át a csoportneveket SID-kké, és fordítva RBAC-konfigurációk létrehozásakor vagy szerkesztésekor tekintse meg az AD-csoport szerepkör-kötésének létrehozását és frissítését.

Mielőtt elkezdené

Mielőtt megkezdené az Active Directory SSO-hitelesítő adatok konfigurálásának folyamatát, győződjön meg arról, hogy a következő elemek érhetők el:

  • Telepítve van a legújabb Aks-Hci PowerShell-modul . Ha telepítenie kell, tekintse meg az AksHci PowerShell-modul letöltését és telepítését.

  • Az AKS-gazdagép telepítve és konfigurálva van. Ha telepítenie kell a gazdagépet, kövesse az üzembe helyezés konfigurálásához szükséges lépéseket.

  • A keytab-fájl használható. Ha nem érhető el, kövesse az API-kiszolgáló AD-fiókjának és a keytab-fájlnak a létrehozását.

    Feljegyzés

    Létre kell hoznia egy adott szolgáltatásnévhez (SPN) tartozó keytab-fájlt, és ennek az egyszerű szolgáltatásnévnek meg kell felelnie a számítási feladatfürt API-kiszolgáló AD-fiókjának. Azt is meg kell győződnie, hogy ugyanazt az egyszerű szolgáltatásnévet használja az AD-hitelesítési folyamat során. A keytab fájlnak a current.keytab nevet kell adni.

  • Minden AKS számítási feladatfürthöz egy API-kiszolgáló AD-fiók érhető el.

  • Az ügyfélszámítógépnek Windows tartományhoz csatlakoztatott gépnek kell lennie.

AD-hitelesítés létrehozása a keytab fájllal

1. lépés: A számítási feladatok fürtjének létrehozása és az AD-hitelesítés engedélyezése

Az AD-hitelesítés telepítése előtt létre kell hoznia egy AKS számítási feladatfürtöt, és engedélyeznie kell az AD-hitelesítés bővítményt a fürtön. Ha az új fürt létrehozásakor nem engedélyezi az AD-hitelesítést, később nem engedélyezheti.

Nyissa meg a PowerShellt rendszergazdaként, és futtassa a következőt a -enableADAuthNew-AksHciCluster parancs paraméterével:

New-AksHciCluster -name mynewcluster1 -enableADAuth

Minden számítási feladatfürthöz győződjön meg arról, hogy egy API-kiszolgáló AD-fiókja érhető el.

A számítási feladatfürt létrehozásáról további információt a Kubernetes-fürtök létrehozása a Windows PowerShell használatával című témakörben talál.

2. lépés: AD-hitelesítés telepítése

Az AD-hitelesítés telepítése előtt telepíteni kell a számítási feladatfürtöt, és engedélyezni kell az AD-hitelesítést a fürtön. Az AD-hitelesítés telepítéséhez használja az alábbi lehetőségek egyikét.

1. lehetőség

Tartományhoz csatlakoztatott Azure Local vagy Windows Server-fürt esetén nyissa meg rendszergazdaként a PowerShellt, és futtassa a következő parancsot:

Install-AksHciAdAuth -name mynewcluster1 -keytab .\current.keytab -SPN k8s/apiserver@CONTOSO.COM -adminUser contoso\bob

Feljegyzés

Ehhez SPN k8s/apiserver@CONTOSO.comhasználja a formátumot SPN k8s/apiserver@<realm name>. Első próbálkozáskor adja meg <realm name> nagybetűkkel. Ha azonban a nagybetűkkel kapcsolatos problémák merülnek fel, hozza létre a kisbetűket tartalmazó egyszerű egyszerű nevet. A Kerberos megkülönbözteti a kis- és nagybetűk megkülönböztetettségét.

2\. lehetőség

Ha a fürt gazdagépe nem csatlakozik tartományhoz, használja a rendszergazdai felhasználónevet vagy csoportnevet SID formátumban, ahogyan az alábbi példában is látható.

Rendszergazdai felhasználó:

Install-AksHciAdAuth -name mynewcluster1 -keytab .\current.keytab -SPN k8s/apiserver@CONTOSO.COM -adminUserSID <User SID>

Felügyeleti csoport:

Install-AksHciAdAuth -name mynewcluster1 -keytab .\current.keytab -SPN k8s/apiserver@CONTOSO.COM -adminGroupSID <Group SID>

A felhasználói fiók biztonsági azonosítójának megkereséséhez lásd : Felhasználó vagy csoport biztonsági azonosítójának meghatározása.

Mielőtt továbblép a következő lépésekre, jegyezze fel a következő elemeket:

  • Győződjön meg arról, hogy a keytab fájl neve current.keytab.
  • Cserélje le a környezetnek megfelelő egyszerű szolgáltatásneveket.
  • A -adminGroup paraméter létrehoz egy megfelelő szerepkör-kötést a megadott AD-csoporthoz fürtadminisztrátori jogosultságokkal. Cserélje le contoso\bob a környezetnek megfelelő AD-csoportra vagy felhasználóra (az 1. lehetőség fenti 1. lehetőségének megfelelően).

3. lépés: Az AD-webhook és a keytab fájl tesztelése

Győződjön meg arról, hogy az AD-webhook fut az API-kiszolgálón, és a keytab-fájl Kubernetes-titkos kódként van tárolva. A számítási feladatfürt tanúsítványalapú kubeconfig fájljának lekéréséhez kövesse az alábbi lépéseket:

  1. Szerezze be a tanúsítványalapú kubeconfig-fájlt az alábbi paranccsal. A kubeconfig fájllal helyi gazdagépként csatlakozhat a fürthöz:

    Get-AksHciCredential -name mynewcluster1
    
  2. Futtassa kubectl a kiszolgálót, amelyhez csatlakozott (a korábban létrehozott tanúsítványalapú kubeconfig fájl használatával), majd ellenőrizze az AD webhook üzembe helyezését, hogy biztosan a következő formátumban ad-auth-webhook-xxxxlegyen:

    kubectl get pods -n=kube-system
    
  3. Futtassa kubectl annak ellenőrzéséhez, hogy a keytab-fájl titkos kódként van-e üzembe helyezve, és Kubernetes-titkos kódként szerepel-e:

    kubectl get secrets -n=kube-system
    

4. lépés: Az AD kubeconfig fájl létrehozása

Az AD-webhook és a keytab sikeres üzembe helyezése után hozza létre az AD kubeconfig fájlt. A fájl létrehozása után másolja az AD kubeconfig fájlt az ügyfélszámítógépre, és használja a hitelesítéshez az API-kiszolgálón. A tanúsítványalapú kubeconfig fájltól eltérően az AD kubeconfig nem titkos, és biztonságosan másolható egyszerű szövegként.

Nyissa meg a PowerShellt rendszergazdaként, majd futtassa a következő parancsot:

Get-AksHciCredential -name mynewcluster1 -configPath .\AdKubeconfig -adAuth

5. lépés: A kubeconfig és más fájlok másolása az ügyfélszámítógépre

Másolja a következő három fájlt az AKS számítási feladatok fürtjéből az ügyfélszámítógépre:

  • Másolja az előző lépésben létrehozott AD kubeconfig fájlt a $env:USERPROFILE.kube\config fájlba.

  • Hozza létre a c:\adsso mappa elérési útját, és másolja a következő fájlokat az AKS számítási feladatfürtből az ügyfélszámítógépre:

    • Kubectl.exe a $env:ProgramFiles\AksHci to c:\adsso.
    • Kubectl-adsso.exe $env :ProgramFiles\AksHci to c:\adsso.

    Feljegyzés

    A adsso.exe fájl a parancsmag futtatásakor jön létre a Get-AksHciCredential kiszolgálón.

6. lépés: Csatlakozás az API-kiszolgálóhoz az ügyfélszámítógépről

Az előző lépések elvégzése után az SSO hitelesítő adataival jelentkezzen be a Windows tartományhoz csatlakoztatott ügyfélszámítógépre. Nyissa meg a PowerShellt, majd próbálja meg elérni az API-kiszolgálót.kubectl Ha a művelet sikeresen befejeződött, helyesen állította be az AD SSO-t.

Az AD-csoport szerepkör-kötésének létrehozása és frissítése

A 2. lépésben leírtaknak megfelelően a rendszer létrehoz egy alapértelmezett szerepkör-kötést a fürt rendszergazdai jogosultságaival a felhasználó és/vagy a telepítés során megadott csoport számára. A Kubernetes szerepkör-kötése határozza meg az AD-csoportok hozzáférési szabályzatait. Ez a lépés azt ismerteti, hogyan hozhat létre új AD-csoportszerepköteteket az RBAC használatával a Kubernetesben, és hogyan szerkesztheti a meglévő szerepkör-kötéseket. Előfordulhat például, hogy a fürt rendszergazdája további jogosultságokat szeretne adni a felhasználóknak AD-csoportok használatával (ami hatékonyabbá teszi a folyamatot). További információ az RBAC-ről: RBAC-engedélyezés.

Más AD-csoport RBAC-bejegyzéseinek létrehozásakor vagy szerkesztésekor a tulajdonos nevének a microsoft:activedirectory:CONTOSO\csoportnév előtaggal kell rendelkeznie. Vegye figyelembe, hogy a neveknek tartalmazniuk kell egy tartománynevet és egy előtagot, amelyet idézőjelek tartalmaznak.

Bemutatunk két példát:

1. példa

apiVersion: rbac.authorization.k8s.io/v1 
kind: ClusterRoleBinding 
metadata: 
  name: ad-user-cluster-admin 
roleRef: 
  apiGroup: rbac.authorization.k8s.io 
  kind: ClusterRole 
  name: cluster-admin 
subjects: 
- apiGroup: rbac.authorization.k8s.io 
  kind: User 
  name: "microsoft:activedirectory:CONTOSO\Bob" 

2. példa

Az alábbi példa bemutatja, hogyan hozhat létre egyéni szerepkört és szerepkörkötést egy névtérhez egy AD-csoporttal. A példában SREGroup egy már meglévő csoport található a Contoso Active Directoryban. Amikor a felhasználókat hozzáadják az AD-csoporthoz, azonnal jogosultságokat kapnak.

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: sre-user-full-access
  namespace: sre
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
- apiGroups: ["batch"]
  resources:
  - jobs
  - cronjobs
  verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ad-user-cluster-admin
  namespace: sre
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: sre-user-full-access
subjects:
  - apiGroup: rbac.authorization.k8s.io
    kind: Group
    name: "microsoft:activedirectory:CONTOSO\SREGroup" 

A YAML-fájl alkalmazása előtt a csoportot és a felhasználóneveket mindig SID-kké kell konvertálni a parancs használatával:

kubectl-adsso nametosid <rbac.yml>

Hasonlóképpen, egy meglévő RBAC frissítéséhez a módosítás előtt átalakíthatja a SID-et egy felhasználóbarát csoportnévvé. A SID konvertálásához használja a következő parancsot:

kubectl-adsso sidtoname <rbac.yml>

Az API-kiszolgálófiókhoz társított AD-fiók jelszavának módosítása

Ha az API-kiszolgálófiók jelszava módosul, el kell távolítania az AD-hitelesítési bővítményt, és újra kell telepítenie a frissített aktuális és korábbi kulcstárak használatával.

Minden alkalommal, amikor módosítja a jelszót, át kell neveznie az aktuális keytabot (current.keytab) az previous.keytab névre. Ezután győződjön meg arról, hogy elnevezi az új jelszót current.keytab néven.

Fontos

A fájloknak a current.keytab és az previous.keytab nevet kell adni. A módosítás nem érinti a meglévő szerepkör-kötéseket.

Az AD-hitelesítés eltávolítása és újratelepítése

Előfordulhat, hogy újra szeretné telepíteni az AD SSO-t az API-kiszolgáló fiókjának módosításakor, a jelszó frissítésekor vagy egy hiba elhárítása érdekében.

Az AD-hitelesítés eltávolításához nyissa meg a PowerShellt rendszergazdaként, és futtassa a következő parancsot:

Uninstall-AksHciAdAuth -name mynewcluster1

Az AD-hitelesítés újratelepítéséhez nyissa meg a PowerShellt rendszergazdaként, és futtassa a következő parancsot:

Install-AksHciAdAuth -name mynewcluster1 -keytab <.\current.keytab> -previousKeytab <.\previous.keytab> -SPN <service/principal@CONTOSO.COM> -adminUser CONTOSO\Bob

Feljegyzés

Az állásidő elkerülése érdekében, ha az ügyfelek gyorsítótárazott jegyeket használnak, a -previousKeytab paraméter csak a jelszó módosításakor szükséges.

Az API-kiszolgáló AD-fiókja és a keytab-fájl létrehozása

Az AD-fiók és a keytab fájl létrehozásához két lépés szükséges. Először hozzon létre egy új AD-fiókot/felhasználót az API-kiszolgálóhoz a szolgáltatásnévvel (SPN) együtt, majd hozzon létre egy keytab-fájlt az AD-fiókhoz.

1. lépés: Új AD-fiók vagy felhasználó létrehozása az API-kiszolgálóhoz

A New-ADUser PowerShell paranccsal hozzon létre egy új AD-fiókot/felhasználót az egyszerű szolgáltatásnévvel. Példa:

New-ADUser -Name apiserver -ServicePrincipalNames k8s/apiserver -AccountPassword (ConvertTo-SecureString "password" -AsPlainText -Force) -KerberosEncryptionType AES128 -Enabled 1

2. lépés: Az AD-fiók keytab-fájljának létrehozása

A keytab fájl létrehozásához használja a ktpass Windows parancsot.

Íme egy példa a ktpass használatával:

ktpass /out current.keytab /princ k8s/apiserver@CONTOSO.COM /mapuser contoso\apiserver_acct /crypto all /pass p@$$w0rd /ptype KRB5_NT_PRINCIPAL

Feljegyzés

Ha a névbejegyzésben 0x2 visszaadott DsCrackNames hiba %userdomain%

A felhasználó vagy csoport biztonsági azonosítójának meghatározása

A fiók vagy más fiókok SID-azonosítójának megkereséséhez használja az alábbi két lehetőség egyikét:

  • A fiókhoz társított SID megkereséséhez írja be a következő parancsot a kezdőkönyvtár parancssorából:

    whoami /user
    
  • Egy másik fiókhoz társított SID megkereséséhez nyissa meg a PowerShellt rendszergazdaként, és futtassa a következő parancsot:

    (New-Object System.Security.Principal.NTAccount(<CONTOSO\Bob>)).Translate([System.Security.Principal.SecurityIdentifier]).value
    

Tanúsítványok hibaelhárítása

A webhook és az API-kiszolgáló tanúsítványok használatával kölcsönösen ellenőrzi a TLS-kapcsolatot. Ez a tanúsítvány 500 napon belül lejár. A tanúsítvány lejártának ellenőrzéséhez tekintse meg a tároló naplóit ad-auth-webhook :

kubectl logs ad-auth-webhook-xxx

Ha tanúsítványérvényesítési hibák lépnek fel, végezze el a webhook eltávolításához és újratelepítéséhez szükséges lépéseket, és szerezze be az új tanúsítványokat.

Ajánlott eljárások és tisztítás

  • Minden fürthöz használjon egyedi fiókot.
  • Ne használja újra az API-kiszolgálófiók jelszavát a fürtök között.
  • A fürt létrehozása után azonnal törölje a keytab-fájl helyi példányát, és ellenőrizze, hogy az egyszeri bejelentkezés hitelesítő adatai működnek-e.
  • Törölje az API-kiszolgálóhoz létrehozott Active Directory-felhasználót. További információ: Remove-ADUser.

Következő lépések

Ebben az útmutatóban megtanulta, hogyan konfigurálhatja az AD-hitelesítést az API-kiszolgálóhoz való biztonságos csatlakozáshoz SSO-hitelesítő adatokkal. Ezután a következőkre van lehetőség: