Generatywna analiza danych

Zintegruj klastry HyperPod z usługą Active Directory, aby zapewnić bezproblemowe logowanie wielu użytkowników | Usługi internetowe Amazona

Data:

HyperPod Amazon SageMaker został zaprojektowany specjalnie w celu przyspieszenia szkolenia w oparciu o model podstawowy (FM), eliminując niezróżnicowane podnoszenie ciężkich przedmiotów związanych z zarządzaniem i optymalizacją dużego klastra obliczeniowego szkoleniowego. Dzięki SageMaker HyperPod możesz trenować FM przez tygodnie i miesiące bez zakłóceń.

Zazwyczaj klastry HyperPod są używane przez wielu użytkowników: badaczy uczenia maszynowego (ML), inżynierów oprogramowania, analityków danych i administratorów klastrów. Edytują własne pliki, wykonują własne zadania i chcą uniknąć wzajemnego wpływania na pracę. Aby osiągnąć środowisko wielu użytkowników, można skorzystać z mechanizmu użytkowników i grup systemu Linux i statycznie utworzyć wielu użytkowników w każdej instancji za pomocą skryptów cyklu życia. Wadą tego podejścia jest jednak to, że ustawienia użytkowników i grup są zduplikowane w wielu instancjach w klastrze, co utrudnia ich spójną konfigurację we wszystkich instancjach, na przykład gdy dołącza nowy członek zespołu.

Aby rozwiązać ten problem, możemy użyć Lekki protokół dostępu do katalogu (LDAP) i LDAP przez TLS/SSL (LDAPS) do integracji z usługą katalogową, np Usługa katalogowa AWS dla Microsoft Active Directory. Dzięki usłudze katalogowej możesz centralnie zarządzać użytkownikami i grupami oraz ich uprawnieniami.

W tym poście przedstawiamy rozwiązanie umożliwiające integrację klastrów HyperPod z zarządzaną przez AWS usługą Microsoft AD i wyjaśniamy, jak uzyskać płynne środowisko logowania wielu użytkowników z centralnie zarządzanym katalogiem.

Omówienie rozwiązania

Rozwiązanie wykorzystuje następujące usługi i zasoby AWS:

Używamy również Tworzenie chmury AWS wdrożyć stos w celu utworzenia wymagań wstępnych dla klastra HyperPod: VPC, podsieci, grupa zabezpieczeń i Amazon FSx dla Luster objętość.

Poniższy diagram ilustruje architekturę rozwiązania wysokiego poziomu.

Schemat architektury integracji HyperPod i Active Directory

W tym rozwiązaniu instancje klastra HyperPod używają protokołu LDAPS do łączenia się z zarządzaną przez AWS usługą Microsoft AD za pośrednictwem NLB. Używamy Zakończenie protokołu TLS poprzez zainstalowanie certyfikatu w NLB. Aby skonfigurować LDAPS w instancjach klastra HyperPod, instaluje się i konfiguruje skrypt cyklu życia Demon usług bezpieczeństwa systemu (SSSD)— oprogramowanie klienckie typu open source dla LDAP/LDAPS.

Wymagania wstępne

W tym poście założono, że wiesz już, jak utworzyć podstawowy klaster HyperPod bez dysku SSD. Aby uzyskać więcej informacji na temat tworzenia klastrów HyperPod, zobacz Pierwsze kroki z SageMaker HyperPod oraz Warsztaty HyperPoda.

Ponadto na etapach konfiguracji użyjesz komputera z systemem Linux do wygenerowania certyfikatu z podpisem własnym i uzyskania zaciemnionego hasła dla użytkownika czytnika AD. Jeśli nie masz komputera z systemem Linux, możesz utworzyć instancję EC2 Linux lub użyć Chmura AWS.

Utwórz VPC, podsieci i grupę zabezpieczeń

Postępuj zgodnie z instrukcjami w Własne konto część warsztatu HyperPod. Wdrożysz stos CloudFormation i utworzysz wymagane wstępnie zasoby, takie jak VPC, podsieci, grupa zabezpieczeń i wolumin FSx for Lustre. Podczas wdrażania stosu CloudFormation należy utworzyć zarówno podsieć podstawową, jak i podsieć zapasową, ponieważ Usługa Microsoft AD zarządzana przez AWS wymaga co najmniej dwóch podsieci z różnymi Strefami Dostępności.

Dla uproszczenia w tym poście używamy tej samej sieci VPC, podsieci i grupy zabezpieczeń zarówno dla klastra HyperPod, jak i usługi katalogowej. Jeśli chcesz używać różnych sieci między klastrem a usługą katalogową, upewnij się, że grupy zabezpieczeń i tabele tras są skonfigurowane w sposób umożliwiający wzajemne komunikowanie się.

Utwórz usługę Microsoft AD zarządzaną przez AWS w usłudze katalogowej

Wykonaj następujące kroki, aby skonfigurować katalog:

  1. Na Konsola usługi katalogowejwybierz Katalogi w okienku nawigacji.
  2. Dodaj Skonfiguruj katalog.
  3. W razie zamówieenia projektu Typ katalogu, Wybierz Zarządzana przez AWS usługa Microsoft AD.
  4. Dodaj Następna.
    Ekran wyboru typu katalogu
  5. W razie zamówieenia projektu edycja, Wybierz Standard Edition.
  6. W razie zamówieenia projektu Nazwa DNS katalogu, wprowadź preferowaną nazwę DNS katalogu (na przykład hyperpod.abc123.com).
  7. W razie zamówieenia projektu hasło administratora¸ ustaw hasło i zapisz je do późniejszego wykorzystania.
  8. Dodaj Następna.
    Ekran konfiguracji tworzenia katalogu
  9. W Sieci w sekcji określ utworzoną sieć VPC i dwie podsieci prywatne.
  10. Dodaj Następna.
    Ekran konfiguracji sieci katalogowej
  11. Przejrzyj konfigurację i cenę, a następnie wybierz Utworzyć katalog.
    Ekran potwierdzenia utworzenia katalogu
    Rozpocznie się tworzenie katalogu. Poczekaj, aż status zmieni się z Tworzenie do Aktywna, co może zająć 20–30 minut.
  12. Gdy status zmieni się na Aktywna, otwórz stronę szczegółów katalogu i zanotuj adresy DNS do późniejszego wykorzystania.Ekran szczegółów katalogu

Utwórz obciążenie NLB przed usługą katalogową

Aby utworzyć równoważenie obciążenia sieciowego, wykonaj następujące kroki:

  1. Na Konsola Amazon EC2wybierz Grupy docelowe w okienku nawigacji.
  2. Dodaj Twórz grupy docelowe.
  3. Utwórz grupę docelową o następujących parametrach:
    1. W razie zamówieenia projektu Wybierz typ celu, Wybierz Adresy IP.
    2. W razie zamówieenia projektu Nazwa grupy docelowej, wchodzić LDAP.
    3. W razie zamówieenia projektu Protokół: Portwybierz TCP I wejdź 389.
    4. W razie zamówieenia projektu Typ adresu IP, Wybierz IPv4.
    5. W razie zamówieenia projektu VPCwybierz SageMaker HyperPod VPC (który utworzyłeś za pomocą szablonu CloudFormation).
    6. W razie zamówieenia projektu Protokół kontroli stanu zdrowiawybierz TCP.
  4. Dodaj Następna.
    Ekran konfiguracji tworzenia celu równoważenia obciążenia
  5. W Zarejestruj cele w tej sekcji zarejestruj adresy DNS usługi katalogowej jako obiekty docelowe.
  6. W razie zamówieenia projektu portywybierz Uwzględnij poniżej jako oczekujące.Ekran rejestracji celu równoważenia obciążeniaAdresy są dodawane w pliku Przejrzyj cele sekcja z Do czasu stan.
  7. Dodaj Utwórz grupę docelową.Ekran przeglądu celu równoważenia obciążenia
  8. Na Konsola Load Balancerówwybierz Utwórz moduł równoważenia obciążenia.
  9. Pod System równoważenia obciążenia sieciowegowybierz Stwórz.Ekran wyboru typu modułu równoważenia obciążenia
  10. Skonfiguruj równoważenie obciążenia sieciowego z następującymi parametrami:
    1. W razie zamówieenia projektu Nazwa modułu równoważenia obciążeniawprowadź nazwę (na przykład nlb-ds).
    2. W razie zamówieenia projektu Schemat, Wybierz Wewnętrzne.
    3. W razie zamówieenia projektu Typ adresu IP, Wybierz IPv4.Sekcja podstawowej konfiguracji tworzenia NLB
    4. W razie zamówieenia projektu VPCwybierz SageMaker HyperPod VPC (który utworzyłeś za pomocą szablonu CloudFormation).
    5. Pod Mapowania, wybierz dwie prywatne podsieci i ich zakresy CIDR (które utworzyłeś za pomocą szablonu CloudFormation).
    6. W razie zamówieenia projektu Grupy bezpieczeństwawybierz CfStackName-SecurityGroup-XYZXYZ (który utworzyłeś za pomocą szablonu CloudFormation).Tworzenie NLB, mapowanie sieci i konfiguracje grup zabezpieczeń
  11. W Słuchacze i routing sekcji określ następujące parametry:
    1. W razie zamówieenia projektu Protokółwybierz TCP.
    2. W razie zamówieenia projektu Port, wchodzić 389.
    3. W razie zamówieenia projektu Akcja domyślna, wybierz grupę docelową o nazwie LDAP.

    Tutaj dodajemy odbiornik dla LDAP. Później dodamy LDAPS.

  12. Dodaj Utwórz moduł równoważenia obciążenia.Ekran konfiguracji routingu odbiorników NLBPoczekaj, aż status zmieni się z Provisioning na Aktywny, co może zająć 3–5 minut.
  13. Gdy status zmieni się na Aktywna, otwórz stronę szczegółów udostępnionego obciążenia NLB i zanotuj nazwę DNS (xyzxyz.elb.region-name.amazonaws.com) do późniejszego wykorzystania.Ekran szczegółów NLB

