Generatieve data-intelligentie

Integreer HyperPod-clusters met Active Directory voor naadloos inloggen met meerdere gebruikers | Amazon-webservices

Datum:

Amazon SageMaker HyperPod is speciaal gebouwd om de training van het Foundation Model (FM) te versnellen, waardoor het ongedifferentieerde zware werk dat gepaard gaat met het beheren en optimaliseren van een groot trainingscomputercluster wordt geëlimineerd. Met SageMaker HyperPod kun je FM's weken en maanden zonder onderbreking trainen.

Normaal gesproken worden HyperPod-clusters door meerdere gebruikers gebruikt: machine learning-onderzoekers (ML), software-ingenieurs, datawetenschappers en clusterbeheerders. Ze bewerken hun eigen bestanden, voeren hun eigen taken uit en willen voorkomen dat ze elkaars werk beïnvloeden. Om deze omgeving voor meerdere gebruikers te realiseren, kunt u profiteren van het gebruikers- en groepsmechanisme van Linux en statisch meerdere gebruikers op elke instantie aanmaken via levenscyclusscripts. Het nadeel van deze aanpak is echter dat gebruikers- en groepsinstellingen worden gedupliceerd over meerdere exemplaren in het cluster, waardoor het moeilijk wordt om ze consistent te configureren voor alle exemplaren, bijvoorbeeld wanneer een nieuw teamlid lid wordt.

Om dit pijnpunt op te lossen, kunnen we gebruiken Lichtgewicht Directory Access Protocol (LDAP) en LDAP via TLS/SSL (LDAPS) om te integreren met een directoryservice zoals AWS-adreslijstservice voor Microsoft Active Directory. Met de directoryservice kunt u gebruikers en groepen en hun rechten centraal beheren.

In dit bericht introduceren we een oplossing om HyperPod-clusters te integreren met AWS Managed Microsoft AD, en leggen we uit hoe u een naadloze inlogomgeving voor meerdere gebruikers kunt realiseren met een centraal onderhouden directory.

Overzicht oplossingen

De oplossing maakt gebruik van de volgende AWS-services en -bronnen:

We gebruiken ook AWS CloudFormatie om een ​​stapel te implementeren om de vereisten voor het HyperPod-cluster te creëren: VPC, subnetten, beveiligingsgroep en Amazon FSx voor Luster volume.

Het volgende diagram illustreert de oplossingsarchitectuur op hoog niveau.

Architectuurdiagram voor HyperPod- en Active Directory-integratie

In deze oplossing gebruiken HyperPod-clusterinstanties het LDAPS-protocol om via een NLB verbinding te maken met de AWS Managed Microsoft AD. We gebruiken TLS-beëindiging door een certificaat op de NLB te installeren. Om LDAPS in HyperPod-clusterinstanties te configureren, wordt het levenscyclusscript geïnstalleerd en geconfigureerd Daemon voor systeembeveiligingsservices (SSSD)—een open source clientsoftware voor LDAP/LDAPS.

Voorwaarden

In dit bericht wordt ervan uitgegaan dat je al weet hoe je een standaard HyperPod-cluster zonder SSSD kunt maken. Raadpleeg voor meer informatie over het maken van HyperPod-clusters Aan de slag met SageMaker HyperPod en HyperPod-workshop.

Bovendien gebruikt u tijdens de installatiestappen een Linux-machine om een ​​zelfondertekend certificaat te genereren en een onduidelijk wachtwoord voor de AD-lezergebruiker te verkrijgen. Als u geen Linux-machine heeft, kunt u een EC2 Linux-instantie maken of gebruiken AWS-cloudshell.

Maak een VPC, subnetten en een beveiligingsgroep

Volg de instructies in het Eigen account sectie van de HyperPod-workshop. Je implementeert een CloudFormation-stack en creëert vereiste bronnen zoals VPC, subnetten, beveiligingsgroep en FSx voor het Lustre-volume. U moet zowel een primair subnet als een back-upsubnet maken wanneer u de CloudFormation-stack implementeert, omdat AWS Managed Microsoft AD vereist minimaal twee subnetten met verschillende beschikbaarheidszones.

In dit bericht gebruiken we, voor de eenvoud, dezelfde VPC, subnetten en beveiligingsgroep voor zowel het HyperPod-cluster als de directoryservice. Als u verschillende netwerken tussen het cluster en de directoryservice moet gebruiken, zorg er dan voor dat beveiligingsgroepen en routetabellen zo zijn geconfigureerd dat ze met elkaar kunnen communiceren.

Maak AWS Managed Microsoft AD op Directory Service

Voer de volgende stappen uit om uw directory in te stellen:

  1. Op de Directory Service-console, kiezen Directories in het navigatievenster.
  2. Kies Directory instellen.
  3. Voor Directorytypeselecteer AWS beheerde Microsoft AD.
  4. Kies Volgende.
    Selectiescherm voor het directorytype
  5. Voor editieselecteer Standard Edition.
  6. Voor DNS-naam van directory, voer de DNS-naam van uw voorkeursdirectory in (bijvoorbeeld hyperpod.abc123.com).
  7. Voor administrator wachtwoord¸ stel een wachtwoord in en bewaar het voor later gebruik.
  8. Kies Volgende.
    Configuratiescherm voor het maken van directory's
  9. In het Netwerken sectie, specificeer de VPC en twee privé-subnetten die u hebt gemaakt.
  10. Kies Volgende.
    Configuratiescherm voor directorynetwerk
  11. Bekijk de configuratie en prijzen en kies vervolgens Map maken.
    Bevestigingsscherm voor het maken van een directory
    Het maken van de directory begint. Wacht tot de status verandert van Wij creëren naar Actief, wat 20-30 minuten kan duren.
  12. Wanneer de status verandert in Actief, open de detailpagina van de directory en noteer de DNS-adressen voor later gebruik.Scherm met directorydetails

Maak een Netwerktaakverdeling vóór Directory Service

Voer de volgende stappen uit om de NLB te maken:

  1. Op de Amazon EC2-console, kiezen Doelgroepen in het navigatievenster.
  2. Kies Doelgroepen creëren.
  3. Creëer een doelgroep met de volgende parameters:
    1. Voor Kies een doeltypeselecteer IP adressen.
    2. Voor Naam doelgroep, ga naar binnen LDAP.
    3. Voor Protocol: Haven, kiezen TCP en ga naar binnen 389.
    4. Voor Type IP-adresselecteer IPv4.
    5. Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
    6. Voor Gezondheidscontroleprotocol, kiezen TCP.
  4. Kies Volgende.
    Configuratiescherm voor het maken van taakverdelingsdoelen
  5. In het Registreer doelen sectie, registreer de DNS-adressen van de directoryservice als de doelen.
  6. Voor poorten, kiezen Opnemen zoals hieronder in behandeling.Doelregistratiescherm voor taakverdelingDe adressen worden toegevoegd in de Beoordeel doelstellingen sectie met In behandeling statuut.
  7. Kies Doelgroep creëren.Doelbeoordelingsscherm voor taakverdeling
  8. Op de Load Balancers-console, kiezen Maak een load-balancer.
  9. Onder Netwerk Load Balancer, kiezen creëren.Keuzescherm voor het type load balancer
  10. Configureer een netwerktaakverdeling met de volgende parameters:
    1. Voor Naam van load balancer, voer een naam in (bijvoorbeeld nlb-ds).
    2. Voor schemaselecteer Intern.
    3. Voor Type IP-adresselecteer IPv4.Basisconfiguratiesectie voor het maken van NLB's
    4. Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
    5. Onder mappings, selecteert u de twee privé-subnetten en hun CIDR-bereiken (die u hebt gemaakt met de CloudFormation-sjabloon).
    6. Voor Beveiligingsgroepen, kiezen CfStackName-SecurityGroup-XYZXYZ (die u hebt gemaakt met de CloudFormation-sjabloon).NLB-creatie van netwerktoewijzingen en configuraties van beveiligingsgroepen
  11. In het Luisteraars en routing sectie, specificeer de volgende parameters:
    1. Voor Protocol, kiezen TCP.
    2. Voor Haven, ga naar binnen 389.
    3. Voor Standaard actie, kies de genoemde doelgroep LDAP.

    Hier voegen we een luisteraar voor LDAP toe. We zullen LDAPS later toevoegen.

  12. Kies Maak een load-balancer.Configuratiescherm voor routering van NLB-listenersWacht tot de status verandert van Provisioning naar Actief, wat 3 tot 5 minuten kan duren.
  13. Wanneer de status verandert in Actief, open de detailpagina van de ingerichte netwerktaakverdeling en noteer de DNS-naam (xyzxyz.elb.region-name.amazonaws.com) voor later gebruik.NLB-detailsscherm

