Dalam posting ini, kami akan mendemonstrasikan cara meluncurkan instance notebook dengan aman di subnet pribadi dari sebuah Cloud Pribadi Virtual Amazon (Amazon VPC), dengan akses internet dinonaktifkan, dan untuk terhubung dengan aman ke Layanan Penyimpanan Sederhana Amazon (Amazon S3) menggunakan titik akhir VPC. Postingan ini ditujukan untuk arsitek jaringan dan keamanan yang mendukung tim ilmu data terdesentralisasi di AWS.
Instans notebook SageMaker dapat digunakan dalam subnet pribadi dan kami menyarankan untuk menerapkannya tanpa akses internet. Mengamankan instans notebook Anda dalam subnet pribadi membantu mencegah akses internet yang tidak sah ke instans notebook Anda, yang mungkin berisi informasi sensitif.
Contoh dalam posting ini akan menggunakan contoh Notebook Konfigurasi Siklus Hidup (LCC) untuk terhubung ke titik akhir VPC S3 dan mengunduh skrip deteksi dan penghentian penggunaan idle ke instans notebook. Skrip ini dikonfigurasi untuk dijalankan sebagai tugas cron, sehingga membantu menghemat biaya dengan menghentikan kapasitas menganggur secara otomatis.
Ikhtisar solusi
Diagram berikut menjelaskan solusi yang kami terapkan. Kami membuat instance notebook SageMaker di subnet pribadi VPC. Kami melampirkan ke instans notebook itu sebuah konfigurasi siklus hidup yang menyalin skrip shutdown idle dari Amazon S3 ke instans notebook saat boot (saat memulai instans notebook yang dihentikan). Konfigurasi siklus hidup mengakses bucket S3 melalui Tautan Pribadi AWS.
Arsitektur ini memungkinkan instans notebook SageMaker kami yang dinonaktifkan internet untuk mengakses file S3, tanpa melintasi internet publik. Karena lalu lintas jaringan tidak melintasi internet publik, kami secara signifikan mengurangi jumlah vektor yang dapat dieksploitasi oleh pelaku jahat untuk membahayakan postur keamanan instance notebook.
Prasyarat
Kami menganggap Anda memiliki akun AWS, selain VPC Amazon dengan setidaknya satu subnet pribadi yang diisolasi dari internet. Jika Anda tidak tahu cara membuat VPC dengan subnet publik/pribadi, lihat panduan ini. Subnet diisolasi dari internet jika tabel rutenya tidak meneruskan lalu lintas ke internet melalui gateway NAT dan gateway Internet ke internet. Tangkapan layar berikut menunjukkan contoh tabel rute yang terisolasi. Lalu lintas tetap dalam subnet; tidak ada gateway NAT atau gateway internet yang dapat meneruskan lalu lintas ke internet.
Selain itu, kita membutuhkan ember S3. Bucket S3 apa pun dengan pengaturan konfigurasi default aman dapat berfungsi. Pastikan Anda memiliki akses baca dan tulis ke bucket ini dari akun pengguna. Ini penting ketika kami menguji solusi kami. Entri ini di Panduan Pengguna S3 harus menjelaskan bagaimana melakukan ini.
Sekarang kita membuat instance notebook SageMaker. Instance notebook harus disebarkan ke subnet yang terisolasi dengan Akses Internet Langsung dipilih sebagai Disabled.
Kita juga perlu mengkonfigurasi notebook ini untuk dijalankan sebagai pengguna root. Di bawah Izin dan enkripsi, pilih Aktifkan untuk pengaturan akses Root.
Setelah pengaturan ini dikonfigurasi, pilih Buat instance notebook di bagian bawah jendela.
Konfigurasikan akses ke Amazon S3
Untuk mengonfigurasi akses ke Amazon S3, selesaikan langkah-langkah berikut:
- Di konsol Amazon S3, navigasikan ke bucket S3 yang Anda gunakan untuk menyimpan skrip.
Akses ke objek dalam bucket ini hanya diberikan jika diizinkan secara eksplisit melalui Identitas AWS dan Manajemen Akses (IAM).
- Di bucket ini, buat folder bernama lifecycle-configurations.
- Salin berikut ini skrip dari GitHub dan simpan di ember S3 Anda dengan kuncinya
lifecycle-configurations/autostop.py
.
Kami sekarang dapat mulai memodifikasi jaringan kami untuk mengizinkan akses antara Amazon S3 dan instans notebook kami yang terisolasi.
- Tulis kebijakan IAM dengan hak istimewa paling rendah yang menentukan akses ke bucket ini dan skrip kebijakan siklus proses.
- Buat titik akhir gateway AWS PrivateLink ke Amazon S3.
- Buat konfigurasi siklus hidup SageMaker yang meminta
autostop.py
skrip dari Amazon S3 melalui panggilan API. - Lampirkan konfigurasi siklus hidup ke instans notebook.
Setelah Anda menerapkan langkah-langkah ini, kami dapat menguji konfigurasi dengan menjalankan perintah Amazon S3 CLI di sel notebook. Jika perintah berhasil, kami telah berhasil menerapkan akses hak istimewa paling rendah ke Amazon S3 dari lokasi jaringan yang terisolasi dengan AWS PrivateLink.
Pengujian yang lebih kuat adalah membiarkan instance notebook tidak digunakan dan mengizinkan kebijakan siklus hidup berjalan seperti yang diharapkan. Jika semuanya berjalan dengan baik, instans notebook akan dimatikan setelah periode diam selama 5 menit.
Konfigurasikan AWS PrivateLink untuk Amazon S3
AWS PrivateLink adalah layanan jaringan yang membuat titik akhir pribadi di VPC Anda untuk layanan AWS lainnya seperti Cloud komputasi elastis Amazon (Amazon EC2), Amazon S3, dan Layanan Pemberitahuan Sederhana Amazon (Amazon SNS). Titik akhir ini memfasilitasi permintaan API ke layanan AWS lain melalui VPC Anda, bukan melalui internet publik. Ini adalah komponen penting yang memungkinkan solusi kami mengakses bucket S3 secara pribadi dan aman yang berisi skrip konfigurasi siklus hidup kami.
- Di konsol Amazon VPC, pilih Titik akhir.
Daftar titik akhir kosong secara default.
- Pilih Buat titik akhir.
- Untuk Kategori layanan, pilih Layanan AWS.
- Untuk Nama layanan, cari S3 dan pilih opsi gateway.
- Untuk VPC, pilih subnet pribadi mana pun yang Anda buat sebelumnya.
- Untuk Konfigurasikan tabel rute, pilih tabel rute default untuk VPC tersebut.
- Bawah Kebijakan, Pilih Kustom pilihan dan masukkan kode kebijakan berikut:
Dokumen kebijakan ini memungkinkan akses hanya baca ke bucket S3 konfigurasi siklus hidup. Kebijakan ini membatasi operasi S3 hanya pada bucket konfigurasi siklus hidup, kami dapat menambahkan bucket ke klausa sumber daya sesuai kebutuhan. Meskipun kebijakan titik akhir ini bukan merupakan akses hak istimewa untuk instans notebook kami, kebijakan ini tetap melindungi sumber daya bucket S3 kami agar tidak diubah oleh sumber daya di VPC ini.
- Untuk membuat titik akhir ini dengan AWS CLI, jalankan perintah berikut:
Titik akhir gateway secara otomatis memodifikasi tabel rute yang ditentukan untuk merutekan lalu lintas ke titik akhir ini. Meskipun rute telah ditambahkan, VPC kami masih terisolasi. Rute menunjuk ke daftar awalan terkelola, atau daftar alamat IP yang telah ditentukan sebelumnya, yang digunakan oleh layanan titik akhir untuk merutekan lalu lintas melalui VPC ini ke titik akhir Amazon S3 PrivateLink.
Ubah peran IAM instans notebook SageMaker
Kami mulai dengan membuat kebijakan IAM dengan hak istimewa paling rendah untuk dokumen kebijakan peran instans notebook kami.
- Di konsol IAM, pilih Kebijakan.
- Pilih Buat kebijakan.
- pada JSON tab, masukkan kode berikut:
Kebijakan ini adalah contoh dari akses hak istimewa terkecil, sebuah paradigma keamanan yang mendasar bagi a Nol Kepercayaan Arsitektur. Kebijakan ini mengizinkan permintaan untuk panggilan GetObject dan ListBucket API saja, khususnya pada sumber daya Amazon S3 yang mengelola kebijakan siklus hidup kami. Dokumen kebijakan IAM ini hanya dapat diterapkan jika Anda mengunduh kebijakan siklus hidup dari Amazon S3.
- Simpan kebijakan ini sebagai
S3LifecycleConfigurationReadPolicy
. - Di panel navigasi, pilih Peran.
- Cari dan pilih peran yang dilampirkan ke instans notebook terisolasi dan edit dokumen kebijakan peran.
- Cari kebijakan yang baru dibuat dan lampirkan ke dokumen kebijakan peran ini.
Sekarang notebook terisolasi Anda memiliki izin untuk mengakses Amazon S3 melalui GetObject
dan ListBucket
panggilan API. Kami dapat menguji ini dengan menjalankan cuplikan berikut di sel buku catatan:
!aws s3api get-object --bucket <bucket-name> --key lifecycle-configurations/autostop.py autostop.py
Pada titik ini dalam konfigurasi, Anda seharusnya tidak lagi melihat kesalahan izin ditolak, tetapi kesalahan batas waktu. Ini bagus; itu berarti kami memiliki izin untuk mengakses Amazon S3 tetapi kami belum membuat konektivitas jaringan untuk melakukannya. Kami melakukan ini di bagian berikutnya.
Selanjutnya, kami membuat kebijakan dan peran IAM kami melalui Antarmuka Baris Perintah AWS (AWS CLI).
- Buat kebijakan berikut dan simpan ARN dari output untuk langkah selanjutnya:
- Buat peran:
- Lampirkan kebijakan khusus kami ke peran baru:
aws iam attach-role-policy --role-name GeneralIsolatedNotebookRole --policy-arn policy-arn
- Ulangi langkah-langkah ini untuk membuat kebijakan baru yang disebut
StopNotebookInstance
.
Kebijakan ini memberikan autostop.py
skrip kemampuan untuk mematikan instance notebook. JSON untuk kebijakan ini adalah sebagai berikut:
- Buat dan lampirkan kebijakan ini ke peran instans notebook menggunakan AWS Console untuk IAM atau AWS CLI.
Kami mengizinkan kebijakan ini untuk bertindak pada instance notebook apa pun di akun ini. Ini dapat diterima karena kami ingin menggunakan kembali kebijakan ini untuk instans notebook tambahan. Untuk implementasi Anda, pastikan untuk membuat kebijakan gaya akses paling tidak istimewa yang terpisah untuk tindakan SageMaker tambahan apa pun yang dilakukan oleh notebook tertentu.
Buat konfigurasi siklus hidup
Konfigurasi siklus hidup adalah skrip bash yang berjalan pada instance notebook saat startup. Fitur ini membuat konfigurasi siklus hidup fleksibel dan kuat, tetapi dibatasi oleh kemampuan bahasa pemrograman bash. Pola desain yang umum adalah menjalankan skrip sekunder yang ditulis dalam bahasa pemrograman tingkat tinggi seperti Python. Pola ini memungkinkan kita untuk mengelola konfigurasi siklus hidup dalam kontrol sumber. Kami juga dapat mendefinisikan logika manajemen keadaan yang cukup kompleks menggunakan bahasa tingkat tinggi.
Konfigurasi siklus hidup berikut adalah skrip bash yang menyalin skrip Python dari Amazon S3. Setelah menyalin file, skrip bash membuat entri baru di cron yang menjalankan skrip Python setiap 5 menit. Skrip Python membuat panggilan API ke proses Jupyter yang berjalan pada instance notebook. API ini digunakan untuk membedakan apakah instance notebook telah menganggur selama durasi waktu habis. Jika skrip menentukan instans notebook telah menganggur selama 5 menit terakhir, skrip akan mematikan instans notebook. Ini adalah praktik yang baik untuk penghematan biaya & emisi. Periode waktu tunggu idle 5 menit dapat dimodifikasi dengan mengubah nilai dari IDLE_TIME
variabel.
Untuk membuat konfigurasi siklus hidup, selesaikan langkah-langkah berikut:
- Di konsol SageMaker, pilih notebook.
- Pilih Konfigurasi siklus hidup.
- Pilih Buat konfigurasi.
- pada Mulai tab buku catatan, masukkan skrip bash sebelumnya.
- Berikan nama deskriptif untuk skrip.
- Pilih Buat konfigurasi.
Anda juga dapat membuat konfigurasi siklus hidup dengan AWS CLI (lihat kode berikut). Perhatikan bahwa skrip itu sendiri harus dikodekan base64. Ingatlah hal ini saat menggunakan AWS CLI untuk membuat konfigurasi ini.
Setelah Anda membuat konfigurasi siklus hidup, itu muncul dalam daftar konfigurasi yang tersedia.
- Dari sini, navigasikan kembali ke instance notebook Anda. Jika instans notebook sedang berjalan, matikan dengan memilih instans notebook dan pilih berhenti di sudut kiri atas.
- Pilih Edit di bagian Pengaturan contoh notebook.
- Pilih konfigurasi siklus hidup baru Anda dari daftar dan pilih Perbarui contoh buku catatan.
ARN dari konfigurasi siklus hidup sekarang dilampirkan ke instans notebook Anda.
Untuk melakukan ini di AWS CLI, jalankan perintah berikut:
aws sagemaker update-notebook-instance --notebook-instance-name notebook-name --lifecycle-config-name lifecycle-config-name
Uji akses jaringan Amazon S3 dari instans notebook terisolasi
Untuk menguji proses ini, kita perlu memastikan bahwa kita dapat menyalin file Python dari Amazon S3 ke instance notebook terisolasi kita. Karena kami mengonfigurasi konfigurasi siklus hidup kami untuk dijalankan pada startup notebook, kami hanya perlu memulai instance notebook kami untuk menjalankan pengujian. Saat notebook kita mulai, buka notebook Jupyter dan periksa sistem file lokal. Kita autostop.py
skrip dari bucket S3 sekarang telah diinstal ke instance notebook kami.
Jika buku catatan Anda memiliki izin root, Anda bahkan dapat memeriksa crontab buku catatan dengan menjalankan yang berikut ini:
Kita perlu menjalankan perintah ini sebagai pengguna root karena LCC menambahkan tugas cron ke layanan cron sebagai pengguna root. Ini membuktikan bahwa autostop.py
skrip telah ditambahkan ke crontab pada startup notebook. Karena perintah ini membuka file cron, Anda harus menghentikan perintah kernel secara manual untuk melihat hasilnya.
Membersihkan
Saat Anda menghancurkan titik akhir VPC, instans notebook kehilangan akses ke bucket S3. Ini memperkenalkan kesalahan batas waktu pada startup notebook. Hapus konfigurasi siklus hidup dari instans notebook. Untuk melakukannya, pilih instans notebook dalam layanan Amazon SageMaker dari AWS Management Console dan pilih Edit di bagian Pengaturan contoh notebook. Sekarang instance notebook tidak mencoba menarik autostop.py
skrip dari Amazon S3.
Kesimpulan
SageMaker memungkinkan Anda untuk menyediakan instans notebook dalam subnet pribadi VPC. Sebagai opsi, Anda juga dapat menonaktifkan akses internet untuk notebook tersebut untuk meningkatkan postur keamanan notebook ini. Menonaktifkan akses internet menambah pertahanan mendalam terhadap aktor jahat, dan memungkinkan ilmuwan data bekerja dengan notebook di lingkungan yang aman.
tentang Penulis
Dan Ferguson adalah Arsitek Solusi di Amazon Web Services, dengan fokus utama pada investasi Ekuitas Pribadi & Ekuitas Pertumbuhan ke perusahaan rintisan tahap akhir.
- Coinsmart. Pertukaran Bitcoin dan Crypto Terbaik Eropa.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. AKSES GRATIS.
- CryptoHawk. Radar Altcoin. Uji Coba Gratis.
- Sumber: https://aws.amazon.com/blogs/machine-learning/secure-amazon-s3-access-for-isolated-amazon-sagemaker-notebook-instances/
- "
- &
- 11
- 7
- 9
- mengakses
- Akun
- Bertindak
- Tindakan
- tindakan
- Tambahan
- Semua
- Meskipun
- Amazon
- Amazon Web Services
- api
- arsitektur
- tersedia
- AWS
- makhluk
- batas
- panggilan
- kemampuan
- Kapasitas
- kode
- Umum
- kompleks
- komponen
- menghitung
- konfigurasi
- Konektivitas
- konsul
- mengandung
- kontrol
- Biaya
- bisa
- menciptakan
- sangat penting
- data
- ilmu data
- Terdesentralisasi
- Pertahanan
- penggelaran
- Mendesain
- menghancurkan
- Deteksi
- Tidak
- turun
- gema
- efek
- enkripsi
- Titik akhir
- Lingkungan Hidup
- keadilan
- mapan
- contoh
- diharapkan
- Mengeksploitasi
- Fitur
- berikut
- Depan
- baik
- Pertumbuhan
- membantu
- di sini
- High
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTTPS
- identitas
- melaksanakan
- diimplementasikan
- penting
- memperbaiki
- informasi
- Internet
- Investasi
- IP
- Alamat IP
- IT
- Pekerjaan
- Jobs
- kunci
- bahasa
- jalankan
- Meninggalkan
- Tingkat
- Terbatas
- baris
- LINK
- Daftar
- lokal
- tempat
- pengelolaan
- manual
- keberatan
- Navigasi
- jaringan
- lalu lintas jaringan
- jaringan
- buku catatan
- pemberitahuan
- jumlah
- Buka
- membuka
- Operasi
- pilihan
- urutan
- Lainnya
- pola pikir
- pola
- Kebijakan
- kebijaksanaan
- kuat
- Utama
- swasta
- Ekuitas Pribadi
- proses
- Pemrograman
- membuktikan
- publik
- sarankan
- menurunkan
- sumber
- Sumber
- Rute
- Run
- berjalan
- Ilmu
- ilmuwan
- Pencarian
- sekunder
- aman
- keamanan
- terpilih
- layanan
- Layanan
- set
- pengaturan
- penutupan
- Sederhana
- So
- Solusi
- Secara khusus
- awal
- dimulai
- startup
- Startups
- Negara
- Pernyataan
- penyimpanan
- menyimpan
- sukses
- berhasil
- mendukung
- sistem
- uji
- Melalui
- waktu
- puncak
- lalu lintas
- us
- menggunakan
- nilai
- Verifikasi
- View
- maya
- jaringan
- layanan web
- dalam
- tanpa
- Kerja