Utwórz certyfikat z podpisem własnym i zaimportuj go do Menedżera certyfikatów

Aby utworzyć certyfikat z podpisem własnym, wykonaj następujące kroki:

  1. W środowisku opartym na systemie Linux (lokalny laptop, instancja EC2 Linux lub CloudShell) uruchom następujące polecenie OpenSSL polecenia umożliwiające utworzenie certyfikatu z podpisem własnym i klucza prywatnego:
    $ openssl genrsa 2048 > ldaps.key
    
    $ openssl req -new -key ldaps.key -out ldaps_server.csr
    
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:Washington
    Locality Name (eg, city) []:Bellevue
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:CorpName
    Organizational Unit Name (eg, section) []:OrgName
    Common Name (e.g., server FQDN or YOUR name) []:nlb-ds-abcd1234.elb.region.amazonaws.com
    Email Address []:[email protected]
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    
    $ openssl x509 -req -sha256 -days 365 -in ldaps_server.csr -signkey ldaps.key -out ldaps.crt
    
    Certificate request self-signature ok
    subject=C = US, ST = Washington, L = Bellevue, O = CorpName, OU = OrgName, CN = nlb-ds-abcd1234.elb.region.amazonaws.com, emailAddress = [email protected]
    
    $ chmod 600 ldaps.key

  2. Na Konsola Menedżera certyfikatówwybierz import.
  3. Wprowadź treść certyfikatu i klucz prywatny z zawartości ldaps.crt i ldaps.key odpowiednio.
  4. Dodaj Następna.Ekran importowania certyfikatu
  5. Dodaj opcjonalne tagi i wybierz Następna.Ekran edycji znacznika certyfikatu
  6. Przejrzyj konfigurację i wybierz import.Ekran przeglądu importu certyfikatu

Dodaj odbiornik LDAPS

Dodaliśmy odbiornik LDAP już w NLB. Teraz dodajemy słuchacza dla LDAPS z zaimportowanym certyfikatem. Wykonaj następujące kroki:

  1. Na Konsola Load Balancerów, przejdź do strony szczegółów NLB.
  2. Na Słuchacze kartę, wybierz Dodaj słuchacza.Ekran listy NLB z przyciskiem dodawania słuchacza
  3. Skonfiguruj odbiornik za pomocą następujących parametrów:
    1. W razie zamówieenia projektu Protokółwybierz TLS.
    2. W razie zamówieenia projektu Port, wchodzić 636.
    3. W razie zamówieenia projektu Akcja domyślnawybierz LDAP.
    4. W razie zamówieenia projektu Źródło certyfikatu, Wybierz Z ACM.
    5. W razie zamówieenia projektu Certyfikat, wpisz to, co zaimportowałeś do ACM.
  4. Dodaj Dodaj.Ekran konfiguracji odbiornika NLBTeraz NLB słucha zarówno LDAP, jak i LDAPS. Zaleca się usunięcie odbiornika LDAP, ponieważ w przeciwieństwie do LDAPS przesyła on dane bez szyfrowania.Lista słuchaczy NLB z LDAP i LDAPS

