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 -enableADAuth
New-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.com
haszná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 lecontoso\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:
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
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átumbanad-auth-webhook-xxxx
legyen:kubectl get pods -n=kube-system
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: