Ebben a bejegyzésben bemutatjuk, hogyan lehet biztonságosan elindítani a notebook példányokat egy privát alhálózatban Amazon Virtual Private Cloud (Amazon VPC), letiltott internet-hozzáféréssel és biztonságos csatlakozással Amazon egyszerű tárolási szolgáltatás (Amazon S3) VPC végpontok használatával. Ez a bejegyzés azoknak a hálózati és biztonsági építészeknek szól, akik támogatják az AWS decentralizált adattudományi csapatait.
A SageMaker notebook példányok privát alhálózaton is telepíthetők, és javasoljuk, hogy internet-hozzáférés nélkül telepítsék őket. A jegyzetfüzet-példányok privát alhálózaton belüli biztonságossá tétele segít megelőzni az illetéktelen internet-hozzáférést a notebookpéldányokhoz, amelyek érzékeny információkat tartalmazhatnak.
A bejegyzésben szereplő példák a Jegyzetfüzet példányt fogják használni Életciklus konfigurációk (LCC-k) az S3 VPC végponthoz való csatlakozáshoz, és a tétlen használat észlelésére és leállítására szolgáló parancsfájlok letöltésére a notebook példányra. Ezek a szkriptek cron-jobként futnak, így a tétlen kapacitás automatikus leállításával segítik a költségek megtakarítását.
Megoldás áttekintése
Az alábbi ábra az általunk megvalósított megoldást írja le. Létrehozunk egy SageMaker notebook példányt a VPC privát alhálózatában. Ehhez a notebook-példányhoz csatolunk egy életciklus-konfigurációt, amely egy tétlen leállítási parancsfájlt másol az Amazon S3-ról a notebookpéldányra a rendszerindításkor (egy leállított notebookpéldány indításakor). Az életciklus-konfiguráció ezen keresztül éri el az S3 tárolót AWS PrivateLink.
Ez az architektúra lehetővé teszi, hogy az internetkapcsolattal nem rendelkező SageMaker notebook példányunk hozzáférjen az S3 fájlokhoz anélkül, hogy áthaladna a nyilvános interneten. Mivel a hálózati forgalom nem haladja meg a nyilvános internetet, jelentősen csökkentjük azoknak a vektoroknak a számát, amelyeket a rossz szereplők kihasználhatnak a notebook példány biztonsági helyzetének veszélyeztetése érdekében.
Előfeltételek
Feltételezzük, hogy rendelkezik AWS-fiókkal, valamint egy Amazon VPC-vel, amely legalább egy privát alhálózattal rendelkezik, amely el van szigetelve az internettől. Ha nem tudja, hogyan hozhat létre VPC-t nyilvános/privát alhálózattal, nézze meg Ez az útmutató. Az alhálózat el van szigetelve az internettől, ha az útvonaltáblázata nem továbbítja a forgalmat az internetre a NAT-átjárón és az internetes átjárón keresztül. A következő képernyőkép egy elszigetelt útvonaltáblázat példáját mutatja be. A forgalom az alhálózaton belül marad; nincsenek NAT-átjárók vagy internetes átjárók, amelyek a forgalmat az internetre továbbíthatnák.
Ezenkívül szükségünk van egy S3-as vödörre. Bármely S3 vödör a biztonságos alapértelmezett konfigurációs beállításokkal működik. Győződjön meg arról, hogy a felhasználói fiókból rendelkezik olvasási és írási hozzáféréssel ehhez a csoporthoz. Ez fontos megoldásunk tesztelésekor. Ez a bejegyzés a S3 Felhasználói kézikönyv tisztázni kell, hogyan kell ezt megtenni.
Most létrehozunk egy SageMaker notebook példányt. A notebook-példányt egy elszigetelt alhálózatba kell telepíteni Közvetlen Internet hozzáférés mint mozgássérült.
Ezt a notebookot úgy is be kell állítanunk, hogy root felhasználóként fusson. Az Engedélyek és titkosítás alatt válassza az Engedélyezés lehetőséget a Root hozzáférés beállításánál.
Miután ezeket a beállításokat konfigurálta, válassza a lehetőséget Jegyzetfüzet példány létrehozása az ablak alján.
Az Amazon S3 hozzáférésének konfigurálása
Az Amazon S3 hozzáférésének konfigurálásához hajtsa végre a következő lépéseket:
- Az Amazon S3 konzolon navigáljon a szkriptek tárolására használt S3 tárolóhoz.
Az ebben a tárolóban lévő objektumok csak akkor érhetők el, ha kifejezetten engedélyezve van egy AWS Identity and Access Management (IAM) politika.
- Ebben a tárolóban hozzon létre egy lifecycle-configurations nevű mappát.
- Másolja ki a következőket szkript a GitHubból és a kulccsal mentse el az S3 vödörbe
lifecycle-configurations/autostop.py
.
Most megkezdhetjük a hálózatunk módosítását, hogy lehetővé tegyük az Amazon S3 és az elszigetelt notebook példányunk közötti hozzáférést.
- Írjon egy legkisebb jogosultságokkal rendelkező IAM-házirendet, amely meghatározza a hozzáférést ehhez a csoporthoz és az életciklus-házirend-szkripthez.
- Hozzon létre egy AWS PrivateLink átjáró-végpontot az Amazon S3-hoz.
- Hozzon létre egy SageMaker életciklus-konfigurációt, amely kéri a
autostop.py
szkriptet az Amazon S3-ból API-híváson keresztül. - Csatolja az életciklus-konfigurációt a notebook példányhoz.
Miután végrehajtotta ezeket a lépéseket, tesztelhetjük a konfigurációt egy Amazon S3 CLI parancs végrehajtásával egy notebook cellában. Ha a parancs sikeres, akkor az AWS PrivateLink segítségével sikeresen megvalósítottuk a legkisebb jogosultságokkal rendelkező Amazon S3 hozzáférést egy elszigetelt hálózati helyről.
Robusztusabb teszt az lenne, ha a notebook-példányt tétlenül hagyná, és hagyná, hogy az életciklus-házirend a várt módon fusson. Ha minden jól megy, a notebook példánynak 5 perces tétlenségi időszak után le kell állnia.
Az AWS PrivateLink beállítása az Amazon S3 számára
Az AWS PrivateLink egy hálózati szolgáltatás, amely privát végpontokat hoz létre a VPC-ben más AWS-szolgáltatásokhoz, mint pl. Amazon rugalmas számítási felhő (Amazon EC2), Amazon S3 és Amazon Simple Notification Service (Amazon SNS). Ezek a végpontok megkönnyítik az API-kéréseket más AWS-szolgáltatásokhoz a VPC-n keresztül, nem pedig a nyilvános interneten keresztül. Ez az a döntő összetevő, amely lehetővé teszi, hogy megoldásunk privát és biztonságos hozzáférést biztosítson az életciklus-konfigurációs szkriptünket tartalmazó S3 tárolóhoz.
- Az Amazon VPC konzolon válassza a lehetőséget Végpontok.
A végpontok listája alapértelmezés szerint üres.
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Végpont létrehozása.
- A Szolgáltatási kategóriaválassza AWS szolgáltatások.
- A szolgáltatás neve, keresse meg az S3-at, és válassza ki az átjáró opciót.
- A VPC, válassza ki a korábban létrehozott privát alhálózatokat.
- A Útvonaltáblázatok konfigurálása, válassza ki az alapértelmezett útvonaltáblázatot az adott VPC-hez.
- Alatt PolitikaVálassza ki a szokás opciót, és írja be a következő szabályzatkódot:
Ez a házirend-dokumentum csak olvasási hozzáférést tesz lehetővé az életciklus-konfiguráció S3-csoportjaihoz. Ez a házirend az S3-műveleteket csak az életciklus-konfigurációs tárolóra korlátozza, szükség szerint további gyűjtőket is létrehozhatunk az erőforrás-záradékhoz. Noha ennek a végpontnak a házirendje nem utolsósorban a notebook-példányunk kiváltságos hozzáférése, továbbra is megvédi S3-csoport erőforrásainkat a VPC erőforrásai általi módosítástól.
- Ennek a végpontnak az AWS parancssori felülettel történő létrehozásához futtassa a következő parancsot:
Az átjáró-végpontok automatikusan módosítják a megadott útvonaltáblázatokat, hogy a forgalmat ehhez a végponthoz irányítsák. Bár egy útvonalat hozzáadtunk, a VPC-nk továbbra is elszigetelt. Az útvonal egy felügyelt előtaglistára vagy előre meghatározott IP-címek listájára mutat, amelyet a végpontszolgáltatás használ a forgalom ezen a VPC-n keresztül az Amazon S3 PrivateLink végponthoz történő irányítására.
Módosítsa a SageMaker jegyzetfüzetpéldány IAM szerepkörét
Kezdjük azzal, hogy elkészítjük a legkevesebb jogosultságokkal rendelkező IAM-házirendet a notebook-példány szerepkör házirend-dokumentumához.
- Az IAM konzolon válassza a lehetőséget házirendje.
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Házirend létrehozása.
- A JSON lapon írja be a következő kódot:
Ez a politika egy példa arra legkevesebb privilégium hozzáférést, egy biztonsági paradigma, amely a Nulla bizalom építészet. Ez a házirend csak GetObject és ListBucket API-hívások kérését teszi lehetővé, különösen az életciklus-szabályzatunkat kezelő Amazon S3 erőforrásokon. Ez az IAM-irányelv dokumentum csak olyan esetekben alkalmazható, amikor életciklus-házirendeket tölt le az Amazon S3 webhelyről.
- Mentse ezt a szabályzatot másként
S3LifecycleConfigurationReadPolicy
. - A navigációs panelen válassza a lehetőséget szerepek.
- Keresse meg és válassza ki az izolált jegyzetfüzet-példányokhoz csatolt szerepet, és szerkessze a szerepkör házirend-dokumentumát.
- Keresse meg az újonnan létrehozott szabályzatot, és csatolja a szerepkör szabályzatdokumentumához.
Az elszigetelt notebook most már rendelkezik engedéllyel az Amazon S3 eléréséhez a következőn keresztül GetObject
és a ListBucket
API-hívások. Ezt úgy tudjuk tesztelni, hogy a következő kódrészletet futtatjuk egy notebook cellában:
!aws s3api get-object --bucket <bucket-name> --key lifecycle-configurations/autostop.py autostop.py
A konfiguráció ezen a pontján már nem engedély megtagadva, hanem időtúllépési hiba jelenik meg. Ez jó; ez azt jelenti, hogy engedélyünk van az Amazon S3 elérésére, de ehhez nem hoztuk létre a hálózati kapcsolatot. Ezt a következő részben tesszük meg.
Ezután létrehozzuk IAM-irányelvünket és szerepkörünket a következőn keresztül AWS parancssori interfész (AWS CLI).
- Hozza létre a következő házirendet, és mentse el az ARN-t a kimenetből egy későbbi lépéshez:
- Szerep létrehozása:
- Egyéni szabályzatunk csatolása az új szerepkörhöz:
aws iam attach-role-policy --role-name GeneralIsolatedNotebookRole --policy-arn policy-arn
- Ismételje meg ezeket a lépéseket egy új szabályzat létrehozásához
StopNotebookInstance
.
Ez a politika megadja a autostop.py
script a notebook példány leállításának képessége. A házirend JSON-ja a következő:
- Hozza létre és csatolja ezt a házirendet a notebookpéldány szerepköréhez az AWS-konzol IAM-hez vagy az AWS parancssori felület használatával.
Engedélyezzük, hogy ez a házirend a fiókban található bármely notebook-példányra vonatkozzon. Ez elfogadható, mert újra szeretnénk használni ezt a házirendet további notebook-példányokhoz. A megvalósításhoz ügyeljen arra, hogy különálló, legkevesebb jogosultságokkal rendelkező hozzáférési stílusú házirendeket alakítson ki minden további SageMaker-művelethez, amelyet egy adott notebook hajt végre.
Hozzon létre egy életciklus-konfigurációt
Az életciklus-konfigurációk olyan bash-szkriptek, amelyek az indításkor futnak a notebook példányon. Ez a funkció rugalmassá és hatékonysá teszi az életciklus-konfigurációkat, de korlátozzák a bash programozási nyelv képességei. Gyakori tervezési minta a másodlagos szkriptek futtatása, amelyeket magas szintű programozási nyelven, például Pythonban írtak. Ez a minta lehetővé teszi az életciklus-konfigurációk kezelését a forrásvezérlésben. Meglehetősen összetett állapotkezelési logikát is definiálhatunk egy magas szintű nyelv segítségével.
A következő életciklus-konfiguráció egy bash-szkript, amely egy Python-szkriptet másol az Amazon S3-ból. A fájl másolása után a bash szkript létrehoz egy új bejegyzést a cronban, amely 5 percenként futtatja a Python szkriptet. A Python-szkript API-hívást indít a jegyzetfüzet-példányon futó Jupyter-folyamathoz. Ez az API annak megállapítására szolgál, hogy a notebook példány tétlen volt-e az időtúllépés időtartama alatt. Ha a szkript megállapítja, hogy a notebook példány tétlen volt az elmúlt 5 percben, leállítja a notebook példányt. Ez egy jó gyakorlat a költség- és károsanyag-kibocsátás csökkentése érdekében. Az 5 perces tétlenségi időtúllépési idő az érték módosításával módosítható IDLE_TIME
változót.
Életciklus-konfiguráció létrehozásához hajtsa végre a következő lépéseket:
- A SageMaker konzolon válassza a lehetőséget notebookok.
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Életciklus konfigurációk.
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Konfiguráció létrehozása.
- A Indítsa el a Jegyzetfüzet lapot, írja be az előző bash szkriptet.
- Adjon meg egy leíró nevet a szkriptnek.
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Konfiguráció létrehozása.
Az életciklus-konfigurációt az AWS parancssori felülettel is létrehozhatja (lásd a következő kódot). Vegye figyelembe, hogy magának a szkriptnek base64 kódolásúnak kell lennie. Tartsa ezt szem előtt, amikor az AWS parancssori felületet használja a konfigurációk létrehozásához.
Az életciklus-konfiguráció létrehozása után megjelenik az elérhető konfigurációk listájában.
- Innen navigáljon vissza a notebook példányához. Ha a notebook-példány fut, kapcsolja ki a jegyzetfüzet-példány kiválasztásával, majd a választással megáll a bal felső sarokban.
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a szerkesztése szakaszban Notebook példány beállításai.
- Válassza ki az új életciklus-konfigurációt a listából, és válassza ki Jegyzetfüzet-példány frissítése.
Az életciklus-konfiguráció ARN-je most csatolva van a notebook-példányhoz.
Ehhez az AWS parancssori felületen futtassa a következő parancsot:
aws sagemaker update-notebook-instance --notebook-instance-name notebook-name --lifecycle-config-name lifecycle-config-name
Tesztelje az Amazon S3 hálózati hozzáférést egy elszigetelt notebook példányról
A folyamat teszteléséhez meg kell győződnünk arról, hogy a Python-fájlt az Amazon S3-ból átmásolhatjuk izolált notebook-példányunkba. Mivel életciklus-konfigurációnkat úgy konfiguráltuk, hogy a notebook indításakor fussanak, a teszt futtatásához csak el kell indítanunk a notebook példányunkat. Amikor a notebookunk elindul, nyisson meg egy Jupyter-jegyzetfüzetet, és vizsgálja meg a helyi fájlrendszert. A miénk autostop.py
Az S3 tárolóból származó szkript már telepítve van a notebook példányunkra.
Ha a jegyzetfüzete root jogosultsággal rendelkezik, még a crontab-ját is megvizsgálhatja a következő futtatásával:
Ezt a parancsot root felhasználóként kell futtatnunk, mert az LCC root felhasználóként adja hozzá a cron feladatot a cron szolgáltatáshoz. Ez bizonyítja, hogy a autostop.py
szkript hozzáadva a crontabhoz a notebook indításakor. Mivel ez a parancs megnyitja a cron fájlt, manuálisan le kell állítania a kernel parancsot a kimenet megtekintéséhez.
Tisztítsuk meg
Amikor megsemmisíti a VPC-végpontot, a notebook-példány elveszti hozzáférését az S3-csoporthoz. Ez időtúllépési hibát okoz a notebook indításakor. Távolítsa el az életciklus-konfigurációt a notebook példányból. Ehhez válassza ki a notebook példányt az AWS Management Console Amazon SageMaker szolgáltatásában, és válassza szerkesztése szakaszban Notebook példány beállításai. Most a notebook példány nem próbálja meg lehúzni a autostop.py
szkript az Amazon S3-ról.
Következtetés
A SageMaker lehetővé teszi notebook példányok létrehozását a VPC privát alhálózatán belül. Lehetőségként letilthatja az ilyen notebookok internet-hozzáférését is, hogy javítsa a notebookok biztonsági helyzetét. Az internet-hozzáférés letiltása mélyebb védelmet nyújt a rossz szereplőkkel szemben, és lehetővé teszi az adatkutatók számára, hogy biztonságos környezetben dolgozzanak notebookokkal.
A szerzőről
Dan Ferguson az Amazon Web Services megoldástervezője, elsősorban magántőke- és növekedési tőkebefektetésekre összpontosít késői szakaszban induló vállalkozásokba.
- Coinsmart. Európa legjobb Bitcoin- és kriptográfiai tőzsdéje.
- Platoblockchain. Web3 metaverzum intelligencia. Felerősített tudás. SZABAD HOZZÁFÉRÉS.
- CryptoHawk. Altcoin radar. Ingyenes próbaverzió.
- Forrás: https://aws.amazon.com/blogs/machine-learning/secure-amazon-s3-access-for-isolated-amazon-sagemaker-notebook-instances/
- "
- &
- 11
- 7
- 9
- hozzáférés
- Fiók
- törvény
- Akció
- cselekvések
- További
- Minden termék
- Bár
- amazon
- Az Amazon Web Services
- api
- építészet
- elérhető
- AWS
- hogy
- határ
- hívás
- képességek
- Kapacitás
- kód
- Közös
- bonyolult
- összetevő
- Kiszámít
- Configuration
- Connectivity
- Konzol
- tartalmaz
- ellenőrzés
- kiadások
- tudott
- teremt
- kritikus
- dátum
- adat-tudomány
- decentralizált
- Védelem
- bevezetéséhez
- Design
- elpusztítani
- Érzékelés
- Nem
- le-
- visszhang
- hatás
- titkosítás
- Endpoint
- Környezet
- részvény
- megalapozott
- példa
- várható
- Exploit
- Funkció
- következő
- Előre
- jó
- Növekedés
- segít
- itt
- Magas
- Hogyan
- How To
- HTTPS
- Identitás
- végre
- végre
- fontos
- javul
- információ
- Internet
- Beruházások
- IP
- IP-címeket
- IT
- Munka
- Állások
- Kulcs
- nyelv
- indít
- Szabadság
- szint
- Korlátozott
- vonal
- LINK
- Lista
- helyi
- elhelyezkedés
- vezetés
- kézzel
- bánja
- Navigáció
- hálózat
- hálózati forgalom
- hálózatba
- jegyzetfüzet
- bejelentés
- szám
- nyitva
- nyit
- Művelet
- opció
- érdekében
- Más
- paradigma
- Mintás
- Politikák
- politika
- erős
- Fő
- magán
- Magántőke
- folyamat
- Programozás
- bizonyul
- nyilvános
- ajánl
- csökkenteni
- forrás
- Tudástár
- Útvonal
- futás
- futás
- Tudomány
- tudósok
- Keresés
- másodlagos
- biztonság
- biztonság
- kiválasztott
- szolgáltatás
- Szolgáltatások
- készlet
- beállítás
- üzemszünet
- Egyszerű
- So
- Megoldások
- kifejezetten
- kezdet
- kezdődik
- indítás
- Startups
- Állami
- nyilatkozat
- tárolás
- tárolni
- sikeres
- sikeresen
- támogatás
- rendszer
- teszt
- Keresztül
- idő
- felső
- forgalom
- us
- használ
- érték
- Igazolás
- Megnézem
- Tényleges
- háló
- webes szolgáltatások
- belül
- nélkül
- Munka