Utwórz instancję EC2 Windows, aby administrować użytkownikami i grupami w AD

Aby utworzyć i zarządzać użytkownikami i grupami w AD, wykonaj następujące kroki:

  1. Na konsoli Amazon EC2 wybierz Instancje w okienku nawigacji.
  2. Dodaj Uruchom instancje.
  3. W razie zamówieenia projektu Imię, wprowadź nazwę swojej instancji.
  4. W razie zamówieenia projektu Obraz maszyny Amazonwybierz Podstawowy system Microsoft Windows Server 2022.
  5. W razie zamówieenia projektu Typ instancjiwybierz t2.micro.
  6. W ustawienia sieci sekcji, podaj następujące parametry:
    1. W razie zamówieenia projektu VPCwybierz SageMaker HyperPod VPC (który utworzyłeś za pomocą szablonu CloudFormation).
    2. W razie zamówieenia projektu Subnet, wybierz jedną z dwóch podsieci utworzonych za pomocą szablonu CloudFormation.
    3. W razie zamówieenia projektu Typowe grupy zabezpieczeńwybierz CfStackName-SecurityGroup-XYZXYZ (który utworzyłeś za pomocą szablonu CloudFormation).
  7. W razie zamówieenia projektu Skonfiguruj pamięć, ustaw pamięć na 30 GB gp2.
  8. W Zaawansowane szczegóły sekcja dla Katalog dołączenia do domeny¸ wybierz utworzoną reklamę.
  9. W razie zamówieenia projektu Profil instancji uprawnieńwybierz plik AWS Zarządzanie tożsamością i dostępem (IAM) z co najmniej AmazonSSMManagedEC2InstanceDefaultPolicy polityka.
  10. Przejrzyj podsumowanie i wybierz Uruchom instancję.

Twórz użytkowników i grupy w AD za pomocą instancji EC2 Windows

Z Remote Desktop, połącz się z instancją EC2 Windows utworzoną w poprzednim kroku. Zaleca się korzystanie z klienta RDP zamiast korzystania z Pulpitu zdalnego opartego na przeglądarce, aby móc wymieniać zawartość schowka z komputerem lokalnym za pomocą operacji kopiowania i wklejania. Aby uzyskać więcej informacji na temat łączenia się z instancjami EC2 Windows, zobacz Połącz się z instancją systemu Windows.

Jeśli zostaniesz poproszony o podanie danych logowania, użyj hyperpodAdmin (gdzie hyperpod to pierwsza część nazwy DNS katalogu) jako nazwa użytkownika i użyj hasła administratora ustawionego dla usługi katalogowej.

  1. Po otwarciu ekranu pulpitu systemu Windows wybierz Server Manager z Start menu.Ekran panelu kontrolnego w Menedżerze serwera
  2. Dodaj Serwer lokalny w panelu nawigacji i potwierdź, że jest to domena określona w usłudze katalogowej.Ekran serwera lokalnego w Menedżerze serwera
  3. Na zarządzanie menu, wybierz Dodaj role i funkcje.Rozwijane menu otwierane za pomocą przycisku Zarządzaj
  4. Dodaj Następna dopóki nie znajdziesz się w Korzyści strona.Dodaj Kreatora ról i funkcji
  5. Rozwiń funkcję Narzędzia administracji zdalnej serwera, rozwiń Narzędzia do administrowania rolamii wybierz Narzędzia AD DS i AD LDS i Usługa zarządzania prawami Active Directory.
  6. Dodaj Następna i Zainstalować.Zawiera ekran wyboruRozpocznie się instalacja funkcji.
  7. Po zakończeniu instalacji wybierz Zamknij.Ekran postępu instalacji funkcji
  8. Otwarte Użytkownicy i komputery usługi Active Directory z Start menu.Okno Użytkownicy i komputery usługi Active Directory
  9. Pod hyperpod.abc123.com, rozwiń hyperpod.
  10. Wybierz (kliknij prawym przyciskiem myszy) hyperpodwybierz Nowościi wybierz Jednostka organizacyjna.Otwarto menu kontekstowe umożliwiające utworzenie jednostki organizacyjnej
  11. Utwórz jednostkę organizacyjną o nazwie Groups.Okno dialogowe o zawieszeniu Jednostki Organizacyjnej
  12. Wybierz (kliknij prawym przyciskiem myszy) Grupywybierz Nowościi wybierz Zarządzanie.Otwarto menu kontekstowe umożliwiające tworzenie grup
  13. Utwórz grupę o nazwie ClusterAdmin.Okno dialogowe tworzenia grupy dla ClusterAdmin
  14. Utwórz drugą grupę o nazwie ClusterDev.Okno dialogowe tworzenia grupy dla ClusterDev
  15. Wybierz (kliknij prawym przyciskiem myszy) użytkownicywybierz Nowościi wybierz Użytkownik.
  16. Utwórz nowego użytkownika.Okno tworzenia użytkownika
  17. Wybierz (kliknij prawym przyciskiem myszy) użytkownika i wybierz Dodaj do grupy.Otwarto menu kontekstowe umożliwiające dodanie użytkownika do grupy
  18. Dodaj swoich użytkowników do grup ClusterAdmin or ClusterDev.Ekran wyboru grupy umożliwiający dodanie użytkownika do grupyUżytkownicy dodani do ClusterAdmin grupa będzie miała sudo uprawnienia w klastrze.

