Osiguravanje privatnosti krajnjih korisnika i sigurnost podataka za računalno učenje pomoću AWS virtualnog privatnog oblaka

Karan -, Enrique Garcia Perez i Tassilo Klein (ML Research Berlin)

Velika raspoloživost podataka zajedno s neprekidno smanjenim troškovima za računalnu moć obrade temelj je suvremenog strojnog učenja (ML). Ovaj razvoj zajedno s nedavnim poboljšanjima algoritama nagovijestio je novu eru umjetne inteligencije: duboko učenje.

Iako tehnologija ima svoje korijene još u 60-ima, nedavno je doživjela neviđene proboje u svim vrstama domena, od računalnog vida do prirodne obrade jezika. Ne iznenađuje da je duboko učenje prešlo u središte pozornosti i akademske zajednice i industrije. Iako se još uvijek razvija u velikoj mjeri, on postaje faktički standardna roba za znanstvenike podataka.

S uspjehom dubokog učenja dolazi glad za sve većim setovima podataka. Međutim, pravilno rukovanje potrebnim velikim podacima može biti naporno i bolno. Određene informacije mogu biti osjetljive i ne mogu biti izložene vanjskom svijetu, jer privatnost podataka mora biti zajamčena u svakom trenutku. Najistaknutiji primjer u tom pogledu su zdravstveni podaci koji zahtijevaju prikupljanje i pohranjivanje potencijalno velike količine osobnih podataka. Općenito, obrada velikih podataka ima vrlo dinamične i skalabilne potrebe za infrastrukturom zbog fluktuacije u zadacima i podacima. Spoj ovih nedavnih događaja može biti težak i zahtijeva zaštitne mjere, kao i promišljeno planiranje.

Sada zamislite da ste mala akademska ili poslovna istraživačka skupina i želite upravljati ML infrastrukturom, a istovremeno jamčite privatnost podataka. Naš tim iz SAP ML Research radi na rješavanju ovog problema predlažući Amazonovu infrastrukturu virtualnog privatnog oblaka (VPC) kako bi bili sigurni da rješenja za strojno učenje idu ruku pod ruku s privatnošću podataka. Ovaj članak definira osnovnu VPC topologiju idealnu za razvoj i upotrebu ML. Ukratko, VPC-ovi u oblaku omogućuju vam definiranje i reguliranje različitih zahtjeva za pristup u vrlo skalabilnom okruženju. Iako se komponente ovog VPC-a mogu prirodno konfigurirati pomoću AWS konzole, to ručno nije niti prikladno niti ponovljivo. Stoga je automatiziranje ovog koraka ključno za postavljanje takve infrastrukturne mreže.

Ovdje je u igri snažni motor automatizacije otvorenog koda: Ansible. Na kraju ovog vodiča sve što trebate je pokrenuti jednostavnu naredbu koja izvršava Anscribel playbook (to je konfiguracija, skripta za implementaciju) i sve ste spremni! Konkretno, nema potrebe ponovno stvarati ovu infrastrukturu nakon što je postavljena. Međutim, možda ćete htjeti dodati dodatne instance na VPC, npr. dajući novim studentima ili zaposlenicima pojedine računske čvorove.

VPC koji smo stvorili sastoji se od dvije podmreže: javne i privatne.

Javna podmreža sadrži komponente, kao što je bastion host, koji je posvećena instanca koja kontrolira pristup privatnoj mreži formiranjem lanca SSH veza, na primjer, bastion do čvora za računanje.

Unutar privatne podmreže nalaze se komponente koje pružaju ili posluju na potencijalno (povjerljivim) podacima. To može uključivati ​​računske instance korištene za modele za obuku ili poslužitelje baze podataka. Kako sav ulazni promet teče kroz bastion host, on omogućava kontrolu prometa. Teoretski, možete povezati nekoliko domaćina bastiona za još veću sigurnost. Međutim, radi jednostavnosti upotrijebili smo jedan, ali opet dovoljan primjerak. I na kraju, kako bi se komponentama omogućilo pristup internetu, na primjer za instaliranje softverskog paketa, potrebna je još jedna komponenta. Tu se pojavljuje NAT gateway. U našem primjeru implementiran je uz njega priključenu elastičnu javnu IP adresu.

