Zabezpečenie ochrany súkromia koncových používateľov a zabezpečenia údajov pre strojové učenie pomocou virtuálneho súkromného cloudu AWS

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

Základom moderného strojového učenia (ML) je veľká dostupnosť údajov spojená so stále sa znižujúcimi nákladmi na výpočtový výkon. Tento vývoj spolu s nedávnymi vylepšeniami algoritmov predznamenal novú éru umelej inteligencie: hlboké učenie.

Aj keď má táto technológia svoje korene už v 60-tych rokoch, nedávno zaznamenala bezprecedentné prielomy vo všetkých druhoch domén od počítačového videnia po spracovanie prirodzeného jazyka. Nie je prekvapením, že hlboké vzdelávanie sa dostalo do centra pozornosti akademickej obce aj priemyslu. Aj keď sa stále vyvíja vo veľkom meradle, pre vedcov údajov sa stáva de facto štandardnou komoditou.

S úspechom hlbokého učenia prichádza hlad po stále väčších súboroch údajov. Správne zaobchádzanie s požadovanými veľkými údajmi však môže byť zložité a bolestivé. Niektoré informácie môžu byť citlivé a nemôžu byť vystavené vonkajšiemu svetu, pretože musí byť vždy zaručená ochrana údajov. Najvýznamnejším príkladom v tomto ohľade sú údaje o zdravotnej starostlivosti, ktoré si vyžadujú zhromažďovanie a uchovávanie potenciálne veľkého množstva osobných identifikovateľných informácií. Spracovanie veľkých údajov má vo všeobecnosti veľmi dynamickú a škálovateľnú potrebu infraštruktúry z dôvodu kolísania úloh a údajov. Spojenie tohto najnovšieho vývoja môže byť zložité a vyžaduje si ochranné opatrenia, ako aj zámerné plánovanie.

Teraz si predstavte, že ste malá akademická alebo podniková skupina pre výskum a chcete prevádzkovať infraštruktúru ML a zároveň zaručiť súkromie údajov. Náš tím v SAP ML Research pracoval na riešení tohto problému navrhnutím infraštruktúry Amazon Virtual Private Cloud (VPC), aby sa ubezpečil, že riešenia strojového učenia idú ruka v ruke s ochranou osobných údajov. Tento článok definuje základnú topológiu VPC ideálnu pre vývoj a nasadenie ML. Stručne povedané, VPC v cloude vám umožňujú definovať a regulovať rôzne požiadavky na prístup vo veľmi škálovateľnom prostredí. Aj keď je možné komponenty tohto VPC prirodzene konfigurovať pomocou konzoly AWS, manuálne to nie je ani praktické, ani reprodukovateľné. Automatizácia tohto kroku je preto kľúčová pri nastavovaní takejto siete infraštruktúry.

Tu prichádza do hry výkonný automatizovaný stroj s otvoreným zdrojom: Možné. Na konci tohto tutoriálu je iba spustenie jednoduchého príkazu, ktorým sa spustí Príručka k použitiu (to je konfigurácia, skript nasadenia) a všetko je nastavené! Najmä nie je potrebné znovu vytvárať túto infraštruktúru po jej zriadení. Možno však budete chcieť k VPC pripojiť ďalšie inštancie, napr. dávať novým študentom alebo zamestnancom individuálne výpočtové uzly.

VPC, ktorý sme vytvorili, pozostáva z dvoch podsietí: verejné a súkromné.

Verejná podsiete obsahuje komponenty, ako je hostiteľ bašta, čo je vyhradená inštancia, ktorá riadi prístup do súkromnej siete vytvorením reťazca spojení SSH, napríklad bašta k výpočtovému uzlu.

V rámci súkromnej podsiete existujú komponenty, ktoré sú hostiteľmi alebo pracujú na potenciálne (dôverných) údajoch. Môže to zahŕňať výpočtové inštancie používané pre školiace modely alebo databázové servery. Pretože všetka prichádzajúca prevádzka tečie cez hostiteľa bašty, umožňuje kontrolu prenosu. Teoreticky by ste mohli priviesť niekoľko hostiteľov bašty pre ešte vyššiu bezpečnosť. Pre jednoduchosť sme však použili jediný, ale dostatočný príklad. Nakoniec, aby sa týmto komponentom umožnil prístup na internet, napríklad na inštaláciu softvérových balíkov, je potrebná ešte jedna súčasť. Tu vstupuje do hry brána NAT. V našom príklade je implementovaná s pružnou verejnou IP adresou.