Utwórz użytkownika ReadOnly w usłudze AD

Utwórz użytkownika o nazwie ReadOnly dla Users, ReadOnly użytkownik jest używany przez klaster do programowego dostępu do użytkowników i grup w usłudze AD.

Okno dialogowe tworzenia użytkownika umożliwiające utworzenie użytkownika tylko do odczytu

Zanotuj hasło do późniejszego wykorzystania.

Ekran wprowadzania hasła dla użytkownika tylko do odczytu

(W przypadku uwierzytelniania za pomocą klucza publicznego SSH) Dodaj klucze publiczne SSH dla użytkowników

Przechowując klucz publiczny SSH użytkownikowi w AD, możesz zalogować się bez podawania hasła. Możesz użyć istniejącej pary kluczy lub utworzyć nową parę kluczy z OpenSSH ssh-keygen Komenda. Aby uzyskać więcej informacji na temat generowania pary kluczy, zobacz Utwórz parę kluczy dla swojej instancji Amazon EC2.

  1. In Użytkownicy i komputery usługi Active Directory, Na Zobacz i wysłuchaj menu, włącz Funkcje zaawansowane.Otwarto menu Widok, aby włączyć funkcje zaawansowane
  2. Otwórz Właściwości dialog użytkownika.
  3. Na Edytor atrybutów kartę, wybierz altSecurityIdentities wybierać Edytuj.Karta Edytor atrybutów w oknie dialogowym Właściwości użytkownika
  4. W razie zamówieenia projektu Wartość do dodaniawybierz Dodaj.
  5. W razie zamówieenia projektu Wartości, dodaj klucz publiczny SSH.
  6. Dodaj OK.Okno edycji atrybutu dla altSecurityIdentitiesUpewnij się, że klucz publiczny SSH pojawia się jako atrybut.Karta Edytor atrybutów ze skonfigurowaną altSecurityIdentities

Uzyskaj zaciemnione hasło dla użytkownika ReadOnly

Aby uniknąć dołączania hasła w postaci zwykłego tekstu do pliku konfiguracyjnego SSSD, zaciemniasz hasło. Do tego kroku potrzebne jest środowisko Linux (lokalny laptop, instancja EC2 Linux lub CloudShell).

Instalacja sssd-tools pakiet na komputerze z systemem Linux, aby zainstalować moduł Python pysss dla zaciemnienia:

# Ubuntu
$ sudo apt install sssd-tools

# Amazon Linux
$ sudo yum install sssd-tools

Uruchom następujący jednowierszowy skrypt w języku Python. Wprowadź hasło do ReadOnly użytkownik. Otrzymasz zaciemnione hasło.

$ python3 -c "import getpass,pysss; print(pysss.password().encrypt(getpass.getpass('AD reader user password: ').strip(), pysss.password().AES_256))"
AD reader user password: (Enter ReadOnly user password) 
AAAQACK2....

