---
title: "Pagtuyok sa master key ug signing key, ug break-glass access"
description: "Tuyoka ang master key nga nagpanalipod sa tinipig nga credential, ug gamita ang break-glass access."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/ceb/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagtuyok sa master key ug signing key, ug break-glass access

<span id="master-key-and-signing-key-rotation-and-break-glass-access"></span>

Mga kontrol kini sa seksiyon 14 sa 21-compliance.md nga pangayoon sa auditor pinaagi sa ngalan. Mao kini ang pamaagi; ebidensiya ang mga rekord nga mahimo niini.

## Mga yawe <!--quire:the-keys-->

Tinatakan ang matag natipig nga credential gamit ang bag-ong data encryption key (DEK). Giputos ang DEK sa master key (ang KEK), ug gitipigan tupad niini ang reference sa master key (`key_ref`, o ang reference sulod sa packed value). Ilisan sa pagtuyok sa master key ang pagkaputos sa mga DEK. Dili niini i-decrypt o i-encrypt pag-usab ang credential.

| Setting | Kahulogan |
| --- | --- |
| `QUIRE_MASTER_KEY` | Kasamtangang master key: 32 bytes, base64. Putosan niini ang matag bag-ong sekreto |
| `QUIRE_MASTER_KEY_VERSION` | Label sa bersiyon niini. `v1` kon wala itakda. Dugangi kini matag ilis sa yawe |
| `QUIRE_MASTER_KEY_RETIRED` | Mga daang yawe nga mahimong gigamit pagtipig og sekreto, isip `v1=<base64>,v0=<base64>`. Basahon ra, dili sulatan |

Parehas nga tulo ka setting ang basahon sa web tier, worker ug command nga `bun run kek:rotate`. Kinahanglan parehas ang mga bili niini; kon dili, dili maablihan sa usa niini ang gitak-opan sa lain.

Kon walay `QUIRE_MASTER_KEY`, magpabilin sa matag subsystem ang yawe nga makuha niini gikan sa `QUIRE_SECRET_KEY`. Molihok kini, ipakita kini nga degraded sa panid sa System health, ug mabasa gihapon kini human nimong itakda ang master key; mao kini ang paagi nga ibalhin sa unang pagtuyok ang tanan gikan niini. Mahimong i-decrypt sa bisan kinsa nga makabasa sa palibot sa proseso ang tanang tinipig nga credential, busa kinahanglan adunay master key ang instalasyon sa production, tipigan sa secret store ug sa laing backup gikan sa database.

## Pagtuyok <!--quire:rotating-->

Makita ang gidugayon sa yawe sa Platform console, Security, Master key, ug isip metric nga `quire.secrets.master_key.age` (adlaw). Isulat sa adlaw-adlaw nga iskedyul nga `platform.key_age` (03:41 UTC) ang pahinumdom sa platform audit chain kon moabot og 365 ka adlaw ang yawe, ug usbon kini matag 30 ka adlaw hangtod matuyok. Tuyoka kini sa pag-abot sa pahinumdom ug matag higayon nga posibleng na-expose ang yawe.

1. Himoa ang bag-ong yawe: `openssl rand -base64 32`.
2. Itakda niini ang `QUIRE_MASTER_KEY` ug itakda ang `QUIRE_MASTER_KEY_VERSION` sa sunod nga label (`v2`). Ibalhin ang daang yawe ngadto sa `QUIRE_MASTER_KEY_RETIRED` isip `v1=<old base64>`. Tipigi ang kopya sa duha ka yawe sa gawas niining host.
3. I-deploy ang web tier ug worker uban sa bag-ong setting. Putosan na ang bag-ong sekreto ubos sa `env:QUIRE_MASTER_KEY:v2`; maablihan gihapon ang daan pinaagi sa retired key.
4. Hangyoa ang pagtuyok ug ang rason nga ibutang sa audit trail:
   - sa console: Security, Master key, Rotate the master key; o
   - sa shell nga adunay samang palibot: `bun run kek:rotate request --reason "Annual rotation, ticket SEC-114"`.
