A végfelhasználói adatvédelem és az adatbiztonság biztosítása a gépi tanuláshoz az AWS virtuális magánfelhő használatával

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

A nagy adatok elérhetősége és a folyamatosan csökkenő számítási folyamatok költségei képezik a modern géptanulás (ML) alapját. Ez a fejlemény az újabb algoritmikus fejlesztésekkel együtt a mesterséges intelligencia új korszakát jelentette: a mély tanulást.

Noha a technológia a 60-as években gyökerezik, a közelmúltban példátlan áttöréseket tapasztalt mindenféle területen, kezdve a számítógépes látástól a természetes nyelvfeldolgozásig. Nem meglepő, hogy a mély tanulás mind az akadémia, mind az ipar figyelme középpontjába került. Noha ez továbbra is nagyszabású fejlődésen alapul, de az adattudósok ténylegesen standard árucikké válik.

A mély tanulás sikerével együtt jön az egyre nagyobb adatkészletek éhsége. A szükséges nagy adatok megfelelő kezelése azonban trükkös és fájdalmas lehet. Bizonyos információk érzékenyek lehetnek és nem képesek kitéve a külvilágnak, mivel az adatvédelmet mindenkor garantálni kell. Ebben a tekintetben a legszembetűnőbb példa az egészségügyi adatok, amelyek potenciálisan nagy mennyiségű személyes azonosítható információ gyűjtését és tárolását igénylik. Általában a nagy adatok feldolgozása nagyon dinamikus és méretezhető infrastrukturális igényekkel jár, a feladatok és az adatok ingadozása miatt. A közelmúltbeli fejlemények összevonása nehézkes lehet, és védintézkedéseket, valamint szándékos tervezést igényelhet.

Képzelje el, hogy Ön egy kicsi tudományos vagy vállalati kutatócsoport, és szeretné működtetni az ML infrastruktúráját, ugyanakkor garantálva az adatvédelmet. Az SAP ML Research csapata ezen a probléma megoldásán dolgozik, javasolva egy Amazon Virtual Private Cloud (VPC) infrastruktúrát annak biztosítása érdekében, hogy a gépi tanulási megoldások együtt járjanak az adatvédelemmel. Ez a cikk egy alapvető VPC topológiát határoz meg, amely ideális az ML fejlesztéséhez és telepítéséhez. Röviden: a felhő VPC-k lehetővé teszik a különféle hozzáférési követelmények meghatározását és szabályozását egy nagyon méretezhető környezetben. Noha ennek a VPC-nek az összetevői természetesen az AWS-konzol segítségével konfigurálhatók, a kézi működtetés nem igazán kényelmes és nem ismételhető. Ezért ennek a lépésnek az automatizálása kulcsfontosságú az ilyen infrastruktúra-hálózat létrehozásakor.

Itt egy nagy teljesítményű, nyílt forráskódú automatizálási motor kerül játékra: lehetséges. Ennek az oktatóanyagnak a végén annyit kell tennie, hogy futtasson egy egyszerű parancsot, amely végrehajt egy Ansible playbookot (azaz egy konfigurációs, telepítési szkript), és minden készen áll! Különösen nem szükséges újra létrehozni ezt az infrastruktúrát, miután létrehozta. Érdemes lehet további példányokat csatolni a VPC-hez, például új hallgatók vagy alkalmazottak számára egyedi számítási csomópontok megadása.

Az általunk létrehozott VPC két alhálózatból áll: nyilvános és magán.

A nyilvános alhálózat olyan komponenseket tartalmaz, mint például a bastion gazdagép, amely egy dedikált példány, amely az SSH kapcsolatok lánca, például a bastion és a számítási csomópont létrehozásával vezérli a magánhálózathoz való hozzáférést.

A magánhálózaton belül vannak olyan elemek, amelyek potenciálisan (bizalmas) adatokat tárolnak vagy működtetnek. Ez magában foglalhatja a modellek vagy adatbázis-kiszolgálók kiképzéséhez használt számítási példányokat. Mivel az összes bejövő forgalom a bástya gazdagépen áramlik, lehetővé teszi a forgalom vezérlését. Elméletileg több bastion-gazdagépet is láncolhat a még nagyobb biztonság érdekében. Az egyszerűség kedvéért azonban egyetlen, mégis elegendő példányt használtunk. Végül, ahhoz, hogy a komponensek hozzáférjenek az internethez, például szoftvercsomagok telepítéséhez, még egy elemre van szükség. Ez az, ahol a NAT-átjáró kerül játékba. Példánkban egy rugalmas nyilvános IP-címmel van felszerelve.