VPC topologija: kako komponente utječu na interakciju

Na slici 1 prikazana je shema VPC infrastrukture koja se sastoji od privatnih i javnih podmreža.

Slika 1: VPC infrastrukturni prikaz

Odgovorna automatizacija

Odgovorne knjige za reprodukciju koriste takozvane uloge i zadatke za strukturiranje konfiguracijskog sadržaja u modularne komponente. Naš se projekt sastoji od playbook.yml, koji sadrži jedinstvenu ulogu stvaranja VPC-a. Datoteka main.yml nadalje dijeli ulogu na popisu zadataka koji na osnovnoj razini nisu ništa drugo do poziv modulu Ansible. U našem se slučaju zadaće sastoje od stvaranja VPC-a, javnih i privatnih podmreža, NAT gatewaya, internetskog gateway-a i sigurnosnih grupa. Molimo pogledajte datoteke u github skladištu za određene detalje zadatka.

Pored gore navedenih datoteka, vars.yml za razliku od ostalih zahtijeva i malo prilagođavanja od vas. Sadrži definiciju svih potrebnih varijabli okruženja, kao što su adresni prostor podmreže i pristupne tipke.

Sl. 2 daje pregled i objašnjenje svih ključnih varijabli u datoteci vars.yml. Možete pronaći varijable za izmjenu u isječku datoteke

NAPOMENA: Promijenite varijable u var.yml datoteci, poput vašeg pristupnog ključa i VPC imena, u skladu s vašim potrebama.

Isječak odgovarajuće knjige za reprodukciju (vars.yml) za postavljanje VPC-a

# Varijable autorizacije za AWS
aws_access_key: "Navedite pristupni ključ"
aws_secret_key: "Unesite svoj tajni ključ"
aws_region: "eu-zapad-1"
# Informacije o VPC
vpc_name: "ML_Research_VPC"
vpc_cidr_block: "10.0.0.0/16"
# Za pravila sigurnosne grupe - neobavezno (fleksibilno i lako kasnije mijenjati)
my_ip: "X.X.X.X"
# definiranje javne podmreže
public_subnet_1_cidr: "10.0.0.0/24"
# definiranje privatne podmreže
private_subnet_1_cidr: "10.0.1.0/24"

Nakon što preuzmete sve datoteke iz knjige, sve što morate učiniti da biste postavili VPC konfiguraciju unutar AWS-a, jest pokrenuti glavnu skriptu knjige pomoću:

ansible-playbook „datoteka vaše datoteke za reprodukciju.yml“ –i inventar –e @ vars.yml

Uspješno stvarajući VPC konfiguraciju, vaš bi terminal trebao izgledati kao na slici 3:

Slika 3: Uspješno izvršavanje Playbook-a za stvaranje VPC-a

Nakon što ste slijedili prethodne korake, možete otići na svoju AWS konzolu i provjeriti nedavno kreiranu VPC konfiguraciju (u našem slučaju to je ML_RESEARCH_VPC):

Sada kada ste postavili infrastrukturu, možete početi pokretati instance unutar. Prva instanca koju možda želite upotrijebiti je bastion host. Kao što je prethodno opisano, on jednostavno djeluje kao most, omogućujući pristup instancama unutar privatne podmreže samo ovlaštenim korisnicima.

Konfiguracija domaćina bastiona

Kako bastion host ispunjava pojedinačni zadatak pokretanja aplikacije ili usluge da izdrži napade, dovoljno je odabrati manji tip EC2 instance (virtualni poslužitelj u terminologiji Amazon Web Services), poput t2.micro. Važno je da je instanca povezana s javnom podmrežom, jer ona mora biti dostupna s Interneta na priključku 22 za SSH. U našem slučaju svi su zahtjevi ispunjeni načinom na koji se provode sigurnosne skupine (prema zadanom je dostupan samo SSH), što dopušta autorizirani pristup privatnim instancama samo prolaskom kroz bastion host. Bastion host, na taj način, djeluje kao kontrolna točka u javnoj podmreži.

