Zagotavljanje zasebnosti in varnosti podatkov za strojno učenje z uporabo virtualnega zasebnega oblaka AWS

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

Velika razpoložljivost podatkov skupaj z nenehno zniževanjem stroškov za računalniško moč procesiranja je osnova sodobnega strojnega učenja (ML). Ta razvoj skupaj z nedavnimi algoritmičnimi izboljšavami je napovedal novo obdobje umetne inteligence: globoko učenje.

Čeprav ima tehnologija svoje korenine že v 60. letih, je v zadnjem času doživela neverjetne preboje na vseh vrstah domen, od računalniškega vida do obdelave naravnega jezika. Presenetljivo je, da se je globoko učenje preselilo v središče pozornosti tako akademskega kot industrijskega sektorja. Čeprav se še vedno razvija v velikem obsegu, postaja dejanski standard za znanstvenike podatkov.

Z uspehom globokega učenja prihaja lakota po vedno večjih naborih podatkov. Vendar je pravilno ravnanje z zahtevanimi velikimi podatki lahko težavno in boleče. Določene informacije so morda občutljive in jih ni mogoče izpostaviti zunanjemu svetu, saj je treba varovati zasebnost podatkov ves čas. Najpomembnejši primer v zvezi s tem so podatki v zdravstvu, ki zahtevajo zbiranje in shranjevanje potencialno velike količine osebnih podatkov. Na splošno imajo obdelava velikih podatkov zelo dinamične in razširljive potrebe po infrastrukturi zaradi nihanja nalog in podatkov. Spoj teh nedavnih dogodkov je lahko težaven in zahteva varovalne ukrepe ter namerno načrtovanje.

Zdaj si predstavljajte, da ste majhna akademska ali podjetniška raziskovalna skupina in želite upravljati infrastrukturo ML, hkrati pa zagotavljati zasebnost podatkov. Naša ekipa v podjetju SAP ML Research si prizadeva rešiti to težavo in predlaga Amazonovo infrastrukturo za virtualni zasebni oblak (VPC), da bi zagotovili, da bodo rešitve za strojno učenje potekale vzporedno z zasebnostjo podatkov. Ta članek določa osnovno topologijo VPC, idealno za razvoj in uvajanje ML. Skratka, VPC-ji v oblaku vam omogočajo, da določite in uredite različne zahteve za dostop v zelo razširljivem okolju. Čeprav je sestavne dele tega VPC-ja mogoče naravno konfigurirati s konzolo AWS, to ročno ni niti priročno niti ponovljivo. Samodejni korak je zato ključnega pomena pri postavitvi takega infrastrukturnega omrežja.

Tu je začel igrati močan motor odprtokodne avtomatizacije: Ansible. Na koncu te vadnice je vse, kar morate storiti, zagnati preprost ukaz, ki izvrši knjigo iger Ansible (to je skripta konfiguracije, uvajanja) in pripravljeni ste! Zlasti te infrastrukture ni treba ponovno ustvarjati, ko je ta postavljena. Vendar boste morda želeli priložiti dodatne primerke na VPC, npr. dajanje novih študentov ali zaposlenih v posamezna računalniška vozlišča.

VPC, ki smo ga ustvarili, sestavljata dva podmrežja: javno in zasebno.

Javno podomrežje vsebuje komponente, kot je gostitelj bastion, ki je namenjen primerek, ki nadzoruje dostop do zasebnega omrežja z oblikovanjem verige povezav SSH, na primer bastion do računskega vozlišča.

Znotraj zasebnega podomrežja so komponente, ki gostijo ali delujejo na podlagi potencialno (zaupnih) podatkov. To lahko vključuje računalniške primerke, ki se uporabljajo za modele za usposabljanje ali strežnike baz podatkov. Ker ves vhodni promet teče skozi gostiteljev bastion, omogoča nadzor prometa. Teoretično lahko za večjo varnost povežete več gostiteljev bastiona. Za preprostost pa smo uporabili en primer, ki pa še zadostuje. In končno, da bi omogočili dostop komponentam do interneta, na primer za namestitev programskih paketov, je potrebna še ena komponenta. Tu se začne uporabljati NAT prehod. V našem primeru je izveden z elastičnim javnim IP naslovom.