VPC topológia: Hogyan működnek együtt az alkatrészek

Az 1. ábra a magán és nyilvános alhálózatokból álló VPC infrastruktúra sémáját mutatja.

1. ábra: VPC infrastruktúra ábrázolása

Lehetséges automatizálás

Az esetleges síkkönyvek úgynevezett szerepeket és feladatokat használnak a konfigurációs tartalom moduláris összetevőkké történő strukturálására. Projektünk a playbook.yml-ből áll, amely a VPC létrehozásának egyetlen szerepét tartalmazza. A main.yml fájl tovább osztja a szerepet a feladatok listáján, amelyek alapszinten nem más, mint egy Ansible modul hívása. Esetünkben a feladatok VPC, nyilvános és magánhálózatok, NAT átjáró, internetes átjáró és biztonsági csoportok létrehozását foglalják magukban. A konkrét feladatok részleteit lásd a github tárházban található fájlokban.

A fent említett fájlokon kívül a vars.yml, a többivel ellentétben, némi kisebb kiigazítást igényel tőled. Az összes szükséges környezeti változó, például az alhálózati címtér és a hozzáférési kulcsok meghatározását tartalmazza.

A 2. ábra ismerteti a vars.yml fájlban szereplő összes kulcsváltozót. A módosítandó változók a fájlrészletben találhatók

MEGJEGYZÉS: Kérjük, változtassa meg a var.yml fájlban szereplő változókat, például a hozzáférési kulcsot és a VPC nevet, az Ön igényei szerint.

Lehetséges játékkönyv-részlet (vars.yml) a VPC beállításához

# Az AWS engedélyezési változói
aws_access_key: "Adja meg a hozzáférési kulcsot"
aws_secret_key: "Adja meg titkos kulcsát"
aws_region: "eu-west-1"
# Információ a VPC-ről
vpc_name: "ML_Research_VPC"
vpc_cidr_block: "10.0.0.0/16"
# Biztonsági csoportszabályhoz - választható (rugalmas és később könnyen módosítható)
my_ip: "X.X.X.X"
# meghatározza a nyilvános alhálózatot
public_subnet_1_cidr: "10.0.0.0/24"
# a magánhálózat meghatározása
private_subnet_1_cidr: "10.0.1.0/24"

Miután letöltötte az összes fájlt a playbookból, a VPC-konfiguráció AWS-en belüli beállításához mindössze annyit kell tennie, hogy futtassa a fő playbook-parancsfájlt:

ansible-playbook “az ön fájlkönyve fájl.iml“ - én leltár –e @ vars.yml

A VPC-konfiguráció sikeres létrehozásakor a terminálnak a 3. ábra szerint kell kinéznie:

3. ábra: A VPC létrehozására szolgáló Playbook sikeres végrehajtása

Az előző lépések végrehajtása után eljuthat az AWS konzolra, és ellenőrizheti a nemrégiben létrehozott VPC-konfigurációt (esetünkben ML_RESEARCH_VPC):

Most, hogy beállította az infrastruktúrát, megkezdheti a példányok elindítását a webhelyen belül. Az első példány, amelyet esetleg érdemes megjeleníteni, a bastion gazdagépe. Mint korábban leírtuk, egyszerűen hídként működik, és csak a jogosult felhasználók számára teszi lehetővé a hozzáférést a magánhálózaton belüli példányokhoz.

A bastion gazda konfigurációja

Mivel a bástyagazda egyetlen alkalmazás vagy szolgáltatás futtatásával látja el a támadásokat, így elegendő egy kisebb típusú EC2-példányt választani (virtuális szerver az Amazon Web Services terminológiájában), például a t2.micro. Fontos, hogy a példányt társítsuk a nyilvános alhálózathoz, mivel az SSH számára a 22. porton keresztül elérhetőnek kell lennie az internetről. Esetünkben a biztonsági csoportok végrehajtásának (az alapértelmezés szerint csak az SSH-hez hozzáférhetők) az összes követelménynek eleget kell tenni, amely lehetővé teszi a magánpéldányokhoz való engedélyezett hozzáférést csak a bástyagazda áthaladásával. A bástyagazda tehát ellenőrző pontként szolgál a nyilvános alhálózatban.

