---
title: "Hoʻololi kī haku a me kī pūlima, a me ke komo ulia pōpilikia"
description: "Hoʻololi i ke kī haku e pale ana i nā palapala hōʻoia mālama ʻia, a hoʻohana i ke komo ulia pōpilikia."
image: "https://docs.quirelms.com/og.png"
---

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

# Hoʻololi kī haku a me kī pūlima, a me ke komo ulia pōpilikia

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

ʻO nā kāohi ma ka māhele 14 o 21-compliance.md a ka loiloi e noi ai ma ko lākou inoa. ʻO kēia ʻaoʻao ke kaʻina hana; ʻo nā moʻolelo i hana ʻia nā hōʻike.

## Nā kī <!--quire:the-keys-->

Hoʻopaʻa ʻia kēlā me kēia palapala hōʻoia me kī hoʻopāʻālua ʻikepili hou (DEK). Hoʻopili ʻia ka DEK e ke kī haku (KEK), a mālama ʻia ka kuhikuhi kī haku ma kona ʻaoʻao (`key_ref`, a i ʻole ke kuhikuhi i loko o ka waiwai pūʻolo). Hoʻopili hou ka hoʻololi kī haku i nā DEK. ʻAʻole loa ia e wehe a hoʻopāʻālua hou i palapala hōʻoia.

| Hoʻonohonoho | Manaʻo |
| --- | --- |
| `QUIRE_MASTER_KEY` | Ke kī haku o kēia manawa: 32 byte, base64. Hoʻopili ʻia kēlā me kēia ʻōlelo huna hou ma lalo ona |
| `QUIRE_MASTER_KEY_VERSION` | Lepili mana. `v1` inā ʻaʻole i hoʻonohonoho ʻia. Hoʻonui i kēlā me kēia hoʻololi kī |
| `QUIRE_MASTER_KEY_RETIRED` | Nā kī mua e mālama ana paha i nā ʻōlelo huna, ma ke ʻano `v1=<base64>,v0=<base64>`. Heluhelu wale ʻia, ʻaʻole kākau ʻia |

Heluhelu like ka papa pūnaewele, ka worker, a me ke kauoha `bun run kek:rotate` i kēia mau hoʻonohonoho ʻekolu. Pono e like nā waiwai a pau, i ʻole hiki ʻole i kekahi o lākou ke wehe i ka mea a kekahi i hoʻopaʻa ai.

Me ka ʻole o `QUIRE_MASTER_KEY`, mālama kēlā me kēia ʻōnaehana liʻiliʻi i ke kī i loaʻa mai `QUIRE_SECRET_KEY`. Hana kēia; hōʻike ka ʻaoʻao olakino ʻōnaehana iā ia he nāwaliwali, a hiki ke heluhelu ʻia ma hope o ka hoʻonoho ʻana i kī haku, ʻo ia ke ʻano e hoʻoneʻe ai ka hoʻololi mua i nā mea a pau mai ia kī. Hiki i ka mea hiki ke heluhelu i ke kaiapuni kaʻina ke wehe i kēlā me kēia palapala hōʻoia i mālama ʻia; no laila pono i ka hoʻouka hana ke kī haku ma ka hale ʻōlelo huna malu, ʻaʻole ma ka papaʻa like me ka waihona ʻikepili.

## Hoʻololi kī <!--quire:rotating-->

Hōʻike ʻia ka makahiki kī ma ka console paepae, Palekana, Kī haku, a ma ke ana `quire.secrets.master_key.age` (lā). Kākau ka papa manawa lā `platform.key_age` (03:41 UTC) i mea hoʻomanaʻo ma ke kaulahao hōʻoia paepae ke hiki ke kī i 365 lā, a i kēlā me kēia 30 lā ma hope a hoʻololi ʻia. Hoʻololi i ka wā hoʻomanaʻo a i kēlā me kēia manawa i hiki ai ke hōʻike ʻia ke kī.