Utwórz klaster HyperPod za pomocą skryptu cyklu życia z obsługą SSSD

Następnie tworzysz klaster HyperPod z integracją LDAPS/Active Directory.

  1. Znajdź plik konfiguracyjny config.py w katalogu skryptów cyklu życia otwórz go za pomocą edytora tekstu i edytuj właściwości w pliku Config klasa i SssdConfig klasa:
    1. Zestaw True dla enable_sssd aby umożliwić konfigurację SSSD.
    2. Połączenia SssdConfig klasa zawiera parametry konfiguracyjne dla SSSD.
    3. Upewnij się, że używasz zaciemnionego hasła do ldap_default_authtok właściwość, a nie hasło w postaci zwykłego tekstu.
    # Basic configuration parameters
    class Config:
             :
        # Set true if you want to install SSSD for ActiveDirectory/LDAP integration.
        # You need to configure parameters in SssdConfig as well.
        enable_sssd = True
    # Configuration parameters for ActiveDirectory/LDAP/SSSD
    class SssdConfig:
    
        # Name of domain. Can be default if you are not sure.
        domain = "default"
    
        # Comma separated list of LDAP server URIs
        ldap_uri = "ldaps://nlb-ds-xyzxyz.elb.us-west-2.amazonaws.com"
    
        # The default base DN to use for performing LDAP user operations
        ldap_search_base = "dc=hyperpod,dc=abc123,dc=com"
    
        # The default bind DN to use for performing LDAP operations
        ldap_default_bind_dn = "CN=ReadOnly,OU=Users,OU=hyperpod,DC=hyperpod,DC=abc123,DC=com"
    
        # "password" or "obfuscated_password". Obfuscated password is recommended.
        ldap_default_authtok_type = "obfuscated_password"
    
        # You need to modify this parameter with the obfuscated password, not plain text password
        ldap_default_authtok = "placeholder"
    
        # SSH authentication method - "password" or "publickey"
        ssh_auth_method = "publickey"
    
        # Home directory. You can change it to "/home/%u" if your cluster doesn't use FSx volume.
        override_homedir = "/fsx/%u"
    
        # Group names to accept SSH login
        ssh_allow_groups = {
            "controller" : ["ClusterAdmin", "ubuntu"],
            "compute" : ["ClusterAdmin", "ClusterDev", "ubuntu"],
            "login" : ["ClusterAdmin", "ClusterDev", "ubuntu"],
        }
    
        # Group names for sudoers
        sudoers_groups = {
            "controller" : ["ClusterAdmin", "ClusterDev"],
            "compute" : ["ClusterAdmin", "ClusterDev"],
            "login" : ["ClusterAdmin", "ClusterDev"],
        }
    

  2. Skopiuj plik certyfikatu ldaps.crt do tego samego katalogu (gdzie config.py istnieje).
  3. Prześlij zmodyfikowane pliki skryptów cyklu życia do pliku Usługa Amazon Simple Storage (Amazon S3) i utwórz za jego pomocą klaster HyperPod.
  4. Poczekaj, aż status zmieni się na Czynny.

Weryfikacja

Zweryfikujmy rozwiązanie logując się do klastra za pomocą protokołu SSH. Ponieważ klaster został utworzony w podsieci prywatnej, nie można bezpośrednio połączyć się z klastrem za pomocą protokołu SSH ze środowiska lokalnego. Możesz wybrać jedną z dwóch opcji połączenia z klastrem.

Opcja 1: Logowanie SSH za pośrednictwem Menedżera systemów AWS

Możesz użyć Menedżer systemów AWS jako serwer proxy dla połączenia SSH. Dodaj wpis hosta do pliku konfiguracyjnego SSH ~/.ssh/config korzystając z poniższego przykładu. Dla HostName wpisz docelową nazwę Systems Manager w formacie sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]. Dla IdentityFile wpisz ścieżkę pliku do klucza prywatnego SSH użytkownika. To pole nie jest wymagane, jeśli wybrałeś uwierzytelnianie hasłem.

Host MyCluster-LoginNode
    HostName sagemaker-cluster:abcd1234_LoginGroup-i-01234567890abcdef
    User user1
    IdentityFile ~/keys/my-cluster-ssh-key.pem
    ProxyCommand aws --profile default --region us-west-2 ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p