Maak een zelfondertekend certificaat en importeer dit in Certificaatbeheer

Voer de volgende stappen uit om een ​​zelfondertekend certificaat te maken:

  1. Voer het volgende uit op uw Linux-gebaseerde omgeving (lokale laptop, EC2 Linux-instantie of CloudShell). OpenSSL opdrachten om een ​​zelfondertekend certificaat en privésleutel te maken:
    $ 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. Op de Certificaatbeheerconsole, kiezen import.
  3. Voer de certificaatinstantie en de privésleutel in, uit de inhoud van ldaps.crt en ldaps.key respectievelijk.
  4. Kies Volgende.Certificaat importscherm
  5. Voeg eventuele optionele tags toe en kies vervolgens Volgende.Scherm voor het bewerken van certificaattags
  6. Bekijk de configuratie en kies import.Certificaatimportbeoordelingsscherm

Voeg een LDAPS-listener toe

We hebben al een luisteraar voor LDAP toegevoegd aan de NLB. Nu voegen we een luisteraar voor LDAPS toe met het geïmporteerde certificaat. Voer de volgende stappen uit:

  1. Op de Load Balancers-console, navigeer naar de pagina NLB-details.
  2. Op de luisteraars tabblad, kies Luisteraar toevoegen.NLB-lijstscherm met knop voor het toevoegen van een luisteraar
  3. Configureer de luisteraar met de volgende parameters:
    1. Voor Protocol, kiezen TLS.
    2. Voor Haven, ga naar binnen 636.
    3. Voor Standaard actie, kiezen LDAP.
    4. Voor Certificaatbronselecteer Van ACM.
    5. Voor Certificaat, voer in wat u in ACM heeft geïmporteerd.
  4. Kies Toevoegen.Configuratiescherm NLB-listenerNu luistert de NLB naar zowel LDAP als LDAPS. Het wordt aanbevolen om de LDAP-listener te verwijderen, omdat deze gegevens verzendt zonder codering, in tegenstelling tot LDAPS.NLB-listernerslijst met LDAP en LDAPS

Maak een EC2 Windows-instantie om gebruikers en groepen in de AD te beheren