1. Hana i kī hou: `openssl rand -base64 32`.
2. E hoʻonoho iā `QUIRE_MASTER_KEY` i ia kī, a iā `QUIRE_MASTER_KEY_VERSION` i ka lepili aʻe (`v2`). E hoʻoneʻe i ke kī kahiko i `QUIRE_MASTER_KEY_RETIRED` ma ke ʻano `v1=<old base64>`. E mālama i kope o lāua ma waho o kēia host.
3. Hoʻouka i ka papa pūnaewele a me ka worker me nā hoʻonohonoho hou. Hoʻopili ʻia nā ʻōlelo huna hou ma lalo o `env:QUIRE_MASTER_KEY:v2`; hiki nō ke wehe i nā mea kahiko ma o ke kī i hoʻomaha ʻia.
4. Noi i ka hoʻololi me ke kumu e mālama ʻia ma ka moʻolelo hōʻoia:
   - ma ka console: Palekana, Kī haku, Hoʻololi i ke kī haku; a i ʻole
   - ma kahi shell me ke kaiapuni like: `bun run kek:rotate request --reason "Annual rotation, ticket SEC-114"`.
5. Hoʻopili hou ka worker i hoʻokahi ʻāpana i kēlā minuke (papa manawa `platform.key_rotation` a ka scheduler), a hoʻomau ma hope o ka hoʻomaka hou ʻana. No ka hoʻopau ʻana i hoʻokahi noho: `bun run kek:rotate run`. Nānā me `bun run kek:rotate status`.
6. Ke hōʻike ka moʻolelo ua pau ka hoʻololi me **ʻaʻohe mea i koe a ʻaʻohe hāʻule**, e wehe i ke kī i hoʻomaha ʻia mai `QUIRE_MASTER_KEY_RETIRED` a hoʻouka hou. E mālama nō a laila: ua hoʻopili ʻia kekahi waiwai hiki ʻole ke hoʻoneʻe ʻia ma lalo o ke kī kahiko.

### Nā mea a ka hana e hele ai <!--quire:what-the-job-walks-->

ʻO kēlā me kēia waihona e paʻa ana i DEK i hoʻopili ʻia: nā mea i loko o `SEALED_STORES` (`apps/worker/src/key-rotation.ts`). Hele ʻia nā waihona ʻikepili hoʻomalu ma ka waihona hoʻomalu; hele ʻia nā waihona hui hoʻokahi hui i kēlā manawa ma lalo o ka palekana pae-lālani, ma ka waihona e waiho ai kēlā hui. No laila, hoʻololi ʻia kahi tenant i hoʻopaʻa ʻia i waihona hoʻolaʻa ma laila. Hāʻule kekahi hoʻāʻo ke loaʻa i ke kūkulu ʻikepili kolamu kī hoʻopili hou ʻaʻole i kapa ʻia ma ka papa inoa; hāʻule kekahi ke hoʻokaʻawale ka loiloi palapala hōʻoia i kolamu paʻa ʻole ma ka papa inoa.

### Ka moʻolelo <!--quire:the-record-->

- `ops.key_rotation`: hoʻokahi lālani no kēlā me kēia hoʻololi, me ke kumu, ka mea noi, ke kūlana, a me nā huina (i hoʻopili hou ʻia, paʻa hou, i koe, hāʻule).
- `ops.key_rotation_progress`: hoʻokahi lālani no kēlā me kēia waihona a laulā i nānā ʻia, me nā kuhikuhi kī hiki ʻole ke heluhelu a me ka helu waiwai ma lalo o kēlā me kēia. Kāpae ʻia kēia mau mea ke hoʻomau hou ʻia ka hoʻololi.
- Kaulahao hōʻoia paepae: `platform/key_rotation_request` (me ke kumu), hoʻokahi `platform/key_rotation_store` no kēlā me kēia waihona me kona mau helu, a me `platform/key_rotation_complete` a i ʻole `platform/key_rotation_fail`; `platform/key_age_reminder` no ka hoʻomanaʻo.
- Nā ana: `quire.secrets.master_key.age` a me `quire.secrets.rewrap.outstanding` (nā waiwai hiki ʻole i ka hoʻololi hope ke neʻe).