Topológia VPC: Ako interagujú komponenty

Obrázok 1 zobrazuje schému infraštruktúry VPC pozostávajúcej zo súkromných a verejných podsietí.

Obr. 1: Zobrazenie infraštruktúry VPC

Možná automatizácia

Prípadné príručky používajú tzv. Roly a úlohy na štruktúrovanie konfiguračného obsahu do modulárnych komponentov. Náš projekt pozostáva z playbook.yml, ktorý obsahuje jedinú úlohu pri vytváraní VPC. Súbor main.yml ďalej delí rolu v zozname úloh, ktoré nie sú na základnej úrovni nič iné ako volanie na modul Ansible. V našom prípade úlohy pozostávajú z vytvorenia VPC, verejných a súkromných podsiete, NAT brány, internetovej brány a bezpečnostných skupín. Podrobnosti o konkrétnych úlohách nájdete v súboroch v úložisku github.

Okrem vyššie uvedených súborov, vars.yml, na rozdiel od ostatných vyžaduje od vás trochu menšej úpravy. Obsahuje definíciu všetkých potrebných premenných prostredia, ako je napríklad adresný priestor podsiete a prístupové kľúče.

Obr. 2 poskytuje náčrt a vysvetlenie všetkých kľúčových premenných v súbore vars.yml. Premenné, ktoré sa majú zmeniť, nájdete v útržku súboru

POZNÁMKA: Zmeňte premenné v súbore var.yml, napríklad prístupový kľúč a názov VPC, podľa svojich potrieb.

Možný útržok knižky (vars.yml) na nastavenie VPC

# Autorizačné premenné pre AWS
aws_access_key: "Poskytnite prístupový kľúč"
aws_secret_key: "Poskytnite svoj tajný kľúč"
aws_region: "eu-west-1"
# Informácie o VPC
vpc_name: "ML_Research_VPC"
vpc_cidr_block: "10.0.0.0/16"
# Pre pravidlo skupiny zabezpečenia - voliteľné (flexibilné a neskôr ľahko modifikovateľné)
my_ip: "X.X.X.X"
# definovanie verejnej podsiete
public_subnet_1_cidr: "10.0.0.0/24"
# definovanie súkromnej podsiete
private_subnet_1_cidr: "10.0.1.0/24"

Po stiahnutí všetkých súborov z príručky je všetko, čo musíte urobiť, aby ste nastavili konfiguráciu VPC v AWS, spustenie hlavného skriptu príručky pomocou:

ansible-playbook „váš súbor playbook.yml“ –i inventár –e @ vars.yml

Po úspešnom vytvorení konfigurácie VPC by mal váš terminál vyzerať ako na obrázku 3:

Obr. 3: Úspešné vykonanie knihy na vytvorenie VPC

Po vykonaní predchádzajúcich krokov môžete prejsť na svoju konzolu AWS a skontrolovať svoju nedávno vytvorenú konfiguráciu VPC (v našom prípade ML_RESEARCH_VPC):

Teraz, keď ste nastavili infraštruktúru, môžete začať spúšťať inštancie v rámci. Prvou inštanciou, ktorú možno budete chcieť vytvoriť, je hostiteľ bašty. Ako už bolo uvedené, slúži iba ako most, ktorý umožňuje prístup k inštanciám v rámci súkromnej podsiete iba autorizovaným používateľom.

Konfigurácia hostiteľa bašta

Pretože hostiteľ bašta plní jedinú úlohu spustenia aplikácie alebo služby, aby odolal útokom, stačí zvoliť menší typ inštancie EC2 (virtuálny server v terminológii Amazon Web Services), napríklad t2.micro. Je dôležité, aby inštancia bola priradená k verejnej podsieti, pretože musí byť prístupná z Internetu na porte 22 pre SSH. V našom prípade sú všetky požiadavky splnené spôsobom implementácie bezpečnostných skupín (štandardne prístupné iba SSH), čo umožňuje autorizovaný prístup k súkromným inštanciám iba cez prechod cez hostiteľa hostiteľa. Hostiteľ bašty teda pôsobí ako kontrolný bod vo verejnej podsieti.