Topologija VPC: interakcije komponent

Slika 1 prikazuje shemo infrastrukture VPC, ki jo sestavljajo zasebna in javna podomrežja.

Slika 1: Prikaz infrastrukture VPC

Odgovorna avtomatizacija

Odgovorni otroški zvezki uporabljajo tako imenovane vloge in naloge za strukturiranje konfiguracijske vsebine v modularne komponente. Naš projekt je sestavljen iz playbook.yml, ki vsebuje eno samo vlogo ustvarjanja VPC-ja. Datoteka main.yml nadalje razdeli vlogo na seznamu opravil, ki na osnovni ravni niso nič drugega kot klic v modul Ansible. V našem primeru so naloge izdelave VPC, javnih in zasebnih podomrež, NAT prehoda, internetnega prehoda in varnostnih skupin. Za podrobnosti o podrobnostih si oglejte datoteke v shrambi github.

Poleg zgoraj omenjenih datotek vars.yml v nasprotju z drugimi zahteva tudi manjšo prilagoditev. Vsebuje definicijo vseh potrebnih spremenljivk okolja, na primer naslov podmrežja in tipke za dostop do podomrežja.

Slika 2 podaja oris in razlago vseh ključnih spremenljivk v datoteki vars.yml. Spremenljivke lahko spremenite v delčku datoteke

OPOMBA: Spremenite spremenljivke v datoteki var.yml, kot sta dostopni ključ in ime VPC, glede na vaše potrebe.

Odsevni delček igralske knjige (vars.yml) za nastavitev VPC-ja

# Spremeni spremenljivke za AWS
aws_access_key: "Navedite svoj dostopni ključ"
aws_secret_key: "Navedite svoj skrivni ključ"
aws_region: "eu-zahod-1"
# Informacije o VPC
vpc_name: "ML_Research_VPC"
vpc_cidr_block: "10.0.0.0/16"
# Za pravilo varnostne skupine - neobvezno (prilagodljivo in enostavno naknadno spreminjanje)
my_ip: "X.X.X.X"
# definiranje javne podomreže
public_subnet_1_cidr: "10.0.0.0/24"
# definiranje zasebnega podomrežja
private_subnet_1_cidr: "10.0.1.0/24"

Ko naložite vse datoteke iz knjižnice, morate za vzpostavitev konfiguracije VPC znotraj AWS zagnati glavni skript knjižice z uporabo:

ansible-playbook "datoteka vašega playbook-datoteke.yml" –i inventar –e @ vars.yml

Vaš terminal mora biti uspešno ustvarjen v konfiguraciji VPC, kot je prikazano na sliki 3:

Slika 3: Uspešna izvedba Playbook-a za ustvarjanje VPC

Ko sledite predhodnim korakom, lahko greste do konzole AWS in preverite nedavno ustvarjeno konfiguracijo VPC (v našem primeru je to ML_RESEARCH_VPC):

Zdaj, ko ste nastavili infrastrukturo, lahko začnete zaganjati primerke znotraj. Prvi primerek, ki ga boste morda želeli izvesti, je gostitelj bastion. Kot je opisano prej, preprosto deluje kot most in omogoča dostop do primerov znotraj zasebne podomreže samo pooblaščenim uporabnikom.

Konfiguracija gostitelja bastiona

Ker gostitelj bastiona izpolni eno samo opravilo za zagon aplikacije ali storitve, da zdrži napade, zadostuje, da izberemo manjši tip primerka EC2 (virtualni strežnik v terminologiji spletnih storitev Amazon), kot je t2.micro. Pomembno je, da je primerek povezan z javno podmrežo, saj mora biti za dostop do SSH dostopen z interneta na vratih 22. V našem primeru so vse zahteve izpolnjene z načinom izvajanja varnostnih skupin (privzeto je dostopen samo SSH), ki dovoljuje dostop do zasebnih primerkov le s prehodom skozi gostitelja bastion. Gostitelj bastiona tako deluje kot kontrolna točka v javni podomreži.