### Ke koe nā waiwai <!--quire:when-values-are-unresolved-->

Hoʻopili ʻia kekahi waiwai i koe ma lalo o kuhikuhi kī i loaʻa ʻole i kēia hoʻouka ʻana, a i ʻole ʻaʻohe ona ʻano i hoʻohiki ʻia e kona kolamu. Hōʻike ka moʻolelo holomua i ke kuhikuhi (e laʻa me `env:QUIRE_MASTER_KEY:v0 (unreadable)`). Hoʻihoʻi i ia kī i `QUIRE_MASTER_KEY_RETIRED` a holo i kekahi hoʻololi; a i ʻole, inā ua nalowale loa ke kī, e hoʻokomo hou ka luna hoʻomalu hui i ka palapala hōʻoia: hoʻopaʻa ʻia ia ma lalo o ke kī o kēia manawa. Hōʻike nā hoʻololi hāʻule i ko lākou hewa ma ka moʻolelo; hoʻoponopono i ke kumu a noi hou.

## Nā kī pūlima <!--quire:signing-keys-->

He ʻokoʻa kēia mau mea mai ke kī haku: pūlima kēlā me kēia hui i kona mau token OpenID Connect a me nā memo LTI me kī RSA ponoʻī, i paʻi ʻia ma `/.well-known/jwks.json`. ʻAʻohe hana a ka mea hoʻokele e pono ai. Paʻi ka papa manawa hola `platform.signing_keys` i kī pani i ʻehiku lā ma mua o ka hala ʻana o nā lā he kanaiwa o ke kī o kēia manawa; hoʻokahi pule ma hope, hoʻomaka ke kī pani e pūlima a komo ke kī kahiko i ka wā hoʻomaha; ma hope o 90 lā, holoi ʻia ke kī kahiko mai ka pūʻulu kī. He komo `platform/signing_key_advance` kēlā me kēia ʻanuʻu ma ke kaulahao hōʻoia paepae.

No ka pani mua ʻana i kī hui, no ka laʻana ma hope o ka hōʻike ʻia ʻana:

- ma ka console: Palekana, Kī haku, Paʻi i kī pūlima hou (pono `platform/keys_manage`); a i ʻole
- ma kahi shell me ke kaiapuni worker: `bun run kek:rotate signing-keys rotate
  --tenant <slug or id> --reason "Key exposed, INC-3310"`. Papa inoa ʻo `bun run kek:rotate
  signing-keys status` i nā kī hui a pau ma ko lākou pae.

Paʻi koke ʻia ke kī hou a hoʻomaka e pūlima ma hope o nā lā ʻehiku, i ka wā hoʻomaha o ke kī o kēia manawa. He koho noʻonoʻo ka pule: mālama nā ʻaoʻao hilinaʻi i ko lākou cache pūʻulu kī, a hāʻule nā lako a pau i ka manawa hoʻokahi ke pōkole ka uhi pū. Noho ke kī hoʻomaha ma ka pūʻulu kī no 90 lā hou aʻe i hōʻoia mau ʻia ai nā token i pūlima ʻia ma mua; inā pono e hoʻopau koke i ka hilinaʻi ma muli o ka hōʻike ʻia ʻana, he hoʻololi ka holoi ʻana i kona lālani ma o ke komo waihona ʻikepili ponoʻī o ka mea hoʻokele, ma lalo o moʻolelo hoʻololi (heluhelu wale nō ke komo ulia pōpilikia), a laila hāʻule ka hōʻoia o nā token i pūlima ʻia me ia. ʻO `platform/signing_key_rotate` ka hoʻololi koi ʻia ma ke kaulahao hōʻoia, me ke kumu. Pono ka worker i nā hoʻonohonoho `QUIRE_MASTER_KEY` like me ka papa pūnaewele e hoʻopili ai i ke kī hou; hoʻopili hou ke kauoha kī haku `bun run kek:rotate` i nā kī pūlima me nā mea ʻē aʻe (`oauth_signing_key` aia ma `SEALED_STORES`).

