Loppukäyttäjien yksityisyyden ja tietoturvan varmistaminen koneoppimiselle AWS Virtual Private Cloud -sovelluksen avulla

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

Suuri tiedon saatavuus yhdessä laskennallisen prosessointitehon jatkuvasti alenevien kustannusten kanssa ovat nykyajan koneoppimisen (ML) perusta. Tämä kehitys yhdessä viimeaikaisten algoritmisten parannusten kanssa on alustanut keinoälyn uuden aikakauden: syvän oppimisen.

Vaikka tekniikka juontaa juurensa 60-luvulle, se on viime aikoina kokenut ennennäkemättömiä läpimurtoja kaikenlaisilla aloilla tietokoneen visiosta luonnolliseen kielenkäsittelyyn. Ei ole yllättävää, että syvä oppiminen on siirtynyt sekä yliopistojen että teollisuuden huomion keskipisteeseen. Vaikka siitä kehittyy edelleen laajamittaisesti, siitä on tulossa tosiasiallisesti tavallinen hyödyke tietotieteilijöille.

Syvän oppimisen onnistumisen myötä nälkä yhä suuremmille tietojoukkoille. Tarvittavien suurtietojen asianmukainen käsittely voi kuitenkin olla hankala ja tuskallinen. Tietyt tiedot saattavat olla arkaluontoisia, eikä niitä voida altistaa ulkomaailmalle, koska tietosuoja on taattava aina. Näkyvin esimerkki tässä suhteessa on terveydenhuollon tiedot, jotka edellyttävät mahdollisesti suurten määrien henkilökohtaisten tunnistettavien tietojen keräämistä ja säilyttämistä. Yleensä suurten tietojen käsittelyllä on erittäin dynaaminen ja skaalautuva infrastruktuuritarve, joka johtuu tehtävien ja datan vaihtelusta. Näiden viimeaikaisten tapahtumien sulauttaminen voi olla hankalaa ja edellyttää suojatoimenpiteitä sekä tarkoituksellista suunnittelua.

Kuvittele nyt, että olet pieni akateeminen tai yritystutkimusryhmä ja haluat käyttää ML-infrastruktuuria takaamalla samalla tietojen yksityisyyden. SAP ML Research -tiimimme on pyrkinyt ratkaisemaan tämän ongelman ehdottamalla VPC (Amazon Virtual Private Cloud) -infrastruktuuria varmistaakseen, että koneoppimisratkaisut kulkevat käsi kädessä tietosuojan kanssa. Tämä artikkeli määrittelee VPC: n perustason topologian, joka on ihanteellinen ML: n kehittämiseen ja käyttöönottoon. Lyhyesti sanottuna, pilvissä olevat VPC: t antavat sinun määritellä ja säännellä erilaisia ​​pääsyvaatimuksia erittäin skaalautuvassa ympäristössä. Vaikka tämän VPC: n komponentit voidaan luonnollisesti konfiguroida AWS-konsolin avulla, manuaalisesti se ei ole todella kätevää eikä toistettavissa. Tämän vaiheen automatisointi on siksi avainta tällaisen infrastruktuuriverkon perustamisessa.

Tässä tulee tehokas avoimen lähdekoodin automaatio-moottori: mahdollinen. Tämän opetusohjelman lopussa on vielä suoritettava yksinkertainen komento, joka suorittaa Mahdollisen pelikirjan (joka on kokoonpano, käyttöönottokomentosarja), ja olet valmis! Erityisesti tätä infrastruktuuria ei tarvitse luoda uudelleen sen perustamisen jälkeen. Voit kuitenkin haluta liittää lisää ilmentymiä VPC: hen, esim. antaa uusille opiskelijoille tai työntekijöille yksilölliset laskennalliset solmut.

Luomamme VPC koostuu kahdesta aliverkosta: julkinen ja yksityinen.

Julkinen aliverkko sisältää komponentteja, kuten bastionisäntä, joka on erityinen ilmentymä, joka hallitsee pääsyä yksityiseen verkkoon muodostamalla SSH-yhteyksien ketju, esimerkiksi bastionin laskennasolmuun.

Yksityisessä aliverkossa on komponentteja, jotka isännöivät tai käyttävät potentiaalisesti (luottamuksellisia) tietoja. Tämä voi käsittää laskentatapahtumat, joita käytetään koulutusmalleihin tai tietokantapalvelimiin. Koska kaikki saapuva liikenne virtaa bastionisäntäkoneen läpi, se mahdollistaa liikenteen hallinnan. Teoriassa saatat ketjuttaa useita bastionisäntäryhmiä entistä suuremman turvallisuuden takaamiseksi. Käytimme yksinkertaisuuden vuoksi kuitenkin yhtä, mutta riittävää esimerkkiä. Lopuksi, yksi komponentti on tarpeen, jotta komponenteille voidaan antaa pääsy Internetiin, esimerkiksi ohjelmistopakettien asentamiseen. NAT-yhdyskäytävä tulee tänne. Esimerkissämme se on toteutettu liittämällä siihen joustava julkinen IP-osoite.

