Bitbucket mentés: amit egy git klón nem hoz vissza
Bitbucket mentés: az Atlassian egyetlen dokumentált helyreállítási útja a saját git klónja, ami a commitokat visszahozza, a pull requesteket viszont nem.
A Bitbucket mentés témája általában egy megnyugtató mondattal szokott lezárulni: a git elosztott, minden fejlesztőnél ott a teljes klón, tehát a verziókezelő önmagát menti. Ez félig igaz, és a hiányzó fele a drága. Az Atlassian saját, dokumentált eljárása egy törölt Bitbucket Cloud repository helyreállítására az, hogy építse újra egy helyi másolatból, ami már megvan Önnek — a klón viszont a commitokat és a branch-eket hozza vissza, a köréjük épült review-előzményt nem.
Ez a bejegyzés végigveszi, mit ad a Bitbucket Cloud natívan, mit állít vissza ténylegesen az Atlassian dokumentált helyreállítási útja, és mit tesz hozzá egy független másolat.
Az Atlassian dokumentált helyreállítási útja: az Ön saját klónja
A Jira Clouddal és a Confluence Clouddal ellentétben — amelyekben van adminisztrátor által indítható Backup Manager — a Bitbucket Cloud nem kínál ezzel egyenértékű teljes exportgombot. A témáról szóló tudásbázis-cikkének címe önmagáért beszél: Reinstating deleted Bitbucket repositories from a local copy, azaz törölt repository-k helyreállítása helyi másolatból.
A dokumentált eljárás pontosan az, aminek hangzik:
- Induljon ki egy olyan helyi másolatból, amely a törölt repository branch-einek nagy részét vagy mindegyikét tartalmazza
- Legyen admin vagy írási jogosultsága a workspace-hez, SSH-kulccsal vagy API-tokennel
- Hozzon létre egy új repository-t
- Irányítsa át rá a helyi klónt —
git remote set-url origin <remoteURL> - Töltse vissza a teljes tartalmat —
git push --force --all
Az Atlassian útmutatója ezután a git log és a git branch -a paranccsal ellenőrizteti, hogy a branch-ek és a commitok visszakerültek. Érdemes észrevenni, mit tesz ez explicitté: a helyreállítás célja a branch és a commit. Törölt repository visszaállítása a Bitbucket Cloud felületén soha nem volt önkiszolgáló művelet.
Ennek a gyakorlati következménye az, hogy a verziókezelés katasztrófa-helyreállítási terve alapértelmezés szerint az, hogy kinél van éppen a legteljesebb klón. Ha egy repository pénteken törlődik, és a legfrissebb másolattal rendelkező kolléga szabadságon van, az visszaállítható állapot annyi, amennyit az utolsó git fetch lehúzott.
Amit egy git klón nem tartalmaz
Ez az a pont, ahol a csapatok rendszeresen meglepődnek, és ez nem is annyira az Atlassian korlátja, mint a git természetéből fakadó tény. A klón az objektum-adatbázist tartalmazza: commitokat, fákat, blobokat, tageket és branch-referenciákat. Nem tartalmaz semmit abból, amit a Bitbucket a kódról saját adatbázisában tárol. Ide tartozik:
- A pull requestek — a diffek, a hozzájuk tartozó vita, a jóváhagyások, és hogy ki mit hagyott jóvá
- A soron belüli review-kommentek és a konkrét kódsorokhoz fűzött szálak
- A branch-jogosultságok és merge-ellenőrzések — azok a szabályok, amelyek meghatározták, hogyan jutott a kód éles környezetbe
- A pipeline-konfiguráció állapota, a repository- és deployment-változók, valamint a deploy kulcsok
- A repository beállításai és hozzáférései — ki mit tehetett, és ez mikor változott
Sok fejlesztőcsapatnál ez bosszantó, de túlélhető. Aki viszont változáskezelési kötelezettség alatt működik, annak ez maga a probléma: a pull request jóváhagyási nyoma a változáskezelés bizonyítéka. Az ISO 27001 auditorok, a SOC 2 értékelők és a NIS2 egyeztetések mind azt kérdezik, hogyan igazolja, hogy az éles rendszereket érintő változásokat átnézték és jóváhagyták. Egy Bitbucket-alapú munkafolyamatban ez a bizonyíték a pull request jóváhagyásokban él — amit egyetlen git clone sem tartalmazott soha.
Ha egy repository-t egy fejlesztői gépről épít újra, a kód hiánytalanul visszajön, a köré épült teljes audit-nyom viszont nem. A commitok megvannak; annak a bizonyítéka, hogy bárki átnézte őket, nincs.
Hol jelentkezik valójában a kockázat
Törlés jogosult fiókkal. Egy workspace-admin — vagy egy támadó, aki admin hitelesítő adatokat szerzett — a terméken belülről törölhet repository-kat. Nem kell hozzá infrastruktúra-hozzáférés, és nincs a túloldalon önkiszolgáló visszavonás.
Force push és előzmény-átírás. Egy git push --force, amely felülír egy branch-et, jogosult, hitelesített művelet. Ha egyetlen helyi klónban sincsenek meg a felülírt commitok, az az előzmény valóban elveszett. Érdemes megjegyezni, hogy ugyanez a --force kapcsoló szerepel az Atlassian saját helyreállítási eljárásában is — ez jól mutatja, mennyire durva a rendelkezésre álló eszköz.
Lassan érlelődő kompromittálás. Egy támadó, aki hetekig bent ül a workspace-ben, mielőtt lépne, arra fogad, hogy az első változtatása előtti tiszta példány sehol nem maradt meg. Egy fejlesztői laptopokra épülő helyreállítási modell ellen ez észszerű fogadás.
Kilépő munkatárs. Amikor a ritkán használt repository legteljesebb klónjával rendelkező fejlesztő távozik, és a gépét letörlik, az adott repository tényleges mentése vele együtt megy el — és ez csak akkor derül ki, amikor szükség lenne rá.
Ugyanaz a megosztott felelősségi határ húzódik itt is, mint amit az Atlassian Cloud natív mentési korlátairól és arról írtunk, mit őriz meg valójában egy Confluence mentés. Az Atlassian üzemben tartja a Bitbucketet és túléli a saját hardverhibáit. Az, hogy a repository-i és az előzményük visszaállíthatók-e egy választott időpontra, a határvonal másik oldalán van.
Mit tesz hozzá egy független Bitbucket mentés
Egy független Bitbucket Cloud másolatnak azt kell lefednie, amit a klón szerkezetileg nem tud:
- Ütemezett mentés a repository-król — minden branch és tag, ütemezetten, olyan tárba, ami nem egy fejlesztő laptopja
- Pull request metaadatok — a review-k, kommentek és jóváhagyások, amelyek a változáskezelési bizonyítékot hordozzák
- Repository-konfiguráció — branch-jogosultságok, merge-ellenőrzések és pipeline-változók, hogy a visszaállított repo ugyanúgy szabályozva térjen vissza
- Időpont-alapú visszaállítás ahelyett, hogy „amit a legfrissebb klón éppen tartalmaz”
- Anomáliaészlelés, hogy egy tömeges repository-törlés a történés közben jelezzen
- Visszaállítás az Ön által felügyelt workspace-be, támogatási jegy nyitása és várakozás nélkül
Segítünk kiválasztani és bevezetni ezt a réteget, és gondoskodunk róla, hogy működjön is — a platform és a munkafolyamat az Öné marad, mi azt biztosítjuk, hogy a beállítás a tényleges Atlassian-környezetét fedje le. Az Atlassian Cloud mentés és helyreállítás oldal munkaterületenként mutatja be, mi kerül védelem alá, a NIS2 SaaS-mentési követelmények bejegyzés pedig részletesen tárgyalja a bizonyítási oldalt.
Hol érdemes kezdeni
Ha arra a kérdésre, hogy „hogyan állítanánk vissza egy törölt repository-t a review-előzményével együtt”, az őszinte válasz az, hogy „valakinél biztos van klón”, akkor egy felmérés a leggyorsabb módja kideríteni, mekkora ez a rés — rövid, gyakorlatias áttekintés a jelenlegi kitettségéről és arról, mit zárna le egy független másolat.
Kapcsolódó
Confluence mentés: mit őriz meg valójában az Atlassian Cloud
Confluence mentés: az oldalak lomtára nem jár le, a törölt terekre 60 nap jut, a natív export pedig egyetlen példányt tárol 14 napig. Mit hagy ki mindez?
Atlassian Cloud mentés: mit ment tényleg a Jira és a Confluence (és mit nem)
A Jira Cloud és a Confluence Cloud 60 napos lomtárat és egy kézi exportgombot ad. Megmutatjuk, mit fed ez le, hol vannak a rések, és mi tölti be azokat.
A SaaS megosztott felelősségi modell — miért nem menti a Microsoft, a Google és az Atlassian az Ön adatait
Röviden: a SaaS-szolgáltató a platform működéséért felel. Az adatok megőrzése az Ön dolga. Ez a gyakorlatban mit jelent M365, Google Workspace, Slack és Atlassian esetén.