Voer de volgende stappen uit om gebruikers en groepen in de AD aan te maken en te onderhouden:

  1. Kies op de Amazon EC2-console: Gevallen in het navigatievenster.
  2. Kies Instanties starten.
  3. Voor Naam, voer een naam in voor uw instantie.
  4. Voor Afbeelding Amazon-machine, kiezen Microsoft Windows Server 2022 Basis.
  5. Voor Instantietype, kiezen t2.micro.
  6. In het Netwerkinstellingen sectie, geef de volgende parameters op:
    1. Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
    2. Voor subnet, kies een van de twee subnetten die u hebt gemaakt met de CloudFormation-sjabloon.
    3. Voor Gemeenschappelijke beveiligingsgroepen, kiezen CfStackName-SecurityGroup-XYZXYZ (die u hebt gemaakt met de CloudFormation-sjabloon).
  7. Voor Opslag configureren, stel de opslag in op 30 GB gp2.
  8. In het Geavanceerde details sectie, voor Directory voor domeindeelname¸ kies de advertentie die u heeft gemaakt.
  9. Voor IAM-instantieprofiel, kies een AWS Identiteits- en toegangsbeheer (IAM) rol met minimaal de AmazonSSMManagedEC2InstanceDefaultPolicy beleid.
  10. Bekijk de samenvatting en kies Start instantie.

Maak gebruikers en groepen in AD met behulp van de EC2 Windows-instantie

met Remote Desktop, maak verbinding met de EC2 Windows-instantie die u in de vorige stap hebt gemaakt. Het gebruik van een RDP-client wordt aanbevolen boven het gebruik van een browsergebaseerd extern bureaublad, zodat u de inhoud van het klembord met uw lokale machine kunt uitwisselen met behulp van kopieer- en plakbewerkingen. Voor meer details over het verbinden met EC2 Windows-instanties raadpleegt u Maak verbinding met uw Windows-exemplaar.

Als u om een ​​inloggegevens wordt gevraagd, gebruikt u hyperpodAdmin (waar hyperpod is het eerste deel van de DNS-naam van uw directory) als gebruikersnaam en gebruik het beheerderswachtwoord dat u voor de directoryservice hebt ingesteld.

  1. Wanneer het Windows-bureaubladscherm wordt geopend, kiest u server Manager van het Start menu.Dashboardscherm op Serverbeheer
  2. Kies Lokale server in het navigatievenster en bevestig dat het domein het domein is dat u bij de directoryservice hebt opgegeven.Lokaal serverscherm in Serverbeheer
  3. Op de Beheren menu, kies Rollen en functies toevoegen.Vervolgkeuzemenu geopend via de knop Beheren
  4. Kies Volgende totdat je bij de Voordelen pagina.Rollen en functies toevoegen Wizard
  5. Vouw de functie uit Remote Server Administration Tools, uitbreiden Hulpprogramma's voor rolbeheerEn Select AD DS- en AD LDS-hulpprogramma's en Active Directory Rights Management-service.
  6. Kies Volgende en Install.FunctieselectieschermDe installatie van de functies begint.
  7. Wanneer de installatie is voltooid, kiest u Sluiten.Voortgangsscherm voor installatie van functies
  8. Openen Active Directory-gebruikers en computers van het Start menu.Venster Active Directory: gebruikers en computers
  9. Onder hyperpod.abc123.com, uitbreiden hyperpod.
  10. Kies (klik met de rechtermuisknop) hyperpod, kiezen Newen kies Organisatorische eenheid.Contextmenu geopend om een ​​organisatie-eenheid te maken
  11. Maak een organisatie-eenheid met de naam Groups.Dialoogvenster voor het beëindigen van de organisatie-eenheid
  12. Kies (klik met de rechtermuisknop) Groepen, kiezen Newen kies Groep.Contextmenu geopend om groepen te maken
  13. Maak een groep genaamd ClusterAdmin.Dialoogvenster voor het maken van groepen voor ClusterAdmin
  14. Creëer een tweede groep genaamd ClusterDev.Dialoogvenster voor het maken van groepen voor ClusterDev
  15. Kies (klik met de rechtermuisknop) Gebruikers, kiezen Newen kies Gebruiker.
  16. Maak een nieuwe gebruiker aan.Dialoogvenster voor het maken van gebruikers
  17. Kies (klik met de rechtermuisknop) de gebruiker en kies Toevoegen aan een groep.Contextmenu geopend om een ​​gebruiker aan een groep toe te voegen
  18. Voeg uw gebruikers toe aan de groepen ClusterAdmin or ClusterDev.Groepsselectiescherm om een ​​gebruiker aan een groep toe te voegenGebruikers toegevoegd aan de ClusterAdmin groep zal hebben sudo privilege op het cluster.