Uruchom ssh polecenie, używając określonej nazwy hosta. Potwierdź, że możesz zalogować się do instancji przy użyciu określonego użytkownika.

$ ssh MyCluster-LoginNode
   :
   :
   ____              __  ___     __             __ __                  ___          __
  / __/__ ____ ____ /  |/  /__ _/ /_____ ____  / // /_ _____  ___ ____/ _ ___  ___/ /
 _ / _ `/ _ `/ -_) /|_/ / _ `/  '_/ -_) __/ / _  / // / _ / -_) __/ ___/ _ / _  /
/___/_,_/_, /__/_/  /_/_,_/_/___/_/   /_//_/_, / .__/__/_/ /_/   ___/_,_/
         /___/                                    /___/_/
You're on the controller
Instance Type: ml.m5.xlarge
user1@ip-10-1-111-222:~$

W tym momencie użytkownicy nadal mogą używać domyślnej sesji powłoki Systems Manager do logowania się do klastra jako ssm-user z uprawnieniami administracyjnymi. Aby zablokować domyślny dostęp do powłoki Menedżera systemów i wymusić dostęp SSH, możesz skonfigurować zasady IAM, korzystając z poniższego przykładu:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": [
                "arn:aws:sagemaker:us-west-2:123456789012:cluster/abcd1234efgh",
                "arn:aws:ssm:us-west-2:123456789012:document/AWS-StartSSHSession"
            ],
            "Condition": {
                "BoolIfExists": {
                    "ssm:SessionDocumentAccessCheck": "true"
                }
            }
        }
    ]
}

Aby uzyskać więcej informacji na temat wymuszania dostępu SSH, zobacz Rozpocznij sesję z dokumentem, określając dokumenty sesji w zasadach uprawnień.

Opcja 2: Logowanie SSH poprzez host bastionowy

Inną opcją uzyskania dostępu do klastra jest użycie pliku a gospodarz bastionu jako pełnomocnik. Możesz użyć tej opcji, jeśli użytkownik nie ma uprawnień do korzystania z sesji Menedżera systemów lub do rozwiązywania problemów, gdy Menedżer systemów nie działa.

  1. Utwórz bastionową grupę zabezpieczeń, która umożliwia przychodzący dostęp SSH (port TCP 22) ze środowiska lokalnego.
  2. Zaktualizuj grupę zabezpieczeń klastra, aby zezwolić na przychodzący dostęp SSH z bastionowej grupy zabezpieczeń.
  3. Utwórz instancję EC2 Linux.
  4. W razie zamówieenia projektu Obraz maszyny Amazonwybierz Serwer Ubuntu 20.04 LTS.
  5. W razie zamówieenia projektu Typ instancjiwybierz t3.mały.
  6. W ustawienia sieci sekcji, podaj następujące parametry:
    1. W razie zamówieenia projektu VPCwybierz SageMaker HyperPod VPC (który utworzyłeś za pomocą szablonu CloudFormation).
    2. W razie zamówieenia projektu Subnetwybierz podsieć publiczną utworzoną za pomocą szablonu CloudFormation.
    3. W razie zamówieenia projektu Typowe grupy zabezpieczeńwybierz utworzoną grupę zabezpieczeń bastionu.
  7. W razie zamówieenia projektu Skonfiguruj pamięć, ustaw pamięć na 8 GB.
  8. Zidentyfikuj publiczny adres IP hosta bastionu i prywatny adres IP instancji docelowej (na przykład węzeł logowania klastra) i dodaj dwa wpisy hosta w konfiguracji SSH, odwołując się do następującego przykładu:
    Host Bastion
        HostName 11.22.33.44
        User ubuntu
        IdentityFile ~/keys/my-bastion-ssh-key.pem
    
    Host MyCluster-LoginNode-with-Proxy
        HostName 10.1.111.222
        User user1
        IdentityFile ~/keys/my-cluster-ssh-key.pem
        ProxyCommand ssh -q -W %h:%p Bastion

  9. Uruchom ssh polecenie, używając podanej wcześniej docelowej nazwy hosta i potwierdź, że możesz zalogować się do instancji przy użyciu określonego użytkownika:
    $ ssh MyCluster-LoginNode-with-Proxy
       :
       :
       ____              __  ___     __             __ __                  ___          __
      / __/__ ____ ____ /  |/  /__ _/ /_____ ____  / // /_ _____  ___ ____/ _ ___  ___/ /
     _ / _ `/ _ `/ -_) /|_/ / _ `/  '_/ -_) __/ / _  / // / _ / -_) __/ ___/ _ / _  /
    /___/_,_/_, /__/_/  /_/_,_/_/___/_/   /_//_/_, / .__/__/_/ /_/   ___/_,_/
             /___/                                    /___/_/
    You're on the controller
    Instance Type: ml.m5.xlarge
    user1@ip-10-1-111-222:~$

