Tötänleýin önümçilik kesilmegi, syzdyrylan API açarlary ýa-da pozulan bulut infrastrukturasy¶
Her bir programma üpjünçiligi inereneri, ulgam dolandyryjysy we tehniki uzakdaky işçi ahyrsoňy buýruk göz öňünde tutulanda aşgazany taşlaýan pursat bilen ýüzbe-ýüz bolýar localhost ýa-da staging garşy ýerine ýetirýär production: açylmadyk DELETE a WHERE madda, a DROP TABLE ýa-da terraform destroy, a git push --force esasy şahany ýa-da janly AWS ýa-da Stripe gizlin açarlaryny öz içine alýan köpçülikleýin borçnama. Karýerany gutarýan maglumatlar betbagtçylygyndan 15 minutlyk kiçijik baglanyşygy aýyrýan zat, derrew eliňizi duruzmak, ammar bloklary ýazylmazdan ozal ýazuw traffigini doňdurmak we dogry dikeldiş protokolyny ýerine ýetirmek.
Indi et¶
- ** Elleriňizi doňduryň we howlukmaç "düzeltmek" buýruklaryny işletmäň, maglumat bazasynyň serwerini täzeden açyň ýa-da terminal penjiräňizi ýapyň.
.git/logsreflogda takyk amal möhletleri, SHA hasşleri we zyýany yzyna gaýtarmak üçin zerur çeşme ID-leri bar. Terminal aýlawyňyzy ilki bilen ygtybarly tekst faýlyna göçüriň. - ** Toparyňyzdaky wakada “Slack / Teams” kanalynda 2 minutyň içinde “Severity-1” (SEV-1) wakasyny yglan ediň. Çagyryş maglumatlar bazasynyň dolandyryjysy (DBA) ýa-da Saýt ygtybarlylygy inereneri (SRE) derrew sahypa goýuň.
- ** API açaryny syzdyran bolsaňyz,
.envköpçülige açyk GitHub reposyna faýl ýa-da bulut syry, üpjün edijiniň dolandyryş panelindäki açary FIRST (Git taryhyny täzeden ýazmazdan ozal) açyň.git push. Faýly ikinji gezek pozmak ýa-da güýç bilen basmak, açary klonlaşdyran hüjümçini * saklamaz. - ** Eger tötänleýin ylgasaňyz
DELETE,UPDATE, ýa-daDROPÖnümçilik maglumatlar bazasynda programmany derrew ýazyň. ** Web programmasyny Bejeriş tertibine salyň ýa-da programma ulanyjysynyň ýazuw rugsatlaryny ýatyryň, şonuň üçin täze gelýän geleşikler boşadylmadyk öli toplary ýazmaz ýa-da Wagtlaýyn dikeldişi (PITR) kynlaşdyrar. - ** Hiç haçan işleme
VACUUM,OPTIMIZE TABLE, ýa-dagit gc --prune=nowtötänleýin öçürilenden soň. ** Iki baglanyşyk bazasy (PostgreSQL MVCC, MySQL InnoDB) we Git öçürilen hatarlary we ýetimler zibil ýygnamak / wakuum geçýän sahypalary fiziki taýdan yzyna alýança diskde saklanýar. - ** Eger a
terraform destroyýa-da terminalyňyzda buludy öçürmek skripti işleýär, basyňCtrl + CBIR (iki gezek däl) ýa-da IAM sessiýa nyşanyny öldüriň. ** BasyşCtrl + Cbir gezek ajaýyp ýagdaý ýüze çykýar, şonuň üçin Terraform bölekleýin tygşytlaýar.tfstatebar bolan zatlardan; basmakCtrl + Cýerli döwlet faýlyňyzy zaýalap ýa-da ýitirip biljek masgaraçylykly aborty iki gezek mejbur edýär.
Danger
** Gitde bir syr açandan soň # 1 ölümli ýalňyşlyk: ** Ylgaýandygyňyz üçin hiç wagt özüňizi howpsuz hasaplamaň git rm .env && git commit -m "remove secret" && git push. Gitdäki her bir taryhy borçnama, grafikada hemişelik okalýar, hatda şahany täzeden ýazsaňyzam git push --force, ýetimler SHA-ny GitHub API we köpçülikleýin arhiw gözlegçileri arkaly elýeterli edýär (GHArchive). ** Uzakdaky ammara hatda 1 sekunt hem degýän islendik syr, emitent prowaýderinde derrew 100 göterim ylalaşylan we ýatyrylan / aýlanan ýaly kabul edilmelidir. **
Gyssagly triage iş tertibi: maglumat bazasynyň gaçmagy, git güýç bilen basmak ýa-da gizlin syzmak¶
Ilkinji 5 minutlyk tehniki gaplamany ugrukdyrmak üçin bu karar agajyna eýeriň.
flowchart TD
A["Production Engineering Emergency"] --> B{"Haýsy şowsuzlyk ýüze çykdy?"}
B -->|"Önümde tötänleýin SQL DROP / DELETE / UPDATE"| C["Programma ýazgylaryny / hyzmat ediş tertibini duruzyň; WAKUUM işletmäň"]
B -->|"Leaked API Key / .env / Private Key in Git"| D["Bulut dolandyryş panelinde syry ýatyryň we 60 sekundyň içinde aýlaň"]
B -->|"Tötänleýin git iteklemek - güýç / Öçürilen şahamça"| E["Run git reflog Locally; Copy Last Good Commit SHA"]
B -->|"Accidental terraform destroy / Deleted S3 or VM"| F["Kill IAM Session or Press Ctrl+C Once; Preserve .tfstate"]
C --> G["Record Exact UTC Timestamp; Trigger Cloud PITR Clone or Binlog Flashback"]
D --> H["Audit CloudTrail / Access Logs for Unauthorized Spin-Ups; Scrub Repo with git-filter-repo"]
E --> I["Query GitHub Events / Reflog & Restore Branch with git push --force-with-lease"]
F --> J["Check S3 Versioning Delete Markers, EBS Snapshots, or Cloud Recycle Bin"]
Part 1: Accidental production database DROP, TRUNCATE, ýa-da DELETE without WHERE¶
When a destructive SQL query hits a live production database, the exact recovery mechanism depends on your database engine (PostgreSQL, MySQL/MariaDB, SQL Server, MongoDB, or DynamoDB) and whether the statement was a DML (DELETE / UPDATE) or DDL (DROP TABLE / TRUNCATE) operation.
Step 1: Record the exact UTC timestamp down to the second¶
Before touching any backup console, write down the exact current UTC time (date -u in Linux/macOS terminal, or SELECT NOW(); inside the SQL prompt) and estimate the exact second just before your destructive query started executing. Point-In-Time Recovery (PITR) works by replaying the database's Write-Ahead Log (WAL in PostgreSQL) or Binary Log (binlog in MySQL) up to T_minus_1_second right before your bad query arrived.
Step 2: Stop background jobs and application writes (Protect MVCC tuples)¶
In PostgreSQL, executing DELETE FROM users; ýa-da UPDATE orders SET status = 'cancelled'; does not actually erase a single byte of data from the table file on disk right away. Because PostgreSQL uses Multi-Version Concurrency Control (MVCC), a DELETE ýönekeý düzýär xmax Her hatardaky geleşik ID sözbaşy, geljekki soraglara görünmeýän ýaly bellemek üçin, hatar doly maglumatlary içerde saklamaz base/ Gaýtadan ulanylýan ýeri bellemek üçin ** awtowakuum ** gelýänçä üýşmek faýly.
- If you are on self-hosted or VM PostgreSQL and have no recent backup: Immediately connect as
superuserwe şol tablisadaky awtowakuumy öçüriň (ALTER TABLE table_name SET (autovacuum_enabled = false);), or stop the PostgreSQL service and take a raw block-level filesystem snapshot (LVM/EBSsnapshot) of the/var/lib/postgresql/datadirectory. Specialized PostgreSQL forensic extensions (pg_dirtyread) can read and recover 100 percent of deleted or pre-update rows directly out of the unvacuumed heap table in minutes.
Database recovery matrix by engine and cloud platform¶
| Database Platform | Fastest Recovery Method for Accidental DROP / DELETE |
Step-by-Step Technical Execution |
|---|---|---|
| AWS RDS / Aurora (PostgreSQL / MySQL) | Automated Point-In-Time Recovery (PITR) to a New Instance (Restores to any second within the 1-to-35-day retention window) | 1. Open AWS RDS Console -> Automated backups -> Select your Prod DB -> Restore to point in time. 2. Choose Custom date and time and enter the exact UTC timestamp 10 to 30 seconds BEFORE your bad query ran. 3. RDS spins up a parallel clone ( prod-db-recovery) in 10 to 25 minutes. Dump the intact table (pg_dump -t my_table ýa-da mysqldump) from the recovery clone and import it back into the live Prod DB (or swap the DNS CNAME/endpoint to the recovered clone). |
| Google Cloud SQL / Azure Database | Point-In-Time Clone | In GCP Console -> Select Cloud SQL instance -> Clone -> Select Clone from earlier point in time (UTC) -> Extract missing rows from the clone via pg_dump / mysqldump or Foreign Data Wrapper (postgres_fdw). |
| Supabase / Neon / PlanetScale | Instant Branch / Time-Travel Restore | Neon: Create an instant copy-on-write Branch from a historical timestamp (Timestamp ýa-da LSN 1 minute ago) in 2 seconds and copy the table back.** Maglumat bazasy: ** Dolandyryş paneli -> Maglumatlar bazasy -> uptiýaçlyk nusgalar -> ** Wagt dikeldiş nokady . PlanetScale: ** Ulanyş haýyşy UI-de shemany yzyna öwürmek / yzyna gaýtarmak düwmesini ulanyň. |
** Özbaşdak ýerleşdirilen MySQL / MariaDB ** (bilen binlog_format = ROW) |
** Binlog öwrülişigi (binlog2sql / mysqlbinlog --flashback) ** |
MySQL işledilende binlog_format = ROW (MySQL 5.7.7-den bäri asyl), hersi DELETE ýa-da UPDATE her bir täsir eden hataryň ** doly we öň suratyny ikilik gündeligine ýazýar (mysql-bin.0000XX). Ylga binlog2sql --flashback (ýa-da MariaDB mysqlbinlog --flashback) takyk tersini awtomatiki usulda döretmek üçin şol gündeligiň ýagdaýynda INSERT ýa-da UPDATE SQL skriptini we doly ätiýaçlyk nusgasyny dikeltmän 60 sekuntda gaýtalaň. |
| ** Gar ýagyşy / BigQuery ** (Bulut maglumatlary ammarlary) | ** Içindäki SQL Wagt syýahaty (AT / BEFORE) ** |
Nol ätiýaçlyk dikeltmek zerur. Tablisa 5 minut ozal bolşy ýaly soraň: ** Gar ýagyşy: ** CREATE OR REPLACE TABLE my_table AS SELECT * FROM my_table AT(OFFSET => -60*5); (ýa-da UNDROP TABLE my_table;).** BigQuery: ** SELECT * FROM dataset.my_table FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 10 MINUTE); |
| ** MongoDB atlasy / Replika toplumy ** | ** Oplog PITR ikinji agzany dikeltmek ýa-da gijikdirmek ** | MongoDB atlasynda: ** uptiýaçlyk -> Dikelt -> Wagt nokady ** (gaýtalaýar local.oplog.rs düşmeginden takyk sekuntda ýygnamak). |
2-nji bölüm: Syzdyrylan API düwmeleri, .env Git-e bagyşlanan syrlar ýa-da şahsy açarlar¶
Eger tötänleýin eden bolsaňyz .env faýl, an id_rsa SSH açary, Firebase / GCP hyzmat hasaby JSON faýly, Zolak gizlin açary (sk_live_...) ýa-da AWS AKIA... Git-e giriş açary, takyk iki fazaly yzygiderliligi ýerine ýetiriň: ** A faza (buludyň açaryny öldüriň) ** ilki, ** B faza (Git ammaryny süpüriň) ** sekunt.
Tapgyr A: Derrew 60 sekuntlyk bulut şahsyýetnamasy (Bu BIRINJI ediň)¶
1. AWS (AKIA... Giriş açary ID + gizlin giriş açary)¶
Botlar GitHub-dan AWS açaryny ogurlanda, awtomatiki skript 10 sekuntyň içinde iň uly GPU EC2 mysallaryny aýlamak üçin hasabyňyza girýär (p4d.24xlarge / g5.48xlarge) 30+ global AWS sebitlerinde (Jakarta, Osaka we Eastakyn Gündogar ýaly optiki sebitleri goşmak bilen) cryptocurrency gazmak üçin ýa-da açyk IAM ulanyjysyny döredýär; AdministratorAccess asyl açary pozmazdan ozal.
- ** Syzdyrylan giriş açaryny derrew öçüriň we pozuň: **
- ** AWS konsolyny açyň -> IAM -> Ulanyjylar -> [Ylalaşylan ulanyjy] -> Howpsuzlyk şahsyýetnamalary -> Giriş düwmeleri ** -> ** basyň ** Öçüriň **, soňra ** Öçüriň ** (ýa-da CLI arkaly:
aws iam update-access-key --access-key-id AKIAIOSFODNN7EXAMPLE --status Inactive --user-name MyUser).
- ** AWS konsolyny açyň -> IAM -> Ulanyjylar -> [Ylalaşylan ulanyjy] -> Howpsuzlyk şahsyýetnamalary -> Giriş düwmeleri ** -> ** basyň ** Öçüriň **, soňra ** Öçüriň ** (ýa-da CLI arkaly:
- ** Açyk dakyň
DenyAllwagtlaýyn zyýansyzlandyrmak syýasatyaws stssessiýa belgileri: **- ** Kritiki duzak: ** Öçüreniňizden soňam
AKIA...Eger hüjümçi eýýäm jaň eden bolsa, IAM giriş açarysts:GetSessionTokenýa-dasts:AssumeRoleilkinji 30 sekuntda, wagtlaýynASIA...Sessiýa nyşany, aç-açan çyzgy ** inkär ** syýasatyny goşmasaňyz, 1-den 12 sagada çenli dowam edýärAWSCompromisedKeyQuarantineV2ýa-da ulanyja ýa-da rola häzirki bellikden öň berlen bellikler üçin inkär etmek syýasaty.
- ** Kritiki duzak: ** Öçüreniňizden soňam
- ** AWS CloudTrail-iň açyk howada dowam etmegi üçin audit: **
- ** AWS CloudTrail -> Wakanyň taryhy ** açyň we soňky 2 sagadyň dowamynda ylalaşylan ** Access Key ID ** ýa-da ** Ulanyjy ady ** bilen süzüň.
- Bu 5 tutanýerli jaň üçin ýörite barlaň:
CreateUser,CreateAccessKey,AttachUserPolicy,AssumeRole, weRunInstances. Islendik gödek hadysany ýatyrmak üçin ** AWS Cost Explorer ** we ** EC2 Global View ** barlaň we derrew ** AWS goldaw kazyýetini açyň (Hasap we hasaplaşyk -> ylalaşyk hasaby) **. AWS açar syzdyrylandygyny habar bereniňizde we ýagdaýlary haýal etmän ýatyranyňyzda galp hasaplama hasaplaryndan yzygiderli ýüz öwürýär.
2. Zolak (sk_live_...), OpenAI (sk-...), SendGrid, Twilio we Slack Tokens¶
- ** Zolak: ** ** Döredijiler -> API düwmeleri -> Adaty düwmeler / Çäklendirilen düwmeler -> Üç nokada basyň (
...) -> Aýlaw düwmesi **. ** "Häzir möhleti gutar" ** saýlaň (ýa-da täze açary häzirki wagtda önümçilik gurşawynyň üýtgeýjilerine işjeň ulanýan bolsaňyz, 1 sagatlyk ýeňillik penjiresini düzüň). - ** OpenAI / Antropik: ** API açarlary dolandyryş paneline giriň we derrew ** Revoke / Delete ** düwmesine basyň, şonuň üçin awtomatlaşdyrylan proksi gyryjylary birnäçe minutda müňlerçe dollarlyk LLM token kreditini çykaryp bilmez.
- ** GitHub şahsy giriş bellikleri (PAT), inçe däneli tokenler we açarlary ýerleşdirmek: ** ** GitHub sazlamalary -> Öndüriji sazlamalary -> Şahsy giriş bellikleri ** we syzdyrylan tokeniň üstünde ** Delete / Revoke ** basyň, soňra guramanyňyzyň ** Audit Log **-i barlaň (
Settings -> Audit log) üçinrepo.clone,repo.accessýa-da ekspozisiýa penjiresinde birugsat webhook döretmek. - ** Maglumatlar bazasynyň baglanyşyk setirleri (
DATABASE_URL/postgres:///mongodb+srv://) we Redis URL-leri: ** Maglumat bazasynyň motorynyň içinde maglumat bazasynyň ulanyjysynyň parolyny üýtgediň (ALTER USER app_user WITH PASSWORD 'new_random_secret';), soňra bolsa köne şahsyýetnamalara degişli häzirki açyk TCP birikmeleriniň hemmesini ** ýapyň (SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename = 'app_user' AND pid <> pg_backend_pid();PostgreSQL-da), sebäbi PostgreSQL ýa-da MySQL-da maglumat bazasynyň parolyny üýtgetmek diňe * täze * girişleri bloklaýar we hüjümçiniň eýýäm açyk baglanyşygyny kowulýança göni goýýar.
B faza: Git taryhynyň syryny süpürmek (git filter-repo & GitHub keş keşini çykarmak)¶
Syzdyrylan açar ölenden we önümçilikde aýlanandan soň, howpsuzlyk skanerleri duýduryş bermezligi üçin Git-iň gizlin taryhyny arassalaň:
- ** Ammar taryhyny ulanyp täzeden ýazyň
git filter-repo(ýa-da BFG repo-arassalaýjy): **- Ammaryňyzyň täze ýalaňaç aýna klonyny alyň we syzdyrylan faýly aýyryň (mysal üçin,
.env) ähli şahalar we bellikler boýunça her bir taryhy borçnamadan:
- Ammaryňyzyň täze ýalaňaç aýna klonyny alyň we syzdyrylan faýly aýyryň (mysal üçin,
- ** Arassalanan taryhy güýçlendiriň we keşli GitHub Pull haýyşy / tabşyryş görnüşleri: **
- Arassalanan taryhy täzeden gözläň (
git push origin --force --allwegit push origin --force --tags). - ** Möhüm GitHub keş-ýerine ýetiriş ädimi: ** Arassalanan taryhy zor bilen basanyňyzdan soňam, köne 40 simwoly bilýän her bir adam SHA URL-ni edýär (
github.com/org/repo/commit/abc1234...) GitHub web UI-de köne haram edilen işi, GitHub serwer tarapyndaky zibil ýygnaýança görüp biler. ** GitHub goldawy ** bilen habarlaşyň (ýa-da ammaryň Howpsuzlyk Geňeşi / Goldaw portalyny ulanyň) takyk köne SHA bilen habarlaşyň we web keş-den çykarylan / göçürilen amallary ** çykarmagyny haýyş ediň.git gcuzakdaky ammarda **.
- Arassalanan taryhy täzeden gözläň (
3-nji bölüm: Tötänleýin yzyna gaýtarmak git push --force, git reset --hardýa-da öçürilen şahasy¶
Eger tötänleýin ylgasaň git push --force we ýoldaşlaryňyzyň eden borçlaryny ýok etdi mainýa-da ylgady git reset --hard HEAD-5 we ýerli işiň bir gününi ýitirdi, ** howsala düşmäň, sebäbi Git hiç haçan edilen zatlary derrew pozmaýar. **
Näme üçin "ýitiren" işleriňiz içerde howpsuz oturýar? .git/logs (Reflog)¶
Haçan-da bir wada döredeniňizde, şahalary çalşyň, gaýtadan işlediň ýa-da täzeden düzüň, Git öňki ýazgyny ýazýar HEAD we şahanyň ujy SHA-1 / SHA-256 görkezijiler, ** salgylanma gündeligi (git reflog) **, we hakyky ýetimleri zibil ýygnamakdan ozal iň azyndan 14-den 90 güne çenli diskde saklaýar.
Stepdim-ädim Git gyssagly dikeldiş reseptleri¶
Ssenariýa 1: Sen ylgadyň git push --force we gaýtadan ýazmak origin/main¶
- ** SHA-nyň takyk tabşyrygyny tapyň
origin/maingüýç-kuwwatyňyzdan öň sag tarap görkezdi: **- ** A usuly (remoteerli uzakdan yzarlaýyş reflogyňyzy barlaň): ** Bu buýrugy iten terminalyňyzda işlediň:
Çykyşlary görersiňiz:
Ine,
a1b2c3d (HEAD -> main, origin/main) refs/remotes/origin/main@{0}: update by push 9f8e7d6 refs/remotes/origin/main@{1}: fetch: fast-forward9f8e7d6(origin/main@{1}) takyk borçnamadyrorigin/maingüýç-kuwwatyňyz ony ýazmazdan ozal dogrydy. - ** B usuly (Işlemedik islendik topardan soraň
git pullhenizem): ** getiren işdeşiňizmainÖňem şu günki güne çenli ýerli ýerlerde oturylyşyksyz taryhy barorigin/mainşahasy. - ** C usuly (GitHub REST API Wakalar gündeligini soraň): ** localerli refloguňyzda uzak ýagdaý ýok bolsa, GitHub-yň iteklemek wakalary API-den soraň
"before"Güýçli itergi hadysasynyň SHA hash:
- ** A usuly (remoteerli uzakdan yzarlaýyş reflogyňyzy barlaň): ** Bu buýrugy iten terminalyňyzda işlediň:
Çykyşlary görersiňiz:
- ** Dikelt
origin/mainöňki SHA-ny ygtybarly ýerine ýetirmek: **- Wadanyň dogry görünýändigini barlaň (
git log -n 5 9f8e7d6), soňra takyk SHA-ny pult bilen itekläňmainşahasy ulanylýar--force-with-lease:
- Wadanyň dogry görünýändigini barlaň (
2-nji ssenariýa: Sen ylgadyň git reset --hard ýa-da itmezden ozal ýerli şahany pozdy¶
- ** Ylga
git reflogýerli ammarynda: ** - ** SHA-ny ýerine ýetiriň
reset:giriş ** (meselem,HEAD@{2}: commit: feat: add payment webhook) we göni SHA-ny görkezýän täze halas ediş bölümini dörediň: - ** Özüňiziň * işlenmedik * faýlyňyzy ýitiren bolsaňyz näme?
git addredaktirlendi (sahnalaşdyryldy) we soňra süpürildigit reset --hard? **- Ylgaýan pursat
git add myfile.ts, Git şol faýlyň doly mazmunyny gysýar we ýazýar.git/objects/hiç haçan ylgamasaňyzam, ** çalaja blob ** hökmündegit commit. Üýtgetme wagty boýunça tertiplenen ähli çalaja bölekleri sanap, ony dikeldiň:
- Ylgaýan pursat
4-nji bölüm: tötänleýin terraform destroy or deleted cloud storage (S3, EBS, VMs)¶
Infrastruktura-kod (IaC) turbageçirijisi ýa-da el bilen CLI buýrugy önümçilik bulut çeşmelerini ýok edip başlasa:
- ** Jezalandyrmagy ygtybarly bes ediň: **
- Terminalyňyzda ýerli işleýän bolsaňyz, ** basyň
Ctrl + CONCE ** şonuň üçin Terraform häzirki API jaňyny tamamlaýar we täzelenenini ýazýar.tfstatearassa faýl beriň. “GitHub Actions”, “GitLab CI” ýa-da “Terraform Cloud” -yň içinde işleýän bolsaňyz, “Run Cancel **” -e basyň we bulut konsolynda CI ylgawçysynyň AWS / GCP IAM roluny derrew öçüriň, uçuşdaky API pozulmalary şowsuz bolarAccessDenied.
- Terminalyňyzda ýerli işleýän bolsaňyz, ** basyň
- ** Toky ätiýaçlaň
.tfstatederrew faýl beriň: **- Uzakdaky döwlet faýlyňyzyň ýerli göçürmesini göçürip alyň (
terraform state pull > emergency-backup.tfstate) we 10 minut mundan ozal öňki döwlet wersiýasyny almak üçin Terraform döwlet çelekiňizdäki S3 çelek wersiýasyny barlaň.
- Uzakdaky döwlet faýlyňyzyň ýerli göçürmesini göçürip alyň (
- ** Bulut üpjün edijisini "Softumşak öçürmek" we Bin howpsuzlyk torlaryny gaýtadan işlemek: **
- ** Amazon S3 (Çelek wersiýasy açyk): ** S3 çelekdäki faýllary pozmak (
aws s3 rm --recursive) ýekeje obýekti ** pozmaýar; diňe bir obýektiň üstünde nol baýt ** Markeri pozuň ** goýýar. Markerleri pozuň (S3 Batch Operations ýa-da 5 setirli Python arkaly)boto3skript) faýllaryňyzyň 100 göterimini derrew dikeltmek üçin. - ** AWS EBS göwrümleri we RDS Snapshots (Gaýtadan işleýän gap): ** Eger sazlanan bolsa konsolda ** AWS gaýtadan işlemek binasyny barlaň we ** AWS ätiýaçlyk ** gümmezlerini barlaň.
- ** Google Bulut Platformasy (GCP) we Microsoft Azure: ** Öçürilen GCP Taslamalary we Azure Resurs Toparlary / Açyk Kärhanalar / ** Soft Delete ** açyk ammar hasaplary, konsolda bir gezek dikeltmek arkaly ** 7-30 gün ** dikeldilip bilner.
- ** Amazon S3 (Çelek wersiýasy açyk): ** S3 çelekdäki faýllary pozmak (
Döwülen Terraformany nädip dikeltmeli .tfstate döwlet faýly ýa-da ýetim infrastrukturany täzeden import etmek¶
Haçan a terraform apply ýa-da tötänleýin terraform destroy orta uçuş kesilýär ýa-da kimdir biri S3 / GCS-de uzakdaky döwlet faýlyny tötänleýin pozsa, bulut infrastrukturanyňyz howply bölünen beýni ýagdaýyna girýär, käbir çeşmeler henizem AWS / GCP-de bar, beýlekileri bolsa ýok .tfstate:
- ** overazylan ýa-da öçürilen pulty dikeltmek
.tfstateS3 / GCS wersiýasyndan faýl: **- Hiç haçan JSON-ny el bilen redaktirlemäň
.tfstateBaşga bir opsiýa başa barmasa, tekst redaktorynda el bilen faýl beriň, sebäbi ýekeje gabat gelmedi"serial"ýa-da"lineage"UUID seti Terraform-yň gaýtadan ulanylmagynyň öňüni alar. - Uzak arka tarapyň ýaşaýan ýerinde S3 çelekiňizi (ýa-da Google Cloud Storage çelegi / Terraform Cloud Workspace ** States ** goýmasyny) açyň, S3 konsolynyň ýokarsyndaky ** Görkeziş wersiýalaryna basyň, tapyň
terraform.tfstatewersiýa erbet işlemezden ozal bellendi, göçürip alyň we täze häzirki ýagdaý ýaly howpsuz yzyna itekläň:
- Hiç haçan JSON-ny el bilen redaktirlemäň
- ** Baglanan döwlet gulpuny döwmek (
Error acquiring the state lock): **- Erbet abort edeniňizde
terraform destroybilenCtrl + Cýa-da asylan CI ylgaýjysyny öldürmek, uzakdaky DynamoDB tablisasy ýa-da GCS gulp faýly ölen proses ID-si bilen gulplanýar. - Ilki bilen CI dolandyryş paneliňizde we ýoldaşlaryňyz bilen beýleki Terraform amallarynyň henizem şol iş meýdanyna garşy işleýändigini barlaň, soňra säwlik habarynda çap edilen Lock ID UUID ulanyp ýetim gulpy boşadyň:
- Erbet abort edeniňizde
- ** Diri galan maglumat bazalaryny döretmezden bölekleýin weýran edilen gurşawy täzeden gurmak (
terraform import): **- Eger a
terraform destroyraýatlygy bolmadyk Programma ýük balanslaryny ýok etdi (aws_lb) we ECS / EKS işçi düwünleri, ony saklamazdan ozal, ** düzeltmek aňsat **: işlediňterraform applywe Terraform, diri galan RDS maglumat bazasyna el degirmän 5 minutda ähli raýatlygy bolmadyk ulgamlary döreder we gatlaklary noldan hasaplar. - Döwlet faýlyňyz diri galan döwlet maglumatlar bazasynyň ýa-da S3 çeleginiň yzyny ýitiren bolsa, ** ulanyň
import {}konfigurasiýa bloky ** (Terraform 1.5+) ýa-daterraform import aws_db_instance.prod_db my-rds-instance-idbar bolan bulut çeşmesini ýok etmän döwlet faýlyňyza baglamak we işletmekterraform plantassyklamak üçin"0 to destroy"ýüz tutmazdan ozal.
- Eger a
5-nji bölüm: Näsazlygy nädip dolandyryjyňyza habar bermeli we birkemsiz ölümden soň alyp barmaly¶
Uzakdan işleýän wagtyňyz önümçilik hadysasyna sebäp bolanyňyzda, professional abraýyňyz ** ýalňyşlygyň özi däl-de, aç-açanlygyňyz, asuda aragatnaşyk we yzygiderli düzedişiňiz bilen kesgitlenýär.
Waka aragatnaşygynyň 3 altyn düzgüni¶
- ** Döwlet faktlary, täsiri we ETA gizlenmezden, gijikdirmezden we günäkärlemezden: ** erroralňyşlygy açylandan 2 minut soň habar beriň.
- ** "Kök-sebäbini düzetmek" -den aýratyn "Mitigasiýa" (gan akmagy duruzmak): ** Gyssagly ýagdaýda siziň ýeke-täk maksadyňyz hyzmaty dikeltmek (erbet ýerleşdirmäni yzyna gaýtarmak, PITR maglumat bazasynyň klonyna geçmezlik ýa-da aýratynlyk baýdagyny aýyrmak). Ertir üçin çuňňur kod refaktoryny ýazdyryň.
- Post regular 15-minute heartbeat updates in the incident channel so executives and customer support know someone is in control.
Ackuwaş / toparlaryň hadysalary deklarasiýa skriptini göçüriň¶
[SEV-1 INCIDENT] Production [Service / Database Name] Impact - What happened: At
[HH:MM UTC], while executing[brief technical action, e.g., a data migration script], an unintended[DELETE / config change / force-push]was applied to production[database / service]. - Current Customer Impact:[e.g., Checkout API is returning 500 errors / User profile updates are paused]. - Immediate Mitigation in Progress: 1. Write traffic to[table/service]has been paused to preserve data integrity. 2. Point-In-Time Recovery (PITR) clone to[HH:MM:SS UTC](Wakadan 10 sekunt öň) häzirki wagtda aýlanýar[AWS RDS / GCP]. - ** Waka serkerdesi: **@[Your Name](kömek edýär)@[DBA/On-Call SRE]). - ** Indiki täzelenme: ** 15 minutda ([HH:MM UTC]) ýa-da dikeldiş klony internete giren badyna.
Wakadan soňky in engineeringenerçilik gorag sanawy (Aýypsyz ölümden soň)¶
Önümçilikdäki her bir adam ýalňyşlygy aslynda ** ulgam dizaýn boşlugy ** (ýekeje göçürme terminaly buýrugy garawulsyz önümçiligi taşlap bilýän bolsa, ulgam şowsuzlyga garaşýardy). Ertesi gün öleniňizden soňky resminamada bu anyk tehniki garawullary teklip ediň we durmuşa geçiriň:
- ** Reňk kody we prefiks önümçilik teklipleri (
kube-ps1,psql.psqlrc): ** Gabyňyzy we SQL müşderiňizi islendik baglanyşyk üçin sazlaňPRODUCTIONaçyk gyzyl görkezýär[PROD-DB]gyssagly we her interaktiw PostgreSQL sessiýasyny aBEGIN;geleşik bloky (ýa-da toplum)SET default_transaction_read_only = on;). - ** Işlet
safe-updates(--i-am-a-dummy) MySQL / MariaDB müşderilerinde: ** Goşsafe-updatesto[mysql]içinde-/.my.cnfso MySQL outright refuses to execute anyUPDATEýa-daDELETEýetmezçiligiWHEREesasy madda ýa-da aLIMIT. - ** Işlediň
DeletionProtection = trueähli önümçilik RDS maglumat bazalarynda, S3 çeleklerde we Terraform döwlet çeşmelerinde ** (lifecycle { prevent_destroy = true }). - Enforce Git Branch Protection Rules on
main/production: DisableAllow force pushesweAllow deletionsGitHub / GitLab-da goralýan şahalarda, hatda ammar dolandyryjylary hem edip bilmeýärlergit push --forcetomain. - ** Gizlin skaner çeňňeklerini guruň (
gitleaksýa-datrufflehog) we GitHub Push Protection: ** Içindäki bloklary ýerine ýetiriňAKIA,sk_live_, ýa-da.envöň ýerli nagyşlargit commithatda üstünlik gazanýar.
Freygy-ýygydan berilýän soraglar¶
Önümçilik maglumatlar bazasynyň tablisasyny tötänleýin taşlandygy ýa-da sahypanyň kesilmegine sebäp bolanym üçin işden kowarynmy?¶
Birkemsiz howpsuzlyk medeniýeti bilen işleýän sagdyn in engineeringenerçilik guramalarynda (häzirki zaman tehnologiýalary, DevOps we SRE toparlary boýunça standart) inersenerler, hadysany derrew habar berseler we hyzmaty dikeltmäge kömek etseler, önümçilikdäki dogruçyl ýalňyşlyklary sebäpli işden kowulmaýar. In Engineeringenerçilik ýolbaşçylary, kiçi ýa-da uly işläp düzüjiniň ýeke-täk gözden geçirilmedik buýruk bilen önümçilik stoluny taşlamagy üçin çig rugsady we garawullary ýok bolsa, munuň düýp sebäbi erbetlik däl-de, giriş gözegçiligi we ýaýbaňlandyryş gurallaryndaky kemçilikdir. Iş ýüzünde, ýaňy-ýakynda ilkinji gezek kesilenini başdan geçiren inerener, häzirki wagtda bu ulgam bilen baglanyşykly toparda iň ygtybarly adam. Yzygiderli ýatyrylmagyna alyp barýan ýeke-täk hereket, maglumat ýitirmek hadysasyny ýapmaga synanyşmak, audit ýazgylaryny pozmak ýa-da waka derňewi wagtynda ýalan sözlemekdir.
Näme üçin derrew janly önümçilik traffigimi täze dikeldilen Point-In-Time Recovery (PITR) maglumat bazasyna geçirmeli däl?¶
Diňe bir tablisadan hatarlary tötänleýin pozan bolsaňyz (mysal üçin `user_preferences` tablisa) sagat 14: 00-da we 13:59:50 UTC-a dikeldilen PITR klonyny aýlamak üçin 20 minut gerek, göni önümçilik maglumat bazasy müňlerçe kanuny täze müşderi sargytlaryny we töleglerini gaýtadan işlemegi dowam etdirip biler. `orders` 14:00 bilen 14:20 UTC aralygyndaky tablisa. Productionhli önümçiligiň DNS ahyrky nokadyny 13:59:50 PITR klonyna gözi bilen süýşürseňiz, täze 20 minutlyk müşderi sargytlaryny ýok edersiňiz. Munuň ýerine esasy maglumatlar binýadyny onlaýn ýagdaýda saklaň (ýazgylar diňe bozulan aýratynlyklar bilen saklanýar) we 13:59:50 PITR klonyndan ýiten hatarlary göni önüm tablisasyna eksport ediň.
GitHub ammaryny aç-açan açanymdan iki minut soň .env faýl, ähli API düwmelerini aýlamalymy?¶
Hawa, şol açarlaryň 100 göterimi henizem ýatyrylmaly we derrew aýlanmaly. Jemgyýetçilik GitHub ammaryna itergi berlen her bir borç, hakyky GitHub Wakalar API ("Firehose") arkaly hakyky wagtda ýaýlyma berilýär we kanuny howpsuzlyk arhiw hyzmatlary (GHArchive ýaly) we bulut torlarynda 24/7 işleýän zyýanly awtomatlaşdyrylan maglumat ýygnaýjy botlar tarapyndan indekslenýär. Iki minutdan soň ammaryň görünişini “Public” -dan “Private” -a öwürmek, awtomatiki göçürijileriň eýýäm göçürilen nusgasyny pozmaýar.
Nädip git push --force-with-lease bilen deňeşdirilende kesilmeginiň öňüni alyň git push --force?¶
Standart işledeniňizde `git push --force`, Git uzakdaky şahany ýerli şahamçanyňyz bilen şertsiz ýazýar, şol bir wagtyň özünde ýoldaş ýoldaşyň şol şaha tarap iteklän zatlaryny ýuwaşlyk bilen ýok edýär. Ulanylanda `git push --force-with-lease` (we has gowusy, `--force-if-includes`), Git ilki uzakdaky serweri barlaýar, uzakdaky şahanyň ujy henizem ýerli enjamyňyzyň SHA-nyň takyk ýerine ýetiren işine laýyk gelýär. Eger işdeşiňiz ýa-da CI turbageçirijisi soňky geleniňizden bäri uzakdaky şahada täze bir wada beren bolsa, `--force-with-lease` işlerini ýok etmegiň ýerine "köne maglumat" duýduryşy bilen arkaýyn ýatyrýar.
Çeşmeler barlandy¶
- Milli standartlar we tehnologiýa instituty (NIST, Amerikanyň Birleşen Ştatlary): * NIST SP 800-61 Ylham 2 / Ylham 3 Kompýuter howpsuzlygy hadysalaryny dolandyrmak boýunça gollanma we Ygtyýarly ylalaşyk mazmuny *.
- Amazon web hyzmatlary (AWS), Google bulut platformasy (GCP) we Microsoft Azure resminamalary (ABŞ): * RDS awtomatlaşdyrylan nokady dikeltmek (PITR) arhitekturasy, AWS IAM ylalaşylan esasy karantin syýasatlary (
AWSCompromisedKeyQuarantineV2), we S3 wersiýasy Delete-Marker Dikeldiş *. - PostgreSQL Global Ösüş Topary we MySQL / Oracle Resminamalary (Halkara): * PostgreSQL Writeazuw-Öňe Giriş (WAL), MVCC Tuple Görünişligi we MySQL Row-esasly Ikili Log Flashback Dikeldiş *.
- Git SCM resmi resminamalar we GitHub howpsuzlyk laboratoriýasy (Halkara): * Git Reflog (
git-reflog), Dangling obýekti dikeltmek (git-fsck), Taryhy täzeden ýazmak (git-filter-repo) we gizlin skanerden itmek goragy *. - USENIX Assosiasiýasy / SREcon we Google Saýtyň Ygtybarly In Engineeringenerligi (SRE) Kitaplary (Halkara): * Wakalary dolandyrmak, Gaýragoýulmasyz dolanyşyk we Aýypsyz Postmortem Medeniýeti *.
Degişli gollanmalar¶
- Gyssagly uzakdaky iş howpsuzlygy we maglumatlaryň gizlinligi
- Kompýuter ätiýaçlyk nusgalary 3-2-1 strategiýasy we betbagtçylygy dikeltmek
- Tötänleýin faýl öçürilmegi we formatlanan sürüjini dikeltmek
- Web hosting krizis göçümi we ätiýaçlyk dikeldiş
- Fişing we ylalaşylan hasaplar
- Gyssagly kömek belgileri