Evo kratke interaktivne demonstracije o pokretanju bastiona: Dopušteni raspon IP-a je u ovom slučaju globalan, ali možda biste ga trebali sigurnosnim ograničenjima ograničiti putem svirke Ansible, ovisno o vašem slučaju upotrebe.

Nakon što se bastion host pokrene, možete pristupiti vašim privatnim instancama samo pomoću SSH-a, jer se nalaze u privatnoj mreži. Da biste bili dostupni SSH, morate dodati javne ključeve ovlaštenih korisnika u datoteku .ssh / autorizirani ključevi i na bastion i instancu. Molimo pogledajte ovaj vodič za više detalja.

Pokretanje EC2 instancije u privatnoj podmreži VPC-a

Sada kada smo postavili sve okruženje, gotovo smo gotovi i preostaje nam samo još jedan korak - pokretanje EC2 instance za strojno učenje. Dopustimo da vam pokažemo primjer kako možete pokrenuti instance GPU-a u svom VPC-u i za razvoj ili pokretanje vaših rješenja za duboko učenje na njemu. Sve što trebate učiniti je odabrati vrstu instancije koju želite pokrenuti ovisno o vašem cilju, a zatim je priključite na stvoreni VPC.

SSH konfiguracija za pristup instanci

Sada kada se instanca pokreće, sljedeći korak je izgradnja veze s njom. Privatnoj instanci možete pristupiti izravno omogućujući SSH prosljeđivanje putem bastion hosta. Ovo samo zahtijeva uređivanje /.ssh/config datoteke na vašem lokalnom stroju. Na ovaj način možete izbjeći zamorni postupak ručnog povezivanja sa svojim bastionom, a potom i domaćinom. Sve što trebate učiniti je prilagoditi podebljane komponente.

Domaćin 10.0.1. *
    IdentityFile /path-to-your-private-key.pem
    Korisnik ec2-korisnik
    ProxyCommand ssh ec2-korisnik @ bastion -W% h:% p
    Koristite Keychain da
Bastion domaćina
    HostName [ip adresa bastiona]
    Korisnik ec2-korisnik
    IdentityFile /path-to-your-private-key.pem
    NaprijedAgent Da

To će vam u osnovi omogućiti pristup privatnoj instanci s vašeg lokalnog stroja bez ručnog povezivanja s vašim bastionom, a zatim s privatnom instancom. Ipak ćete se možda htjeti povezati s bastionom za zadatke poput stavljanja SSH ključeva.

Nakon umetanja IP koda povezujete se na vašu privatnu instancu:

                    ssh [private-ip of instance]

Ipak ćete se možda htjeti povezati s bastionom za administrativne zadatke, poput SSH ključeva. Da biste se povezali s host bastionom, sve što treba učiniti je:

                            ssh bastion

Evo kako pristupiti bastion hostu pomoću sljedećih naredbi: (pokrenuta privatna instanca ima adresu 10.0.1.99)

Važno imati na umu: preporučuje se imati dva različita ključa, jedan za bastion host i jedan za vašu privatnu instancu. Nikada ne pohranjujte svoje privatne ključeve na bastion host jer to ugrožava željenu privatnost.

Konačno, opisana infrastruktura osigurava sigurnu mrežu za razvoj ML rješenja i održavanje podataka. Međutim, kako bi se učinila robusnijom i manje sklonom zastoju u slučaju da vam zona ne bude dostupna, topologija se može proširiti i izvan ovog vodiča. Takav daljnji korak može uključivati ​​dizajn VPC-a koji obuhvaća više zona dostupnosti, tako da se svi resursi ne nalaze na jednom određenom fizičkom mjestu i da se izbjegnu nepotrebna kašnjenja ili zastoji.

Sada možete početi graditi vlastiti VPC prema vašem slučaju. Slobodno komentirajte za bilo kakva pitanja ili ideje!

Pristupite cijeloj knjižici pomoću sljedećeg github-ovog spremišta.

Karan, mr.sc. Student s TU Berlin usmjerio je svoju pozornost na ML infrastrukturu navedenu u ovom postu.