Itt egy gyors, interaktív demonstráció a bastion elindításáról: Ebben az esetben a megengedett IP tartomány globális, de biztonsági okokból érdemes korlátozni azt az Lehetséges játékfüzet segítségével, a felhasználási esetétől függően.

Miután a bástya gazdagépet készen áll és fut, csak az SSH használatával férhet hozzá magánpéldányaihoz, mivel azok a magánhálózaton belül helyezkednek el. Annak érdekében, hogy SSH-hozzáférhető legyen, mindenképp ügyeljen arra, hogy az engedélyezett felhasználók nyilvános kulcsait csatolja a .ssh / Author_keys fájlba mind a bastionon, mind a példányon. Kérjük, olvassa el ezt az útmutatót a részletekért.

EC2 példány indítása a VPC privát alhálózatában

Mivel az összes környezetet felállítottuk, majdnem készen vagyunk, és csak egy lépés marad hátra - EC2 példány indítása gépi tanulásra. Mutassunk be egy példát arra, hogy miként indíthat el GPU példányokat a VPC-ben, és hogyan fejleszti vagy futtathatja mélyreható tanulási megoldásait. Csak annyit kell tennie, hogy a céljától függően kiválasztja, hogy melyik példányt indít el, majd csatolja azt a létrehozott VPC-hez.

SSH-konfiguráció a példány eléréséhez

Most, hogy a példány fut, a következő lépés egy kapcsolat felépítése vele. A magánpéldányhoz közvetlenül hozzáférhet, ha engedélyezte az SSH továbbítást a bástya gazdagépen keresztül. Ehhez csak az /.ssh/config fájlt kell szerkesztenie a helyi gépen. Ezzel elkerülhető az a fárasztó folyamat, amikor manuálisan kapcsolódnak a bástyához, majd a hosthoz. Csak annyit kell tennie, hogy adaptálja a félkövér alkatrészeket.

Host 10.0.1. *
    IdentityFile /path-to-your-private-key.pem
    Ec2 felhasználó
    ProxyCommand ssh ec2-user @ bastion -W% h:% p
    UseKeychain igen
Gazdabástya
    HostName [a bastion IP címe]
    Ec2 felhasználó
    IdentityFile /path-to-your-private-key.pem
    ForwardAgent Igen

Ez lényegében lehetővé teszi a magánpéldány elérését a helyi számítógépről anélkül, hogy manuálisan kellene csatlakoznia a bástyához, majd a magánpéldányhoz. Mégis érdemes csatlakozni a bástyához olyan feladatokhoz, mint az SSH kulcsok odahelyezése.

Az IP-kód beillesztése után csatlakozik a magánpéldányhoz:

                    ssh [magán-ip példány]

Azonban érdemes lehet csatlakozni a bástyához adminisztratív feladatok elvégzéséhez, például SSH-kulcsok hozzáadásához. A bastion gazdagéphez történő csatlakozáshoz csak annyit kell tennie:

                            ssh bástya

A következő parancsok segítségével érheti el a bastion gazdagépet: (az elindított privát példány címe 10.0.1.99)

Fontos szem előtt tartani: Általában ajánlott két különféle kulcs, legyen az egyik a bastion gazdagépéhez, a másik pedig a magánpéldányhoz. Soha ne tárolja a magánkulcsait a bástya gazdagépen, mivel ez veszélyezteti a kívánt adatvédelmet.

Végül, a leírt infrastruktúra biztonságos hálózatot biztosít az ML megoldások fejlesztéséhez és az adatok karbantartásához. Annak érdekében, hogy robusztusabbá és kevésbé hajlamosak a leállásokra, ha rendelkezésre állási zónája nem sikerül, a topológia kibővíthető ezen az oktatóprogramon túl. Ez a további lépés magában foglalhatja a több rendelkezésre állási zónát átfogó VPC tervezését, oly módon, hogy az összes erőforrás ne egy adott fizikai helyen legyen, és elkerülje a felesleges késéseket vagy állásidőket.

Most már elkezdheti saját VPC-jének felépítését a használati esetnek megfelelően. Kérjük, nyugodtan kommentáljon bármilyen kérdést vagy ötletet!

A következő github-lerakat segítségével érheti el a teljes játékfüzetet.

Karan, M.Sc. A TU Berlin hallgatója a figyelmét az ML infrastruktúrára összpontosította, amelyet ebben a bejegyzésben vázoltak.