Tu je rýchla interaktívna ukážka toho, ako spustiť baštu: Povolený rozsah adries IP je v tomto prípade globálny, ale možno ho budete chcieť obmedziť z bezpečnostných dôvodov prostredníctvom možnosti Príručka v závislosti od prípadu použitia.

Po spustení hostiteľa bašty môžete pristupovať k svojim súkromným inštanciám iba pomocou SSH, pretože sídlia v súkromnej sieti. Aby bol SSH prístupný, musíte sa ubezpečiť, že v bssion a instance pridáte verejné kľúče oprávnených používateľov do súboru .ssh / autor_keys. Ďalšie podrobnosti nájdete v tomto návode.

Spustenie inštancie EC2 v súkromnej podsieti VPC

Teraz, keď sme nastavili celé prostredie, sme takmer hotoví a zostáva ešte jeden krok - spustenie inštancie EC2 pre strojové učenie. Ukážme vám príklad toho, ako môžete spustiť inštancie GPU vo vašom VPC a ako vyvíjať alebo spúšťať svoje riešenia na hlboké vzdelávanie. Všetko, čo musíte urobiť, je vybrať si, aký druh inštancie chcete spustiť v závislosti od vášho cieľa, a potom ho pripojiť k vytvorenému VPC.

Konfigurácia SSH pre prístup k vašej inštancii

Teraz, keď je vaša inštancia spustená, ďalším krokom je vytvorenie pripojenia k nej. Do súkromnej inštancie sa dostanete priamo povolením presmerovania SSH prostredníctvom hostiteľa bašta. Vyžaduje to iba úpravu súboru /.ssh/config na lokálnom počítači. Týmto sa môžete vyhnúť únavnému procesu manuálneho pripojenia k vašej bašte a potom k hostiteľovi. Všetko, čo musíte urobiť, je prispôsobiť odvážne komponenty.

Hostiteľ 10.0.1. *
    IdentityFile /path-to-your-private-key.pem
    Používateľ ec2-user
    ProxyCommand ssh ec2-užívateľ @ bašta -W% h:% p
    PoužiteKychain áno
Hostiteľská bašta
    HostName [ip adresa bašty]
    Používateľ ec2-user
    IdentityFile /path-to-your-private-key.pem
    VpredAgent Áno

Toto vám umožní prístup v podstate k súkromnej inštancii z vášho lokálneho počítača bez manuálneho pripojenia k vašej bašte a potom k vašej súkromnej inštancii. Stále sa však možno budete chcieť pripojiť k bašte pre úlohy, ako je napríklad umiestnenie SSH kľúčov.

Po vložení kódu IP sa pripojíte k svojej súkromnej inštancii:

                    ssh [napríklad]

Stále sa však možno budete chcieť pripojiť k bašte pre administratívne úlohy, ako je napríklad zahrnutie kľúčov SSH. Ak sa chcete pripojiť k hostiteľovi bašty, stačí urobiť:

                            ssh bašta

Takto pristupujete k hostiteľovi bašta pomocou nasledujúcich príkazov: (spustená súkromná inštancia má adresu 10.0.1.99)

Dôležité je mať na pamäti: Vo všeobecnosti sa odporúča mať dva rôzne kľúče, jeden pre hostiteľa bašty a jeden pre vašu súkromnú inštanciu. Nikdy neuchovávajte svoje súkromné ​​kľúče na hostiteľovi bašty, pretože by to ohrozilo požadované súkromie.

Popísaná infraštruktúra nakoniec zaisťuje bezpečnú sieť na vývoj riešení ML a udržiavanie údajov. Avšak aby bolo robustnejšie a menej náchylné na prestoje v prípade zlyhania vašej zóny dostupnosti, môže byť topológia rozšírená aj za tento tutoriál. Takýto ďalší krok by mohol zahŕňať návrh VPC pokrývajúci viacero zón dostupnosti, aby všetky zdroje neboli umiestnené na jednom konkrétnom fyzickom mieste a aby sa zabránilo zbytočným oneskoreniam alebo prestojom.

Teraz môžete začať s budovaním vlastnej VPC podľa prípadu použitia. Ak máte nejaké otázky alebo nápady, neváhajte sa vyjadriť!

Prístup k celému zoznamu skladieb pomocou nasledujúceho úložiska github.

Karan, m.Sc. Študent z TU v Berlíne sa zameriava na ML infraštruktúru uvedenú v tomto príspevku.