Tu je kratka interaktivna predstavitev, kako zagnati bastion: Dovoljeni obseg IP v tem primeru je globalen, vendar ga boste morda želeli zaradi varnostnih razlogov omejiti s knjižico Ansible playbook, odvisno od primera uporabe.

Ko se bastion gostitelj zažene, lahko do svojih zasebnih primerkov dostopate samo s SSH, saj se nahajajo v zasebnem omrežju. Če želite biti dostopni SSH, morate v datoteko .ssh / pooblaščeni ključi v bastion in instanco dodati javne ključe pooblaščenih uporabnikov. Za podrobnosti glejte to vadnico.

Zagon primerka EC2 v zasebni podomreži VPC

Zdaj, ko smo vzpostavili vse okolje, smo že skoraj končani in le še en korak - lansiranje primerka EC2 za strojno učenje. Pokažimo primer, kako lahko v VPC-ju zaženete primerke GPU-ja in za razvoj ali zagon vaših globinskih učnih rešitev na njem. Vse, kar morate storiti, je, da izberete, kateri primerek želite zagnati, odvisno od cilja, in ga nato pritrdite na ustvarjeni VPC.

Konfiguracija SSH za dostop do vašega primerka

Zdaj, ko se vaš primerek zažene, je naslednji korak vzpostavitev povezave z njim. Do zasebnega primerka lahko dostopate neposredno tako, da omogočite posredovanje SSH prek bastion gostitelja. To samo zahteva urejanje /.ssh/config datoteke na vašem lokalnem računalniku. S tem se lahko izognete dolgočasnemu postopku ročnega povezovanja s svojim bastionom in nato gostiteljem. Vse, kar morate storiti, je, da prilagodite drzne komponente.

Gostitelj 10.0.1. *
    IdentityFile /path-to-your-private-key.pem
    Uporabnik ec2-uporabnik
    ProxyCommand ssh ec2-uporabnik @ bastion -W% h:% p
    UporabiteKeychain da
Bastion gostitelja
    HostName [ip naslov bastiona]
    Uporabnik ec2-uporabnik
    IdentityFile /path-to-your-private-key.pem
    Posredujoč Da

To vam bo omogočilo dostop do zasebnega primerka iz vašega lokalnega stroja, ne da bi se ročno povezali s svojim bastionom in nato z zasebnim primerkom. Kljub temu se boste morda še vedno želeli povezati z bastionom za naloge, kot je postavljanje SSH ključev.

Ko vstavite svojo IP kodo, se povežete z zasebnim primerkom:

                    ssh [zasebni ip primerka]

Kljub temu se boste morda še vedno želeli povezati z bastionom za administrativna opravila, na primer vključitev SSH ključev. Za povezavo z gostiteljem bastion je treba storiti samo:

                            ssh bastion

Tukaj je dostop do gostitelja bastion z naslednjimi ukazi: (sproženi zasebni primerek ima naslov 10.0.1.99)

Pomembno: ne pozabite: na splošno je priporočljivo imeti dva različna ključa, enega za gostitelja bastiona in enega za vaš zasebni primerek. Nikoli ne shranjujte zasebnih ključev na bastion host, saj to ogroža želeno zasebnost.

Nazadnje opisana infrastruktura zagotavlja varno omrežje za razvoj ML rešitev in vzdrževanje podatkov. Če pa želite, da je robustnejši in manj nagnjen k izpadu, če območje razpoložljivosti ne uspe, se lahko topologija razširi tudi prek te vaje. Tak nadaljnji korak lahko vključuje oblikovanje VPC, ki obsega več con za razpoložljivost, tako da se vsi viri ne nahajajo na enem fizičnem mestu in da se preprečijo nepotrebne zamude ali izpadi.

Zdaj lahko začnete graditi svoj VPC glede na vaš primer uporabe. Prosimo, komentirajte kakršna koli vprašanja ali ideje!

Dostopite do celotne knjige z naslednjimi skladišči github.

Karan, mag. Študent iz TU Berlin je svojo pozornost usmeril na infrastrukturo ML, začrtano v tej objavi.