## Ke komo hana ulia pōpilikia <!--quire:break-glass-production-access-->

ʻAʻohe mea e paʻa ana i ke komo mau i ka hana. Ke hiki ʻole ke kali, hāʻawi kekahi mea nona i ʻae ulia pōpilikia: Console paepae, Palekana, Ke komo ulia pōpilikia.

- Loaʻa i ka ʻae ka laulā (hoʻokahi hui a i ʻole ka papa inoa paepae), kumu o 20 huapalapala a ʻoi e kapa ana i ka pilikia a i ʻole ticket, a me wā o 5 a 240 minuke. Pau ʻakomi ia: nānā ʻia me ka uaki i kēlā me kēia ʻōlelo.
- Hiki ke hāʻawi ʻia i ka mea nona nāna e hāʻawi, a i ʻole i mea nona ʻē aʻe (ʻano kānaka ʻelua). ʻO ka mea i hāʻawi ʻia ai wale nō ka mea hiki ke hoʻohana. Pono ʻo `platform/break_glass_issue` no ka hāʻawi a ʻo `platform/break_glass_use` no ka hoʻohana ʻana; no nā mea nona wale nō lāua ma ke ʻano paʻamau.
- Holo nā ʻōlelo ma o ka puka komo, ʻaʻole ma ke komo waihona ʻikepili: heluhelu wale nō, hoʻokahi i ka manawa, kaupalena ʻia i ka hui a i ʻole ka papa inoa hoʻomalu, palena manawa ʻelima kekona a ʻaʻole ʻoi aku ma mua o 500 lālani. Hōʻike ʻia ka nui o nā waiwai binary.
- Hoʻopaʻa ke kaulahao hōʻoia paepae i ka hāʻawi (me ke kumu), ka hoʻopau, kēlā me kēia ʻōlelo ma mua o ka holo ʻana (`platform/break_glass_statement`, me ka hopena `denied` no nā mea i hōʻole ʻia), a me kēlā me kēia hopena (`platform/break_glass_result`). Mālama ʻo `ops.break_glass_statement` i nā ID komo hōʻoia, i hoʻohui ʻia ai ka moʻolelo hāʻawi i kona mau komo hōʻoia.
- ʻAʻole hāʻawi ʻia nā kākau. Hoʻohana kekahi hoʻololi hiki ʻole ke kali i ka hoʻokuʻu i ke komo waihona ʻikepili ponoʻī o ka mea hoʻokele ma lalo o kāna moʻolelo hoʻololi, ma waho o kēia huahana; pono ka moʻolelo e haʻi i ka kuhikuhi pilikia i hoʻohana ʻia ma ʻaneʻi.

No ke aha e hāʻawi ʻole ai i palapala hōʻoia waihona ʻikepili: ola ka ʻeʻe Postgres ma hope o ke kau i noi ai iā ia, kāpae i ka palekana pae-lālani a ka polokalamu e hilinaʻi ai, ʻaʻole hiki ke kākau i ke kaulahao hōʻoia o kēia huahana; no laila, hōʻoia ʻia kāna mau ʻōlelo a hiki wale i ka mea i hoʻouna ʻia ma ka moʻolelo kikowaena. Hoʻolilo ka puka komo i ke kaulahao hōʻoia i waiwai o ke komo ponoʻī, ʻaʻole i hana maʻamau e puni ana iā ia.

No ka pane ʻana i noi loiloi: papa inoa i nā ʻae i ka wā (Ke komo ulia pōpilikia), wehe i ka moʻolelo o kekahi ʻae no kāna mau ʻōlelo a me nā ID komo hōʻoia, a heluhelu i kēlā mau komo ma ke kaulahao hōʻoia paepae (`bun run audit:verify --platform` e hōʻoia ana i ka paʻa o ke kaulahao).

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