Maak een ReadOnly-gebruiker in AD

Maak een gebruiker aan met de naam ReadOnly voor Users. De ReadOnly user wordt door het cluster gebruikt om programmatisch toegang te krijgen tot gebruikers en groepen in AD.

Dialoogvenster voor het maken van een gebruiker om een ​​ReadOnly-gebruiker te maken

Noteer het wachtwoord voor later gebruik.

Wachtwoordinvoerscherm voor ReadOnly-gebruiker

(Voor authenticatie met openbare SSH-sleutel) Voeg openbare SSH-sleutels toe aan gebruikers

Door een openbare SSH-sleutel op te slaan voor een gebruiker in AD, kunt u inloggen zonder een wachtwoord in te voeren. U kunt een bestaand sleutelpaar gebruiken, of u kunt een nieuw sleutelpaar maken met OpenSSH's ssh-keygen commando. Voor meer informatie over het genereren van een sleutelpaar raadpleegt u Maak een sleutelpaar voor uw Amazon EC2-instantie.

  1. In Active Directory-gebruikers en computersOp Bekijk menu, inschakelen Geavanceerde functies.Menu Bekijken geopend om geavanceerde functies in te schakelen
  2. Open de Properties dialoogvenster van de gebruiker.
  3. Op de Kenmerkeditor tabblad, kies altSecurityIdentities kiezen Edit.Tabblad Attribuuteditor in het dialoogvenster Gebruikerseigenschappen
  4. Voor Waarde om toe te voegen, kiezen Toevoegen.
  5. Voor Values, voeg een openbare SSH-sleutel toe.
  6. Kies OK.Dialoogvenster voor het bewerken van kenmerken voor altSecurityIdentitiesControleer of de openbare SSH-sleutel als attribuut wordt weergegeven.Tabblad Kenmerkeditor met altSecurityIdentities geconfigureerd

Zorg voor een onduidelijk wachtwoord voor de ReadOnly-gebruiker

Om te voorkomen dat er een wachtwoord in platte tekst in het SSSD-configuratiebestand wordt opgenomen, maakt u het wachtwoord onduidelijk. Voor deze stap heb je een Linux-omgeving nodig (lokale laptop, EC2 Linux-instantie of CloudShell).

Installeer de sssd-tools pakket op de Linux-machine om de Python-module te installeren pysss voor verduistering:

# Ubuntu
$ sudo apt install sssd-tools

# Amazon Linux
$ sudo yum install sssd-tools

Voer het volgende Python-script van één regel uit. Voer het wachtwoord van de ReadOnly gebruiker. U krijgt het versluierde wachtwoord.

$ 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....

Maak een HyperPod-cluster met een levenscyclusscript dat geschikt is voor SSSD

Vervolgens maakt u een HyperPod-cluster met LDAPS/Active Directory-integratie.

  1. Zoek het configuratiebestand config.py in uw levenscyclusscriptmap, open deze met uw teksteditor en bewerk de eigenschappen in de Config klasse en SssdConfig klasse:
    1. Zet de True For enable_sssd om het instellen van SSSD mogelijk te maken.
    2. De SssdConfig klasse bevat configuratieparameters voor SSSD.
    3. Zorg ervoor dat u het verborgen wachtwoord voor de ldap_default_authtok eigenschap, geen wachtwoord in platte tekst.
    # 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. Kopieer het certificaatbestand ldaps.crt naar dezelfde map (waar config.py bestaat).
  3. Upload de gewijzigde levenscyclusscriptbestanden naar uw Amazon eenvoudige opslagservice (Amazon S3) bucket en maak er een HyperPod-cluster mee.
  4. Wacht tot de status verandert in In dienst.