5. Putosan pag-usab sa worker ang usa ka bahin matag minuto (iskedyul nga `platform.key_rotation` sa scheduler) ug mopadayon kini human sa restart. Aron mahuman kini dayon: `bun run kek:rotate run`. Tan-awa ang kahimtang niini gamit ang `bun run kek:rotate status`.
6. Kon ipakita sa rekord nga nahuman ang pagtuyok nga **zero unresolved ug zero failed**, kuhaa ang retired key gikan sa `QUIRE_MASTER_KEY_RETIRED` ug i-deploy pag-usab. Tipigi kini hangtod niadto: basin giputos gihapon sa daang yawe ang bili nga wala niini mabalhin.

### Mga butang nga sudlan sa job <!--quire:what-the-job-walks-->

Lakawon niini ang matag store nga adunay giputos nga DEK: ang naa sa `SEALED_STORES` (`apps/worker/src/key-rotation.ts`). Lakawon ang mga store sa control database didto sa control database; tagsa-tagsa nga lakawon ang mga store sa organisasyon ubos sa row-level security sa database nga adunay niini, busa tuyokon didto ang tenant nga naka-pin sa kaugalingong database. Mapakyas ang usa ka test kon adunay idugang nga wrapped-key column sa schema apan wala kini nganli sa listahan; mapakyas usab ang laing test kon wala mailakip sa listahan ang sealed column nga giila sa credential review.

### Ang rekord <!--quire:the-record-->

- `ops.key_rotation`: usa ka row kada pagtuyok, uban sa rason, kinsa ang mihangyo niini, kahimtang ug mga total niini (giputos pag-usab, bag-o na, wala masulbad, napakyas).
- `ops.key_rotation_progress`: usa ka row kada store ug scope human malakaw, uban sa key reference nga dili mabasa ug gidaghanon sa mga bili nga gigamit niini. Laktawan kini sa gipadayon nga pagtuyok.
- Platform audit chain: `platform/key_rotation_request` (uban sa rason), usa ka `platform/key_rotation_store` kada store uban sa gidaghanon niini, ug `platform/key_rotation_complete` o `platform/key_rotation_fail`; `platform/key_age_reminder` para sa pahinumdom.
- Metrics: `quire.secrets.master_key.age` ug `quire.secrets.rewrap.outstanding` (mga bili nga wala mabalhin sa kataposang pagtuyok).

### Kon adunay bili nga wala masulbad <!--quire:when-values-are-unresolved-->

Wala masulbad ang usa ka bili kon giputos kini gamit ang key reference nga wala niini nga instalasyon, o dili kini porma nga gipaabot sa column niini. Ingnon sa progress record ang reference (pananglitan `env:QUIRE_MASTER_KEY:v0 (unreadable)`). Ibalik kana nga yawe ngadto sa `QUIRE_MASTER_KEY_RETIRED` ug padagana og laing pagtuyok; o, kon wala na gyod ang yawe, pabutanga ang administrador sa organisasyon og bag-ong credential, nga iputos dayon gamit ang kasamtangang yawe. Ipakita sa record ang sayop sa napakyas nga pagtuyok; ayoha ang hinungdan ug paghangyo pag-usab.

## Mga signing key <!--quire:signing-keys-->

Lahi kini sa master key: gipirmahan sa kaugalingong RSA key sa matag organisasyon ang mga token niini sa OpenID Connect ug mga mensahe sa LTI, ug gipatik kini sa `/.well-known/jwks.json`. Walay buluhaton ang operator dinhi. Publikohon sa hourly nga iskedyul nga `platform.signing_keys` ang kapuli pito ka adlaw sa dili pa moabot sa siyamnapung adlaw ang kasamtangang yawe; human sa usa ka semana, magsugod pagpirma ang kapuli ug mahimong nagretiro ang daan nga yawe; tangtangon ang daan nga yawe paglabay sa 90 ka adlaw ug mawala kini sa key set. Matag lakang usa ka `platform/signing_key_advance` entry sa platform audit chain.

Aron sayo ilisan ang yawe sa organisasyon, pananglitan human ma-expose kini:

- sa console: Security, Master key, Publish a new signing key (kinahanglan ang `platform/keys_manage`); o
- sa shell nga adunay palibot sa worker: `bun run kek:rotate signing-keys rotate --tenant <slug or id> --reason "Key exposed, INC-3310"`. Gilista sa `bun run kek:rotate signing-keys status` ang matag yawe sa organisasyon sumala sa yugto niini.

Ipatik dayon ang bag-ong yawe ug magsugod kini pagpirma human sa pito ka adlaw, sa pagretiro sa kasamtangang yawe. Tinuyo ang usa ka semana: nag-cache sa key set ang mga relying party, ug mapakyas dayon ang tanang tool kon mubo ang pag-overlap. Magpabilin sa key set ang nagretirong yawe sulod pa sa 90 ka adlaw aron mapamatud-an gihapon ang mga token nga gipirmahan niini. Kon kinahanglan kining dili na saligan dayon tungod sa pag-expose, usbon ang row gamit ang kaugalingong database access sa operator ubos sa change record (read only ang break-glass access), ug mapakyas unya ang pag-verify sa mga token nga gipirmahan niini. Ang pinugos nga pagtuyok mao ang `platform/signing_key_rotate` sa audit chain, uban sa rason. Kinahanglan gamiton sa worker ang samang mga setting sa `QUIRE_MASTER_KEY` sa web tier aron maputos ang bag-ong yawe; iputos pag-usab sa `bun run kek:rotate` para sa master key ang mga signing key uban sa uban pa (`oauth_signing_key` anaa sa `SEALED_STORES`).

## Break-glass nga access sa production <!--quire:break-glass-production-access-->

Walay tawo nga adunay permanenteng access sa production. Kon dili na makahulat ang usa ka butang, mohatag ang owner og break-glass grant: Platform console, Security, Break-glass access.

- Adunay scope ang grant (usa ka organisasyon, o ang platform registry), rason nga labing menos 20 ka karakter ug nagtudlo sa insidente o ticket, ug panahon nga 5 hangtod 240 ka minuto. Mohurot kini sa kaugalingon: susihon kini batok sa orasan sa matag statement.
- Mahimo kining ihatag sa owner nga nag-isyu niini, o sa laing owner (two person form). Ang tawo lamang nga gihatagan niini ang makagamit. Kinahanglan ang `platform/break_glass_issue` sa pag-isyu ug `platform/break_glass_use` sa paggamit; owner ra kini sa default.
- Ipadagan ang mga statement pinaagi sa gateway, dili pinaagi sa database login: read only, tagsa-tagsa, limitado sa organisasyon o control registry, adunay timeout nga lima ka segundo ug kutob sa 500 ka row. Ipakita ang gidak-on sa binary nga bili.
- Irekord sa platform audit chain ang pag-isyu (uban sa rason), pagbawi, matag statement sa dili pa modagan (`platform/break_glass_statement`, lakip ang gisalikway nga adunay resulta nga `denied`) ug matag resulta (`platform/break_glass_result`). Tipigan sa `ops.break_glass_statement` ang mga id sa audit entry aron maapil sa rekord sa pag-isyu ang mga entry niini.
- Dili itanyag ang write. Ang kausaban nga dili na makahulat sa release himoon gamit ang kaugalingong database access sa operator ubos sa lahi nga change record ug gawas niining produkto; ang rekord kinahanglang maghisgot sa reference sa insidente nga gigamit dinhi.

Ngano nga dili mohatag og database credential: magpabilin ang Postgres login human sa session nga mihangyo niini, molaktaw kini sa row-level security nga gisaligan sa aplikasyon, ug dili kini makasulat sa audit chain sa produkto. Busa kutob ra sa server log nga gipadala sa usa ka tawo ang pag-audit sa mga statement. Gihimo sa gateway nga kabahin sa access ang audit trail imbis nga batasan lang nga sundon.

Aron motubag sa hangyo sa audit: ilista ang mga grant niadtong panahona (Break-glass access), ablihi ang history sa grant aron makita ang mga statement ug id sa audit entry, ug basaha kana nga mga entry sa platform audit chain (`bun run audit:verify --platform` nagpamatuod nga kompleto ang chain).

Source: https://docs.quirelms.com/ceb/ops/key-rotation/index.mdx