VPC-topologia: Miten komponentit ovat vuorovaikutuksessa

Kuvio 1 esittää kaaviota VPC-infrastruktuurista, joka koostuu yksityisistä ja julkisista aliverkoista.

Kuva 1: VPC-infrastruktuurin kuvaus

Mahdollinen automaatio

Mahdolliset pelikirjat käyttävät ns. Rooleja ja tehtäviä konfiguroinnin sisällön rakentamiseksi modulaarisiksi komponenteiksi. Projektimme koostuu playbook.yml, joka sisältää yhden roolin VPC: n luomisessa. Main.yml-tiedosto jakaa roolin edelleen tehtäväluettelossa, joka ei ole perustasolla muuta kuin puhelu Ansible-moduuliin. Meidän tapauksessamme tehtävät koostuvat VPC: n, julkisten ja yksityisten aliverkkojen, NAT-yhdyskäytävän, Internet-yhdyskäytävän ja suojausryhmien luomisesta. Katso yksityiskohdat github-arkistossa olevista tiedostoista.

Edellä mainittujen tiedostojen lisäksi vars.yml vaatii, toisin kuin muut, sinulta pieniä mukautuksia. Se sisältää kaikkien tarvittavien ympäristömuuttujien, kuten aliverkon osoitealue ja käyttöavaimet, määritelmän.

Kuvio 2 tarjoaa kaavion ja selityksen kaikista vars.yml-tiedoston avainmuuttujista. Löydät muokattavat muuttujat tiedoston katkelmasta

HUOMAUTUS: Muuta var.yml-tiedoston muuttujia, kuten käyttöavainta ja VPC-nimeä, tarpeidesi mukaan.

Mahdollinen pelikirjan katkelma (vars.yml) VPC: n asettamiseen

# AWS: n valtuutusmuuttujat
aws_access_key: "Anna käyttöavaimesi"
aws_secret_key: "Anna salainen avaimesi"
aws_region: "eu-länsi-1"
# Tietoja VPC: stä
vpc_name: "ML_Research_VPC"
vpc_cidr_block: "10.0.0.0/16"
# Suojausryhmäsääntöä varten - valinnainen (joustava ja helppo muokata myöhemmin)
my_ip: "X.X.X.X"
# määrittelee julkisen aliverkon
public_subnet_1_cidr: "10.0.0.0/24"
# määrittelee yksityisen aliverkon
private_subnet_1_cidr: "10.0.1.0/24"

Kun olet ladannut kaikki tiedostot pelikirjasta, sinun on tehtävä vain VPC-kokoonpanon määrittäminen AWS: ssä, ajaa pääkirjaohjelman komentosarja käyttämällä:

ansible-playbook “Oman pelikirjatiedostosi.yml” - Olen varastot –e @ vars.yml

VPC-kokoonpanon luominen onnistuneesti päätelaitteesi tulisi näyttää kuvasta 3:

Kuva 3: Playbookin onnistunut suorittaminen VPC-luomista varten

Edellisten vaiheiden suorittamisen jälkeen voit siirtyä AWS-konsoliisi ja tarkistaa äskettäin luodun VPC-kokoonpanon (tapauksessamme se on ML_RESEARCH_VPC):

Nyt kun olet asentanut infrastruktuurin, voit aloittaa esiintymien käynnistämisen sisällä. Ensimmäinen esimerkki, jonka saatat haluta välittää, on bastionin isäntä. Kuten aiemmin on kuvattu, se toimii vain siltana, joka antaa pääsyn yksityisen aliverkon sisällä oleviin ilmentymiin vain valtuutetuille käyttäjille.

Bastionin isäntämääritykset

Koska bastionisäntä suorittaa yhden tehtävän suorittaa sovelluksen tai palvelun kestämään hyökkäyksiä, riittää, jos valitset pienemmän tyyppisen EC2-esiintymän (virtuaalipalvelin Amazon Web Services -terminologiassa), kuten t2.micro. On tärkeätä, että ilmentymä liitetään julkiseen aliverkkoon, koska sen on oltava saatavissa Internetistä portista 22 SSH: lle. Meidän tapauksessamme suojausryhmien toteutus tapa täyttää kaikki vaatimukset (oletuksena vain SSH-käyttöinen), mikä sallii valtuutetun pääsyn yksityisiin ilmentymiin vain kuljettamalla bastionin isäntän kautta. Bastionisäntä toimii siten tarkistuspisteenä julkisessa aliverkossa.