Sprzątać

Oczyść zasoby w następującej kolejności:

  1. Usuń klaster HyperPod.
  2. Usuń moduł równoważenia obciążenia sieciowego.
  3. Usuń grupę docelową równoważenia obciążenia.
  4. Usuń certyfikat zaimportowany do Menedżera certyfikatów.
  5. Usuń instancję EC2 Windows.
  6. Usuń instancję EC2 Linux dla hosta bastionu.
  7. Usuń zarządzaną przez AWS usługę Microsoft AD.
  8. Usuń stos CloudFormation dla VPC, podsieci, grupy zabezpieczeń i FSx dla woluminu Lustre.

Wnioski

W tym poście przedstawiono kroki umożliwiające utworzenie klastra HyperPod zintegrowanego z usługą Active Directory. Rozwiązanie to eliminuje problemy związane z obsługą użytkowników w klastrach o dużej skali i umożliwia centralne zarządzanie użytkownikami i grupami w jednym miejscu.

Więcej informacji na temat HyperPoda można znaleźć na stronie Warsztaty HyperPoda oraz Przewodnik programisty SageMaker HyperPod. Zostaw swoją opinię na temat tego rozwiązania w sekcji komentarzy.


O autorach

Tomonori Shimomura jest starszym architektem rozwiązań w zespole Amazon SageMaker, gdzie zapewnia szczegółowe konsultacje techniczne klientom SageMaker i sugeruje zespołowi produktowemu ulepszenia produktu. Przed dołączeniem do Amazon pracował nad projektowaniem i rozwojem oprogramowania wbudowanego dla konsol do gier wideo, a teraz wykorzystuje swoje dogłębne umiejętności w zakresie technologii po stronie chmury. W wolnym czasie lubi grać w gry wideo, czytać książki i pisać oprogramowanie.

Giuseppe Angelo Porcellego jest głównym architektem rozwiązań specjalizujących się w uczeniu maszynowym w Amazon Web Services. Z kilkuletnim doświadczeniem w inżynierii oprogramowania i ML współpracuje z klientami dowolnej wielkości, aby zrozumieć ich potrzeby biznesowe i techniczne oraz zaprojektować rozwiązania AI i ML, które najlepiej wykorzystują AWS Cloud i stos Amazon Machine Learning. Pracował nad projektami z różnych dziedzin, w tym MLOps, wizji komputerowej i NLP, obejmujących szeroki zestaw usług AWS. W wolnym czasie Giuseppe lubi grać w piłkę nożną.

Monidipy Chakraborty’ego obecnie pełni funkcję starszego inżyniera ds. rozwoju oprogramowania w Amazon Web Services (AWS), szczególnie w zespole SageMaker HyperPod. Angażuje się w pomaganie klientom poprzez projektowanie i wdrażanie solidnych i skalowalnych systemów, które charakteryzują się doskonałością operacyjną. Wnosząc prawie dziesięcioletnie doświadczenie w tworzeniu oprogramowania, Monidipa wniosła wkład w różne sektory Amazona, w tym wideo, handel detaliczny, Amazon Go i AWS SageMaker.

Satish Pasumarthi jest programistą w Amazon Web Services. Dzięki kilkuletniemu doświadczeniu w inżynierii oprogramowania i doświadczeniu w uczeniu maszynowym uwielbia wypełniać lukę między uczeniem maszynowym a systemami i pasjonuje się budowaniem systemów, które umożliwiają szkolenie w zakresie modeli na dużą skalę. Pracował nad projektami z różnych dziedzin, w tym z frameworkami Machine Learning, benchmarkingiem modeli, budowaniem hyperpod beta obejmującego szeroki zestaw usług AWS. W wolnym czasie Satish lubi grać w badmintona.

spot_img

Najnowsza inteligencja

spot_img

Czat z nami

Cześć! Jak mogę ci pomóc?