Documentație / Securitate
Seif de credențiale
Yuli găsește fișiere .env, chei și tokenuri lăsate la vedere în proiectul tău și se oferă să le păstreze criptate în afara depozitului, fără să strice rularea.
Yuli detectează credențialele lăsate la vedere în proiectul tău (un .env în rădăcină, chei private, tokenuri în .npmrc, conturi de serviciu, secrete scrise în cod…) și se oferă să le păstreze într-un seif criptat, în afara depozitului. Nimic nu se mută fără confirmarea ta.
Ce detectează
| Tip | Exemple |
|---|---|
| Mediu | .env, .env.local, .env.production… Șabloanele .env.example, .env.sample și .env.template nu se iau în calcul. |
| Chei și depozite de chei | *.pem, *.key, *.p12, *.pfx, *.jks, id_rsa, id_ed25519 |
| Credențiale ale uneltelor | Conturi de serviciu JSON, credentials.json, .npmrc, .yarnrc sau .pypirc cu token, .aws/credentials, kubeconfig, config.json de la Docker, *.tfvars, .netrc, .git-credentials, .pgpass |
| Cod | Secrete scrise direct în codul sursă |
Fiecare constatare îți arată situația în git. Cazurile următoare sunt marcate cu o gravitate mai mare:
| Insignă | Înseamnă |
|---|---|
| Urmărit de git | Fișierul este versionat. |
| Fără .gitignore | Fișierul nu este ignorat: următorul commit l-ar putea urca. |
| În istoricul git | A fost urcat cândva în depozit. |
Cardul „Credențiale la vedere”
Când Yuli găsește ceva, apare cardul Credențiale la vedere. Pentru fiecare constatare alegi:
- Mută în seif (recomandat): Yuli îl copiază criptat în seif, verifică copia și abia apoi șterge originalul. Creează un
.env.examplecu cheile goale și adaugă tiparul în.gitignore. - E în regulă așa: îl lasă unde este. Scrie Motivul și apasă Ține minte ca să nu te mai întrebe.
- Deschide: îl deschide în editor.
Poți oricând să Restaurezi un fișier mutat.
Mutarea unui .env pas cu pas
Dacă fișierul a ajuns să fie urcat în git, mutarea nu este suficientă: secretul rămâne în istoric. Yuli te avertizează că trebuie să-l rotești (să schimbi parola sau tokenul) și îți arată cum să cureți istoricul cu git filter-repo. Yuli nu rescrie niciodată istoricul din proprie inițiativă.
Unde se află și cum se criptează
| Locația implicită | <config>/yuli-ide/vault/<id-proiect>/, în folderul de configurare al utilizatorului tău, în afara oricărui proiect |
| Permisiuni | Doar pentru tine: 0700/0600 pe macOS și Linux, un ACL al utilizatorului tău pe Windows |
| Criptare pe Windows | DPAPI |
| Criptare pe macOS și Linux | AES-256-GCM, cu cheia principală în keychain-ul sistemului |
Dacă sistemul nu oferă această protecție, Yuli nu mută nimic.
Poți alege alt folder (de exemplu, un disc extern) cu Schimbă locația…, cu condiția să fie în afara proiectului și a oricărui depozit git.
Opțiuni
În Opțiuni globale › Securitate › Seif de credențiale:
| Opțiune | Ce face |
|---|---|
| Schimbă locația… | Alege alt folder pentru seif. |
| Injectează | Transmite variabilele din seif către rulare. Implicit se injectează .env, .env.local și .env.development. |
| Materializează la rulare | Scrie un .env temporar pe durata rulării. |
| Adaugă variabilă | Adaugă o variabilă nouă direct în seif. |
| Creează .env.example în proiect | Generează șablonul cu cheile goale. |
| Arată | Afișează o valoare timp de 20 de secunde. |
Proiectul tău continuă să funcționeze
La rulare (configurații de rulare, sarcini și terminalul integrat), Yuli injectează variabilele din seif ca variabile de mediu. Bibliotecile dotenv le respectă, pentru că variabilele reale au prioritate.
Dacă unealta ta are nevoie de fișier pe disc, activează Materializează la rulare: Yuli scrie un .env temporar (permisiuni 0600, ignorat de git) doar pe durata rulării și îl șterge la final.
Și agenții IA
Agenții (Claude Code, Kiro, Codex, Antigravity, Copilot și chatul Yuli) nu văd niciodată valorile. Hook-urile agentului refuză accesul la folderul seifului, iar dacă o valoare apare în ieșirea terminalului, este mascată.
Agenții te pot totuși ajuta să găsești problema cu două unelte care nu returnează valori:
| Unealtă | Ce face |
|---|---|
yuli_vault_findings |
Doar citire: căi, tip, gravitate, situația în git, numele variabilelor și ce păstrează deja seiful. Niciodată o valoare. |
yuli_vault_propose_move |
Îți arată cardul Yuli cu fișierele pe care sugerează să le muți și de ce. Nu mută nimic: decizi tu în card. |
Astfel, agentul poate spune „există un .env în rădăcină, îl mut în seif?”, dar nu îl poate citi niciodată. Vezi și Secrete și confidențialitate.