In questo post, dimostreremo come avviare in modo sicuro istanze notebook in una sottorete privata di an Cloud privato virtuale di Amazon (Amazon VPC), con accesso a Internet disabilitato e a cui connettersi in modo sicuro Servizio di archiviazione semplice Amazon (Amazon S3) utilizzando gli endpoint VPC. Questo post è rivolto agli architetti di rete e di sicurezza che supportano i team di data science decentralizzati su AWS.
Le istanze del notebook SageMaker possono essere distribuite in una sottorete privata e si consiglia di distribuirle senza accesso a Internet. La protezione delle istanze del notebook all'interno di una sottorete privata aiuta a prevenire l'accesso a Internet non autorizzato alle istanze del notebook, che potrebbero contenere informazioni riservate.
Gli esempi in questo post utilizzeranno l'istanza Notebook Configurazioni del ciclo di vita (LCC) per connettersi a un endpoint VPC S3 e scaricare il rilevamento dell'utilizzo inattivo e gli script di terminazione nell'istanza notebook. Questi script sono configurati per essere eseguiti come lavori cron, aiutando così a risparmiare sui costi interrompendo automaticamente la capacità inattiva.
Panoramica della soluzione
Il diagramma seguente descrive la soluzione che implementiamo. Creiamo un'istanza notebook SageMaker in una sottorete privata di un VPC. Alleghiamo a tale istanza notebook una configurazione del ciclo di vita che copia uno script di spegnimento inattivo da Amazon S3 all'istanza notebook al momento dell'avvio (quando si avvia un'istanza notebook interrotta). La configurazione del ciclo di vita accede al bucket S3 tramite Collegamento privato AWS.
Questa architettura consente alla nostra istanza notebook SageMaker disabilitata per Internet di accedere ai file S3, senza attraversare la rete Internet pubblica. Poiché il traffico di rete non attraversa la rete Internet pubblica, riduciamo in modo significativo il numero di vettori che i malintenzionati possono sfruttare per compromettere la posizione di sicurezza dell'istanza notebook.
Prerequisiti
Supponiamo che tu abbia un account AWS, oltre a un Amazon VPC con almeno una sottorete privata isolata da Internet. Se non sai come creare un VPC con una sottorete pubblica/privata, dai un'occhiata questa guida. Una sottorete è isolata da Internet se la relativa tabella di instradamento non inoltra il traffico a Internet tramite il gateway NAT e il gateway Internet a Internet. La schermata seguente mostra un esempio di una tabella di route isolata. Il traffico rimane all'interno della sottorete; non ci sono gateway NAT o gateway Internet che potrebbero inoltrare il traffico a Internet.
Inoltre, abbiamo bisogno di un bucket S3. Qualsiasi bucket S3 con le impostazioni di configurazione predefinite sicure può funzionare. Assicurati di avere accesso in lettura e scrittura a questo bucket dall'account utente. Questo è importante quando testiamo la nostra soluzione. Questa voce nel Guida per l'utente S3 dovrebbe chiarire come farlo.
Ora creiamo un'istanza notebook SageMaker. L'istanza notebook deve essere distribuita in una sottorete isolata con Accesso diretto a Internet selezionato come disabile.
È inoltre necessario configurare questo notebook per l'esecuzione come utente root. In Autorizzazioni e crittografia, scegli Abilita per l'impostazione Accesso root.
Una volta configurate queste impostazioni, scegli Crea istanza del blocco note In fondo alla finestra.
Configura l'accesso ad Amazon S3
Per configurare l'accesso ad Amazon S3, completa i seguenti passaggi:
- Sulla console Amazon S3, vai al bucket S3 che utilizzi per archiviare gli script.
L'accesso agli oggetti in questo bucket è concesso solo se esplicitamente consentito tramite un Gestione dell'identità e dell'accesso di AWS (IAM).
- In questo bucket, crea una cartella denominata lifecycle-configurations.
- Copia quanto segue script da GitHub e salvalo nel tuo bucket S3 con la chiave
lifecycle-configurations/autostop.py
.
Ora possiamo iniziare a modificare la nostra rete per consentire l'accesso tra Amazon S3 e la nostra istanza notebook isolata.
- Scrivi una policy IAM con privilegi minimi che definisca l'accesso a questo bucket e allo script della policy del ciclo di vita.
- Crea un endpoint gateway AWS PrivateLink su Amazon S3.
- Crea una configurazione del ciclo di vita di SageMaker che richieda il
autostop.py
script da Amazon S3 tramite una chiamata API. - Allega la configurazione del ciclo di vita all'istanza notebook.
Dopo aver implementato questi passaggi, possiamo testare la configurazione eseguendo un comando CLI Amazon S3 in una cella del notebook. Se il comando ha esito positivo, abbiamo implementato correttamente l'accesso con privilegi minimi ad Amazon S3 da una posizione di rete isolata con AWS PrivateLink.
Un test più affidabile sarebbe lasciare l'istanza notebook inattiva e consentire l'esecuzione della policy del ciclo di vita come previsto. Se tutto va bene, l'istanza notebook dovrebbe spegnersi dopo un periodo di inattività di 5 minuti.
Configura AWS PrivateLink per Amazon S3
AWS PrivateLink è un servizio di rete che crea endpoint privati nel tuo VPC per altri servizi AWS come Cloud di calcolo elastico di Amazon (Amazon EC2), Amazon S3 e Servizio di notifica semplice Amazon (Amazon SNS). Questi endpoint facilitano le richieste API ad altri servizi AWS tramite il VPC anziché tramite Internet pubblico. Questo è il componente cruciale che consente alla nostra soluzione di accedere in modo privato e sicuro al bucket S3 che contiene il nostro script di configurazione del ciclo di vita.
- Nella console Amazon VPC, scegli endpoint.
L'elenco degli endpoint è vuoto per impostazione predefinita.
- Scegli Crea endpoint.
- Nel Categoria di servizio, selezionare Servizi AWS.
- Nel Nome di Servizio, cerca S3 e seleziona l'opzione gateway.
- Nel VPC, scegli le sottoreti private che hai creato in precedenza.
- Nel Configura tabelle di instradamento, seleziona la tabella di instradamento predefinita per quel VPC.
- Sotto Politica sui Resi, Selezionare il Custom opzione e inserire il seguente codice di polizza:
Questo documento di policy consente l'accesso in sola lettura ai bucket S3 delle configurazioni del ciclo di vita. Questa policy limita le operazioni S3 solo al bucket delle configurazioni del ciclo di vita, possiamo aggiungere bucket alla clausola delle risorse di cui abbiamo bisogno. Sebbene la policy di questo endpoint non sia l'accesso ai privilegi per la nostra istanza notebook, protegge comunque le nostre risorse del bucket S3 dalla modifica delle risorse in questo VPC.
- Per creare questo endpoint con l'AWS CLI, esegui il comando seguente:
Gli endpoint gateway modificano automaticamente le tabelle di instradamento specificate per instradare il traffico verso questo endpoint. Sebbene sia stato aggiunto un percorso, il nostro VPC è ancora isolato. L'instradamento punta a un elenco di prefissi gestiti o a un elenco di indirizzi IP predefiniti, utilizzati dal servizio endpoint per instradare il traffico attraverso questo VPC all'endpoint Amazon S3 PrivateLink.
Modifica il ruolo IAM dell'istanza notebook SageMaker
Iniziamo creando una policy IAM con privilegi minimi per il documento della policy del ruolo dell'istanza notebook.
- Sulla console IAM, scegli Termini e Condizioni.
- Scegli Crea politica.
- Sulla JSON scheda, inserisci il seguente codice:
Questa politica è un esempio di accesso con privilegio minimo, un paradigma di sicurezza che è fondamentale per a Zero Trust architettura. Questa policy consente solo le richieste di chiamate API GetObject e ListBucket, in particolare sulle risorse Amazon S3 che gestiscono le nostre policy del ciclo di vita. Questo documento di policy IAM può essere applicato solo nei casi in cui stai scaricando policy del ciclo di vita da Amazon S3.
- Salva questa politica come
S3LifecycleConfigurationReadPolicy
. - Nel pannello di navigazione, scegli Ruoli.
- Cerca e scegli il ruolo collegato alle istanze notebook isolate e modifica il documento della politica del ruolo.
- Cerca la politica appena creata e allegala al documento della politica di questo ruolo.
Ora il tuo notebook isolato dispone delle autorizzazioni per accedere ad Amazon S3 tramite GetObject
ed ListBucket
Chiamate API. Possiamo verificarlo eseguendo il seguente snippet in una cella di un notebook:
!aws s3api get-object --bucket <bucket-name> --key lifecycle-configurations/autostop.py autostop.py
A questo punto della configurazione, non dovresti più vedere un errore di autorizzazione negata, ma un errore di timeout. Questo è buono; significa che abbiamo l'autorizzazione per accedere ad Amazon S3 ma non abbiamo stabilito la connettività di rete per farlo. Lo facciamo nella prossima sezione.
Successivamente, creiamo la nostra policy e il nostro ruolo IAM tramite il Interfaccia della riga di comando di AWS (interfaccia a riga di comando dell'AWS).
- Crea la seguente policy e salva l'ARN dall'output per un passaggio successivo:
- Crea il ruolo:
- Allega la nostra policy personalizzata al nuovo ruolo:
aws iam attach-role-policy --role-name GeneralIsolatedNotebookRole --policy-arn policy-arn
- Ripetere questi passaggi per creare un nuovo criterio chiamato
StopNotebookInstance
.
Questa politica dà il autostop.py
script la possibilità di arrestare l'istanza notebook. Il JSON per questo criterio è il seguente:
- Crea e collega questa policy al ruolo dell'istanza notebook utilizzando la Console AWS per IAM o l'AWS CLI.
Consentiamo a questa policy di agire su qualsiasi istanza notebook in questo account. Questo è accettabile perché vogliamo riutilizzare questa policy per ulteriori istanze notebook. Per la tua implementazione, assicurati di creare policy separate per lo stile di accesso con privilegi minimi per qualsiasi azione aggiuntiva di SageMaker eseguita da uno specifico notebook.
Crea una configurazione del ciclo di vita
Le configurazioni del ciclo di vita sono script bash eseguiti sull'istanza notebook all'avvio. Questa caratteristica rende le configurazioni del ciclo di vita flessibili e potenti, ma limitate dalle capacità del linguaggio di programmazione bash. Un modello di progettazione comune consiste nell'esecuzione di script secondari scritti in un linguaggio di programmazione di alto livello come Python. Questo modello ci consente di gestire le configurazioni del ciclo di vita nel controllo del codice sorgente. Possiamo anche definire logiche di gestione dello stato abbastanza complesse utilizzando un linguaggio di alto livello.
La seguente configurazione del ciclo di vita è uno script bash che copia uno script Python da Amazon S3. Dopo aver copiato il file, lo script bash crea una nuova voce in cron che esegue lo script Python ogni 5 minuti. Lo script Python effettua una chiamata API al processo Jupyter in esecuzione sull'istanza notebook. Questa API viene utilizzata per discernere se l'istanza notebook è rimasta inattiva per la durata del timeout. Se lo script determina che l'istanza notebook è rimasta inattiva negli ultimi 5 minuti, spegnerà l'istanza notebook. Questa è una buona pratica per ridurre i costi e le emissioni. Il periodo di timeout di inattività di 5 minuti può essere modificato modificando il valore di IDLE_TIME
variabile.
Per creare una configurazione del ciclo di vita, completare i seguenti passaggi:
- Sulla console di SageMaker, scegli Notebook.
- Scegli Configurazioni del ciclo di vita.
- Scegli Crea configurazione.
- Sulla Avvia scheda taccuino, inserisci lo script bash precedente.
- Fornire un nome descrittivo per lo script.
- Scegli Crea configurazione.
Puoi anche creare la configurazione del ciclo di vita con l'AWS CLI (consulta il codice seguente). Si noti che lo script stesso deve essere codificato in base64. Tienilo a mente quando utilizzi l'AWS CLI per creare queste configurazioni.
Dopo aver creato la configurazione del ciclo di vita, viene visualizzata nell'elenco delle configurazioni disponibili.
- Da qui, torna all'istanza del tuo notebook. Se l'istanza notebook è in esecuzione, disattivarla selezionando l'istanza notebook e scegliendo Fermare nell'angolo in alto a sinistra.
- Scegli Modifica nella sezione Impostazioni dell'istanza del notebook.
- Seleziona la tua nuova configurazione del ciclo di vita dall'elenco e scegli Aggiorna istanza notebook.
L'ARN della configurazione del ciclo di vita è ora collegato all'istanza notebook.
A tale scopo nell'AWS CLI, esegui il comando seguente:
aws sagemaker update-notebook-instance --notebook-instance-name notebook-name --lifecycle-config-name lifecycle-config-name
Testare l'accesso alla rete Amazon S3 da un'istanza notebook isolata
Per testare questo processo, dobbiamo assicurarci di poter copiare il file Python da Amazon S3 nella nostra istanza notebook isolata. Poiché abbiamo configurato la nostra configurazione del ciclo di vita per l'esecuzione all'avvio del notebook, è sufficiente avviare la nostra istanza notebook per eseguire il test. Quando il nostro notebook si avvia, apri un notebook Jupyter ed esamina il file system locale. I nostri autostop.py
lo script del bucket S3 è stato ora installato nella nostra istanza notebook.
Se il tuo notebook dispone dei permessi di root, puoi anche esaminare il crontab del notebook eseguendo quanto segue:
Dobbiamo eseguire questo comando come utente root perché LCC aggiunge il lavoro cron al servizio cron come utente root. Ciò dimostra che il autostop.py
lo script è stato aggiunto al crontab all'avvio del notebook. Poiché questo comando apre il file cron, è necessario interrompere manualmente il comando del kernel per visualizzare l'output.
ripulire
Quando distruggi l'endpoint VPC, l'istanza notebook perde l'accesso al bucket S3. Ciò introduce un errore di timeout all'avvio del notebook. Rimuovere la configurazione del ciclo di vita dall'istanza notebook. A tale scopo, seleziona l'istanza notebook all'interno del servizio Amazon SageMaker della Console di gestione AWS e scegli Modifica nella sezione Impostazioni dell'istanza del notebook. Ora l'istanza notebook non tenta di eseguire il pull di autostop.py
script di Amazon S3.
Conclusione
SageMaker consente di eseguire il provisioning di istanze notebook all'interno di una sottorete privata di un VPC. Come opzione è anche possibile disabilitare l'accesso a Internet per tali notebook per migliorare la posizione di sicurezza di questi notebook. La disabilitazione dell'accesso a Internet aggiunge una difesa approfondita contro i malintenzionati e consente ai data scientist di lavorare con i notebook in un ambiente sicuro.
L'autore
Dan Ferguson è un Solutions Architect presso Amazon Web Services, concentrandosi principalmente su investimenti di Private Equity e Growth Equity in startup in fase avanzata.
- Coinsmart. Il miglior scambio di bitcoin e criptovalute d'Europa.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. ACCESSO LIBERO.
- Criptofalco. Radar Altcoin. Prova gratuita.
- Fonte: https://aws.amazon.com/blogs/machine-learning/secure-amazon-s3-access-for-isolated-amazon-sagemaker-notebook-instances/
- "
- &
- 11
- 7
- 9
- accesso
- Il mio account
- Legge
- Action
- azioni
- aggiuntivo
- Tutti
- Sebbene il
- Amazon
- Amazon Web Services
- api
- architettura
- disponibile
- AWS
- essendo
- sistema
- chiamata
- funzionalità
- Ultra-Grande
- codice
- Uncommon
- complesso
- componente
- Calcolare
- Configurazione
- Connettività
- consolle
- contiene
- di controllo
- Costi
- potuto
- crea
- cruciale
- dati
- scienza dei dati
- decentrata
- Difesa
- distribuzione
- Design
- distruggere
- rivelazione
- non
- giù
- eco
- effetto
- crittografia
- endpoint
- Ambiente
- equità
- sviluppate
- esempio
- previsto
- Sfruttare
- caratteristica
- i seguenti
- Avanti
- buono
- Crescita
- aiuta
- qui
- Alta
- Come
- Tutorial
- HTTPS
- Identità
- realizzare
- implementato
- importante
- competenze
- informazioni
- Internet
- Investimenti
- IP
- Gli indirizzi IP
- IT
- Lavoro
- Offerte di lavoro
- Le
- Lingua
- lanciare
- Lasciare
- Livello
- Limitato
- linea
- LINK
- Lista
- locale
- località
- gestione
- manualmente
- mente
- Navigazione
- Rete
- traffico di rete
- internazionale
- taccuino
- notifica
- numero
- aprire
- apre
- Operazioni
- Opzione
- minimo
- Altro
- paradigma
- Cartamodello
- Termini e Condizioni
- politica
- potente
- Direttore
- un bagno
- Private equity
- processi
- Programmazione
- dimostra
- la percezione
- raccomandare
- ridurre
- risorsa
- Risorse
- strada
- Correre
- running
- Scienze
- scienziati
- Cerca
- secondario
- sicuro
- problemi di
- selezionato
- servizio
- Servizi
- set
- regolazione
- chiusura
- Un'espansione
- So
- Soluzioni
- in particolare
- inizia a
- inizio
- startup
- Startup
- Regione / Stato
- dichiarazione
- conservazione
- Tornare al suo account
- di successo
- Con successo
- supporto
- sistema
- test
- Attraverso
- tempo
- top
- traffico
- us
- uso
- APPREZZIAMO
- Convalida
- Visualizza
- virtuale
- sito web
- servizi web
- entro
- senza
- Lavora