Pelnas:
- Galimybė atskirti autentifikavimą ir autorizavimą ir taikyti minimalų autorizavimą naudojant RBAC/ABAC
- Galimybė išvengti mišrios tarpinio serverio rizikos paleidžiant modelį vartotojo kontekste
- Galimybė saugoti ir pasukti API raktus naudojant slaptą valdymo sistemą
Didelė dalis atakų prieš AI sistemą prasideda ne modelio „apgaudinimu“, o pavogtu API raktu arba per daug įgaliota paskyra. Šis saugumo lygis kyla iš klasikinės informacijos saugos, tačiau AI kontekste prideda naujų pavojų: modelis iškviečia važiavimą kieno nors kito vardu, paslaugos paskyra pasiekia visus duomenis, raktas nuteka į GitHub. Šiame skyriuje sužinosime, kaip susiaurinti prieigą prie AI sistemos naudojant autentifikavimą, autorizavimą (RBAC/ABAC), minimalų leidimą ir slaptą valdymą.
Skirtumas tarp autentifikavimo ir autorizacijos
Abu terminai dažnai painiojami:
- Autentifikavimas: "Kas tu esi?" — įrodyti, kad vartotojas/paslauga iš tikrųjų yra tai, kas jie teigia esą (slaptažodis, prieigos raktas, sertifikatas, MFA).
- Įgaliojimas: "Ką galite padaryti?" — nustatyti, kuriuos išteklius / veiksmą gali pasiekti autentifikuota šalis.
Svarbiausias AI sistemų subtilumas yra toks: kai modelis atlieka darbą vartotojo vardu, ar jis veikia su to vartotojo įgaliojimais, ar su plačia paslaugų paskyra? Pastarasis yra pavojingas, nes įpurškimo apgautas modelis įgyja visišką prieigą prie paslaugos paskyros.
Atsargiai: „Supainioto pavaduotojo“ problema: mažai autoritetingas vartotojas netiesiogiai pasiekia duomenis, kurių jis negali pasiekti, perduodamas didelio autoriteto modelį iš išorės. Modelis visada turėtų veikti atsižvelgiant į vartotojo autoritetą, o ne jo plačią autoritetą.
RBAC ir ABAC
- RBAC (vaidmenimis pagrįstas prieigos valdymas): prieiga priklauso nuo vartotojo vaidmens. „Pagalbos specialisto“ vaidmuo gali skaityti klientų pastabas, bet negali jų ištrinti. Paprasta ir įprasta.
- ABAC (atributais pagrįstas prieigos valdymas): prieiga priklauso nuo atributų: vartotojo skyriaus, duomenų privatumo etiketės, paros laiko, tinklo, iš kurio gaunama užklausa. Labiau sureguliuota, bet sudėtingesnė.
Dauguma organizacijų pradeda nuo RBAC ir gilina į ABAC, kad gautų neskelbtinus duomenis. AI nykščio taisyklė: modelis turėtų filtruoti kiekvieną agentą, kuriam jis iškviečia, ir visus duomenis, kuriuos jis pasiekia, atsižvelgdamas į užklausą pateikiančio vartotojo vaidmenį / atributus.
Žingsnis po žingsnio: minimalaus autoriteto naudojimas
- Atlikite inventorizaciją. Kokius įrankius iškviečia modelis, kokius duomenis jis pasiekia? Išvardykite juos visus.
- Pagrįskite kiekvieną prieigą. „Ar šiam padėjėjui tikrai reikia ištrinti įgaliojimą? Priešingu atveju pašalinkite.
- Numatytasis tik skaitymas. Pagal numatytuosius nustatymus modelis turėtų būti nuskaitomas; Reikalauti rašyti / ištrinti atskirą siauros apimties prieigos raktą.
- Perkelti vartotojo kontekstą. Skambinkite į transporto priemonę naudodami naudotojo teisę, o ne paslaugos paskyrą.
- Trumpalaikis įgaliojimas. Vietoj ilgalaikių raktų naudokite trumpalaikius, automatiškai atsinaujinančius žetonus.
Slaptas valdymas
Paslaptis yra kredencialai, kurie turi likti slapti, pvz., API raktas, slaptažodis, prieigos raktas arba sertifikatas. Dažniausia AI projektų nelaimė yra tada, kai modelio teikėjo API raktas yra įterptas į kodą ir nuteka į versijos valdymą (Git).
Teisingas pritaikymas:
- Niekada neįterpkite raktų į kodą; Naudokite aplinkos kintamąjį arba slaptą valdymo sistemą (paslaugą, kuri saugo užšifruotus raktus ir kontroliuoja prieigą).
- Rotacija: atnaujinkite raktus reguliariais intervalais (pvz., kas 90 dienų); Jei įtariate nuotėkį, nedelsdami atšaukite.
- Apimties sumažinimas: kiekvienas jungiklis turi tik reikiamą paslaugą ir reikiamą leidimą.
- Auditas: užregistruokite, kas, kada ir kur naudojo raktą.
Keturi kopijuojami šablonai
Prieigos peržiūros valdymo raginimas:
Įvertinkite kiekvieną įrankį, esantį toliau pateiktame įrankių sąraše:- AR šis įrankis BŪTINAS šio asistento darbui atlikti? (taip/ne) – ar tik skaitomas, ar rašomas/ištrinamas? – Ar šis įrankis iškviečiamas naudojant vartotojo įgaliojimą ar paslaugos paskyrą? Nereikalingus arba per daug įgaliotus pažymėkite kaip "PAŠALINTI / REDAKTUOTI".<tools>{{ tool_list }}</tools>
Slapto nuotėkio nuskaitymo raginimas:
Šiame kodo fragmente raskite viską, kas galėtų būti užkoduota paslaptis: API raktas, slaptažodis, prieigos raktas, ryšio eilutė, privatus raktas. Kiekvienam nurodykite eilutę ir tipą. COPY reikšmę į atsakymą;kaukė (pirmi 4 simboliai + ***).<code>{{ šaltinis }}</code>
Mažiausios valdžios sprendimo taisyklė:
Kai gausite naują įrankį / prieigos užklausą, paklauskite:1. Ar užduotį galima atlikti be šios prieigos? -> Jei taip: ATMESTI2. Ar užtenka tik skaitymo? -> Jei taip: SUTEIKITE rašymo leidimą3. Ar galima susiaurinti taikymo sritį iki vieno šaltinio? -> Jei taip: dartNumatytasis atsakymas yra "ne"; Prieiga įgyjama dėl priežasties.
Kalendoriaus sukimosi priminimas:
Kiekvienai paslapčiai įrašykite: savininkas, sukūrimo data, galiojimo laikas, apimtis. Praneškite apie bet kurį raktą, kuris viršijo 90 dienų arba nebuvo naudojamas 30 dienų, kaip "ROTAIJOS / ATŠAUKIMO KANDIDATU".
Silpnas raginimas / stiprus raginimas
prastas požiūris
Stiprus požiūris
Modelis pasiekia visus duomenis su viena paslaugos paskyra
Modelis pasiekia su užklausą pateikiančio vartotojo įgaliojimais
API raktas yra įterptas į kodą, jis niekada nesikeičia
Rotacija raktų paslapčių tvarkyklėje, 90 dienų
Platus „daryk bet ką“ autoritetas asistentui
Numatytasis tik skaitymas, rašykite siaurai
Prieigos niekada neperžiūrimos
Reguliarus prieigos peržiūra ir atšaukimas
Trys mini dėklai
1 atvejis – nutekėjo mišrūs tarpinio serverio duomenys. Vidinis padėjėjas dirbo su paslaugų paskyra, kuri turėjo prieigą prie visų darbuotojų įrašų. Praktikuojantis vartotojas pasiekė duomenis, kurių paprastai nematytų, sakydamas „suvestuokite vadovų atlyginimų lentelę“; nes modelis suabejojo savo, o ne vartotojo, plačių autoritetų kontekste. Kai vartotojo kontekstas buvo pritaikytas perkelti, praktikantas galėjo ištraukti įrašus, kuriuos galėjo matyti tik jis ar ji.
2 atvejis – nutekėjo raktas, 190 000 TL sąskaita per 2 savaites. Kūrėjas įdėjo modelio API raktą į pagalbinį scenarijų ir perkėlė jį į viešą saugyklą. Botas raktą rado per 40 minučių ir naudojo jį dvi savaites; Sąskaita siekė 190 000 Lt. Kai raktas buvo perkeltas į slaptą tvarkyklę, prijungtas prie rotacijos ir pridėtas saugyklos nuskaitymas, incidentas nepasikartojo.
3 atvejis – Tik skaitymo numatytasis užkertamas kelias pertraukimui. „DevOps“ asistentas gavo komandą „iš naujo nustatyti gamybos duomenų bazę“ per greitą injekciją. Tačiau asistentui buvo suteiktas tik skaitomas ženklas; rašymas / trynimas buvo atskirame patvirtintame sraute. Komanda buvo atmesta dėl autorizacijos klaidos ir įvykis buvo užregistruotas kaip aliarmas; Duomenų praradimo nebuvo.
Patarimas: nustatykite „ne“ kaip numatytąjį atsakymą į naują prieigos užklausą. Prieiga yra kažkas, kas įgyjama per pateisinimą; Visiems duoti platų ir tada sumažinti beveik niekada nedaroma, o rizika kaupiasi.
Dažnos klaidos
- Modelio paleidimas naudojant didelę paslaugų paskyrą ir vartotojo konteksto praradimas (mišrus tarpinis serveris).
- API rakto įterpimas į kodą ir nutekėjimas į versijos valdymą.
- Klavišų visiškai nesuka ("veikia, nelieskite").
- Pagal numatytuosius nustatymus padėjėjui suteikiami rašymo / trynimo leidimai.
- Suteikti prieigą vieną kartą ir niekada jos nesvarstyti.
- Supainioti autentifikavimą su autorizavimu ir darant prielaidą, kad „jis prisijungęs, gali prieiti prie visko“.
Apibendrinant
- Autentifikavimas yra klausimas „kas tu esi“, įgaliojimas – „ką tu gali padaryti“; Dirbtinio intelekto atveju abu turi veikti vartotojo kontekste.
- Modelis turėtų veikti su užklausą pateikiančio vartotojo įgaliojimais, o ne su savo plačiomis galiomis (išvengiant mišrios agentūros rizikos).
- Pradėti nuo RBAC, gilinti su ABAC dėl jautrių duomenų; Numatytuoju nustatykite minimalų autoritetą.
- Nepalaidokite paslapčių kode; saugokite jį slaptojoje tvarkyklėje, susiaurinkite ir įjunkite reguliarų kaitą.
- Tik skaitymo numatytasis ir siauras rašymas labai apriboja injekcijos poveikį.
Taikymo užduotis
Išvardykite visus įrankius ir duomenis, kuriuos pasiekia jūsų AI padėjėjas. Kiekvienam atsakykite į tris klausimus: (1) Ar tai tikrai būtina? (2) Ar užtenka tik skaitymo? (3) Ar jis veikia vartotojo kontekste? Tada ieškokite visų užkoduotų paslapčių (per aukščiau pateiktą nuskaitymo raginimą) ir parašykite kiekvieno rasto rakto sukimosi planą. Pašalinkite bent vieną nereikalingą įgaliojimą.
kontrolinis sąrašas
- [ ] Modelis veikia vartotojo, pateikiančio užklausą, autoriteto kontekste.
- [ ] Prieiga prie įrankių ir duomenų buvo susiaurinta iki mažiausios privilegijos principo.
- [ ] Rašymas / trynimas yra atskirtas nuo tik skaitymo, autentifikuotas ir siauras.
- [ ] Kode nėra palaidota jokių paslapčių; Jis saugomas paslaptyje.
- [ ] Yra raktų rotacijos grafikas ir atšaukimo tvarka.
- [ ] Prieigos reguliariai peržiūrimos.