Verificatie

Laten we de oplossing verifiëren door u aan te melden bij het cluster met SSH. Omdat het cluster in een privé-subnet is gemaakt, kunt u vanuit uw lokale omgeving niet rechtstreeks SSH naar het cluster sturen. U kunt kiezen uit twee opties om verbinding te maken met het cluster.

Optie 1: SSH-aanmelding via AWS Systems Manager

Je kunt gebruiken AWS-systeembeheerder als proxy voor de SSH-verbinding. Voeg een hostvermelding toe aan het SSH-configuratiebestand ~/.ssh/config met behulp van het volgende voorbeeld. Voor de HostName veld, specificeer de doelnaam van Systems Manager in de notatie van sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]. Voor de IdentityFile veld, specificeer het bestandspad naar de persoonlijke SSH-sleutel van de gebruiker. Dit veld is niet vereist als u voor wachtwoordverificatie kiest.

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

Voer de ... uit ssh commando met behulp van de hostnaam die u hebt opgegeven. Bevestig dat u zich met de opgegeven gebruiker bij het exemplaar kunt aanmelden.

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

Op dit moment kunnen gebruikers nog steeds de standaard shell-sessie van Systems Manager gebruiken om in te loggen op het cluster als ssm-user met beheerdersrechten. Om de standaard Systems Manager-shell-toegang te blokkeren en SSH-toegang af te dwingen, kunt u uw IAM-beleid configureren aan de hand van het volgende voorbeeld:

{
    "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"
                }
            }
        }
    ]
}

Voor meer informatie over het afdwingen van SSH-toegang raadpleegt u Start een sessie met een document door de sessiedocumenten op te geven in IAM-beleid.

Optie 2: SSH-login via bastionhost