Tässä on nopea interaktiivinen esittely bastionin käynnistämisestä: Sallittu IP-alue on tässä tapauksessa globaali, mutta sinun kannattaa ehkä rajoittaa sitä turvallisuussyistä Mahdollisen pelikirjan kautta käyttökohdesta riippuen.

Kun bastionisäntä on valmis ja käynnissä, voit käyttää yksityisiä ilmentymiäsi vain SSH: lla, koska ne sijaitsevat yksityisessä verkossa. Jotta SSH olisi käytettävissä, sinun on lisättävä valtuutettujen käyttäjien julkiset avaimet .ssh / author_keys-tiedostoon sekä bastionilla että instanssilla. Katso lisätietoja tästä opetusohjelmasta.

Käynnistetään EC2-ilmentymä VPC: n yksityisessä aliverkossa

Nyt kun olemme perustaneet kaiken ympäristön, olemme melkein valmis, ja jäljellä on vain yksi lisävaihe - EC2-ilmentymän käynnistäminen koneoppimiseen. Esittäkäämme esimerkki siitä, kuinka voit käynnistää GPU-esiintymät VPC: ssä ja kehittää tai suorittaa syväoppimisratkaisujasi siinä. Ainoa mitä sinun tarvitsee tehdä, on valita tavoitteesta riippuen, minkä tyyppinen esimerkki haluat käynnistää, ja liittää se sitten luotuun VPC: hen.

SSH-kokoonpano, jolla pääset ilmentymään

Nyt kun ilmentymäsi on käynnissä, seuraava vaihe on luoda yhteys siihen. Voit käyttää yksityistä ilmentymääsi suoraan ottamalla käyttöön SSH-edelleenlähetys bastionin isäntän kautta. Tämä vain vaatii /.ssh/config-tiedoston muokkaamista paikallisella koneella. Tällä voit välttää työlästä prosessia, jolla manuaalisesti muodostetaan yhteys bastioniin ja sitten isäntään. Sinun tarvitsee vain mukauttaa lihavoidut komponentit.

Isäntä 10.0.1. *
    IdentityFile /path-to-your-private-key.pem
    Käyttäjä ec2-käyttäjä
    ProxyCommand ssh ec2-user @ bastion -W% h:% p
    UseKeychain kyllä
Isäntälinna
    HostName [bastionin IP-osoite]
    Käyttäjä ec2-käyttäjä
    IdentityFile /path-to-your-private-key.pem
    ForwardAgent Kyllä

Tämän avulla pääsääntöisesti pääset käyttämään yksityistä ilmentymää paikalliselta koneeltasi ilman manuaalista yhteyden muodostamista bastioniin ja sitten yksityiseen ilmentymään. Saatat kuitenkin haluta muodostaa yhteyden bastioniin esimerkiksi SSH-avainten asettamista varten.

Kun olet lisännyt IP-koodisi, muodostat yhteyden yksityiseen instanssiin:

                    ssh [yksityinen IP-esimerkki]

Voit kuitenkin joutua muodostamaan yhteyden bastioniin hallintotehtäviä, kuten SSH-avainten sisällyttämistä varten. Yhdistääksesi bastion-isäntään kaikki mitä tarvitaan:

                            ssh bastioni

Näin pääset bastionin isäntään käyttämällä seuraavia komentoja: (Käynnistetyn yksityisen ilmentymän osoite on 10.0.1.99)

Tärkeää pitää mielessä: Yleensä suositellaan, että sinulla on kaksi erilaista avainta, yksi bastionin isäntälle ja toinen yksityiselle instanssillesi. Älä koskaan säilytä yksityisiä avaimia bastionin isäntällä, koska tämä vaarantaa halutun yksityisyyden.

Lopuksi, kuvattu infrastruktuuri varmistaa turvallisen verkon ML-ratkaisujen kehittämiseksi ja datan ylläpitämiseksi. Topologiaa voidaan kuitenkin laajentaa tämän opetusohjelman ulkopuolelle, jotta saatavuusvyöhykkeesi epäonnistuisi, jotta se olisi vankempi ja vähemmän altis seisokkeille. Tällainen lisävaihe voi sisältää VPC: n suunnittelun, joka kattaa useita saatavuusvyöhykkeitä, jotta kaikki resurssit eivät sijaitse yhdessä tietyssä fyysisessä paikassa ja tarpeettomien viiveiden tai seisokkien välttämiseksi.

Nyt voit aloittaa oman VPC-rakennuksen käyttötarpeesi mukaan. Kommentoi kaikkia kysymyksiä tai ideoita!

Pääset koko pelikirjaan käyttämällä seuraavaa github-arkistoa.

Karan, diplomi-insinööri TU Berliinin opiskelija on keskittänyt huomionsa ML-infrastruktuuriin, joka esitetään tässä viestissä.