Een andere optie om toegang te krijgen tot het cluster is het gebruik van een bastion gastheer als proxy. U kunt deze optie gebruiken als de gebruiker geen toestemming heeft om Systeembeheersessies te gebruiken, of om problemen op te lossen wanneer Systeembeheer niet werkt.

  1. Maak een bastionbeveiligingsgroep die inkomende SSH-toegang (TCP-poort 22) vanuit uw lokale omgeving toestaat.
  2. Werk de beveiligingsgroep voor het cluster bij om inkomende SSH-toegang vanuit de bastionbeveiligingsgroep toe te staan.
  3. Maak een EC2 Linux-instantie.
  4. Voor Afbeelding Amazon-machine, kiezen Ubuntu-server 20.04 LTS.
  5. Voor Instantietype, kiezen t3. klein.
  6. In het Netwerkinstellingen sectie, geef de volgende parameters op:
    1. Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
    2. Voor subnet, kies het openbare subnet dat u hebt gemaakt met de CloudFormation-sjabloon.
    3. Voor Gemeenschappelijke beveiligingsgroepen, kies de bastionbeveiligingsgroep die u heeft gemaakt.
  7. Voor Opslag configureren, stel de opslag in op 8 GB.
  8. Identificeer het openbare IP-adres van de bastionhost en het privé-IP-adres van de doelinstantie (bijvoorbeeld het inlogknooppunt van het cluster) en voeg twee hostvermeldingen toe in de SSH-configuratie, door te verwijzen naar het volgende voorbeeld:
    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. Voer de ... uit ssh opdracht met behulp van de doelhostnaam die u eerder hebt opgegeven, en bevestig dat u zich met de opgegeven gebruiker bij het exemplaar kunt aanmelden:
    $ ssh MyCluster-LoginNode-with-Proxy
       :
       :
       ____              __  ___     __             __ __                  ___          __
      / __/__ ____ ____ /  |/  /__ _/ /_____ ____  / // /_ _____  ___ ____/ _ ___  ___/ /
     _ / _ `/ _ `/ -_) /|_/ / _ `/  '_/ -_) __/ / _  / // / _ / -_) __/ ___/ _ / _  /
    /___/_,_/_, /__/_/  /_/_,_/_/___/_/   /_//_/_, / .__/__/_/ /_/   ___/_,_/
             /___/                                    /___/_/
    You're on the controller
    Instance Type: ml.m5.xlarge
    user1@ip-10-1-111-222:~$

Opruimen

Ruim de bronnen op in de volgende volgorde:

  1. Verwijder het HyperPod-cluster.
  2. Verwijder de netwerkload balancer.
  3. Verwijder de taakverdelingsdoelgroep.
  4. Verwijder het certificaat dat is geïmporteerd in Certificaatbeheer.
  5. Verwijder het EC2 Windows-exemplaar.
  6. Verwijder de EC2 Linux-instantie voor de bastionhost.
  7. Verwijder de door AWS beheerde Microsoft AD.
  8. Verwijder de CloudFormation-stack voor de VPC, subnetten, beveiligingsgroep en FSx voor Lustre-volume.

Conclusie

Dit bericht bevatte stappen om een ​​HyperPod-cluster te maken dat is geïntegreerd met Active Directory. Deze oplossing elimineert het gedoe van gebruikersonderhoud op grootschalige clusters en stelt u in staat gebruikers en groepen centraal op één plek te beheren.

Voor meer informatie over HyperPod, bekijk de HyperPod-workshop en SageMaker HyperPod-ontwikkelaarshandleiding. Laat uw feedback over deze oplossing achter in het opmerkingengedeelte.


Over de auteurs

Tomonori Shimomura is een Senior Solutions Architect in het Amazon SageMaker-team, waar hij diepgaand technisch advies geeft aan SageMaker-klanten en productverbeteringen voorstelt aan het productteam. Voordat hij bij Amazon kwam, werkte hij aan het ontwerp en de ontwikkeling van embedded software voor videogameconsoles, en nu maakt hij gebruik van zijn diepgaande vaardigheden op het gebied van cloud-side-technologie. In zijn vrije tijd speelt hij graag videogames, leest hij boeken en schrijft hij software.

Giuseppe Angelo Porcelli is een Principal Machine Learning Specialist Solutions Architect voor Amazon Web Services. Met meerdere jaren software engineering en een ML-achtergrond werkt hij met klanten van elke omvang om hun zakelijke en technische behoeften te begrijpen en AI- en ML-oplossingen te ontwerpen die optimaal gebruik maken van de AWS Cloud en de Amazon Machine Learning-stack. Hij heeft gewerkt aan projecten in verschillende domeinen, waaronder MLOps, computervisie en NLP, waarbij een breed scala aan AWS-services betrokken was. In zijn vrije tijd speelt Giuseppe graag voetbal.

Monidipa Chakraborty is momenteel werkzaam als Senior Software Development Engineer bij Amazon Web Services (AWS), specifiek binnen het SageMaker HyperPod-team. Ze zet zich in om klanten te helpen bij het ontwerpen en implementeren van robuuste en schaalbare systemen die operationele uitmuntendheid demonstreren. Met bijna tien jaar ervaring op het gebied van softwareontwikkeling heeft Monidipa bijgedragen aan verschillende sectoren binnen Amazon, waaronder Video, Retail, Amazon Go en AWS SageMaker.

Satish Pasumarthi is een softwareontwikkelaar bij Amazon Web Services. Met een aantal jaren software-engineering en een ML-achtergrond houdt hij ervan om de kloof tussen ML en systemen te overbruggen en is hij gepassioneerd om systemen te bouwen die grootschalige modeltraining mogelijk maken. Hij heeft aan projecten in verschillende domeinen gewerkt, waaronder Machine Learning-frameworks, modelbenchmarking en het bouwen van hyperpod-bèta met een breed scala aan AWS-services. In zijn vrije tijd speelt Satish graag badminton.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?