NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Publikovaný config/sentinel.php dokumentuje každý kľúč a bežné nastavenia sa riadia cez env, takže ho publikujete len zriedka. Materiál kľúča predvoleného kruhu napríklad pochádza celý z prostredia:

SENTINEL_KEY_ID=default-20261002-k3f9qa
SENTINEL_ALGORITHM=hmac-sha256
SENTINEL_KEY="base64:…"
SENTINEL_PUBLIC_KEY="base64:…"                  # asymmetric keys; alone = verify-only
SENTINEL_PREVIOUS_KEYS="default-20250901-a1b2c3|hmac-sha256|base64:…"   # verify-only, comma-separated

Všetky kľúče

KľúčPredvolenéEnvÚčel
context''SENTINEL_CONTEXTDoménový oddeľovač aplikácie viazaný do každého MAC (UTF-8, ≤ 255 bajtov). Nastavte ho raz: zmena zneplatní všetky pečate (znovu ich zapečatíte s --acknowledge) a natrvalo aj všetky skoršie záznamy denníka a kontrolné body — nový kontext znamená nový denník.
key_typebigintSENTINEL_KEY_TYPETyp id zapečatených modelov v morph stĺpcoch: bigint, uuid alebo ulid (nastavte pred migráciou; iná hodnota migráciu zastaví výnimkou).
actor_key_typebigintSENTINEL_ACTOR_KEY_TYPETyp id aktérov, vlastníkov kľúčov a subjektov nonce — rovnaké hodnoty aj pravidlo.
models[]—Modely, ktoré sentinel:verify bez argumentov skenuje ako prvé; každá trieda s pečaťami sa nájde po nich.
database.connectionnullSENTINEL_DB_CONNECTIONPripojenie tabuliek sentinel_keys, sentinel_idempotency_keys a sentinel_nonces.
keys.default_ringdefaultSENTINEL_DEFAULT_RINGKruh pre pečate, ktoré žiadny neuvádzajú. Nikdy nie kruh, ktorý používajú podpisy HTTP správ (odmietne sa).
keys.revoked''SENTINEL_REVOKED_KEYSOdvolané kľúče v tvare ring:kid,… — majú prednosť pred každým driverom a prežijú aj obnovený riadok kľúča.
keys.rings.default.driverconfigSENTINEL_KEY_DRIVERconfig, database, chain alebo vlastný driver.
keys.rings.default.algorithmsvšetkých šesť—Allowlist algoritmov kruhu.
keys.rings.default.key_idnullSENTINEL_KEY_IDDriver config: id aktuálneho kľúča.
keys.rings.default.algorithmhmac-sha256SENTINEL_ALGORITHMDriver config: algoritmus aktuálneho kľúča.
keys.rings.default.keynullSENTINEL_KEYDriver config: tajomstvo alebo súkromný kľúč v tvare base64:.
keys.rings.default.public_keynullSENTINEL_PUBLIC_KEYDriver config: verejný kľúč base64: (uzly len na overovanie).
keys.rings.default.previous''SENTINEL_PREVIOUS_KEYSDriver config: kľúče len na overovanie, kid|algorithm|base64:… oddelené čiarkou.
keys.rings.default.drivers['config', 'database']—Poradie driverov pre chain.
keys.rings.http.driverdatabaseSENTINEL_HTTP_KEY_DRIVERDriver kruhu pre RFC 9421.
keys.rings.http.algorithmsštyri algoritmy RFC 9421—Allowlist kruhu http.
keys.rings.http.key_id / algorithm / key / public_key / previous / driversako vyššieSENTINEL_HTTP_KEY_ID, SENTINEL_HTTP_ALGORITHM, SENTINEL_HTTP_KEY, SENTINEL_HTTP_PUBLIC_KEY, SENTINEL_HTTP_KEYSKeď kruh http používa driver config.
sealing.autotrueSENTINEL_AUTO_SEALPečatiť pri Eloquent zápisoch (na uzloch len na overovanie vypnite).
sealing.on_tampered_writerefuseSENTINEL_ON_TAMPERED_WRITEČo urobí Eloquent zápis s modelom, ktorý nie je neporušený: refuse, reseal alebo skip.
sealing.allow_suspensionfalseSENTINEL_ALLOW_SUSPENSIONPovoliť Sentinel::withoutSealing(). Predvolene vypnuté, kým ho výslovne nezapnete: nenastavená hodnota (chýbajúca, null alebo prázdna SENTINEL_ALLOW_SUSPENSION=) ho odmietne.
sealing.field_tagstrueSENTINEL_FIELD_TAGSKľúčované značky polí, ktoré pomenujú zmenené atribúty (kľúče HMAC).
sealing.reason_max_length1000—Dĺžka dôvodu potvrdenia, odpečatenia a baseline (1–10000).
sealing.transaction_attempts3—Opakovania vlastných transakcií Sentinelu, 1–10 (nikdy nie save() aplikácie).
verification.check_ledgertrueSENTINEL_VERIFY_LEDGERPorovnávať pečate s denníkom (odhalí znovu podstrčené pečate).
verification.outdated_is_intacttrueSENTINEL_OUTDATED_IS_INTACTZmenená definícia nad neporušenými dátami sa počíta ako neporušená.
verification.log_channelnullSENTINEL_LOG_CHANNELKam sa logujú zistenia (null alebo prázdna hodnota = predvolený kanál; hodnota, ktorá nie je reťazcom, vyhodí výnimku).
verification.retrieve_reactionthrowSENTINEL_RETRIEVE_REACTIONPredvolená reakcia overenia pri načítaní: throw alebo report (obe zistenie nahlásia; throw navyše model nenačíta).
verification.retrieve_checks_ledgerfalseSENTINEL_RETRIEVE_CHECKS_LEDGERKontrola denníka pri načítaní (o jeden dopyt na model viac).
acknowledgement.abilitynullSENTINEL_ACKNOWLEDGE_ABILITYGate ability overená pred potvrdením zmeny (null alebo prázdna hodnota = žiadna; hodnota, ktorá nie je reťazcom, vyhodí výnimku).
ledger.enabledtrueSENTINEL_LEDGERZapisovať záznamy denníka (vypnutím stratíte detekciu podstrčenia a návratu).
ledger.ringdefaultSENTINEL_LEDGER_RINGKruh, ktorého aktuálny kľúč podpisuje kontrolné body; nenakonfigurovaný kruh alebo kruh podpisov HTTP sa odmietne.
ledger.connections[null]—Pripojenia s pečaťami a denníkom; každý sken, počet a kontrola pokryje každé z nich — raz.
ledger.batch_size1000—Záznamov na jednu transakciu kontrolného bodu (1–100000).
ledger.backlog_warning_seconds600—Vek záznamov bez kontrolného bodu, od ktorého sa hlási backlog (60–86400).
ledger.anchors''SENTINEL_ANCHORSZoznam kotiev cache, filesystem, log alebo vlastných, oddelený čiarkou.
ledger.anchor_drivers.cache.storenullSENTINEL_ANCHOR_CACHE_STORECache store kotvy cache (nie databáza aplikácie); null alebo prázdna hodnota = predvolený store.
ledger.anchor_drivers.cache.keysentinel:ledger:anchor—Prefix kľúča v cache; prázdna hodnota = predvolená, hodnota, ktorá nie je reťazcom, vyhodí výnimku.
ledger.anchor_drivers.filesystem.disklocalSENTINEL_ANCHOR_DISKDisk kotvy filesystem (odporúča sa object lock); prázdna hodnota = predvolený disk, hodnota, ktorá nie je reťazcom, vyhodí výnimku.
ledger.anchor_drivers.filesystem.pathsentinel/anchorsSENTINEL_ANCHOR_PATHAdresár na tomto disku; prázdna hodnota = predvolený, hodnota, ktorá nie je reťazcom, vyhodí výnimku.
ledger.anchor_drivers.log.channelnullSENTINEL_ANCHOR_LOG_CHANNELLog kanál kotvy log, ktorá sa len zapisuje (null alebo prázdna hodnota = predvolený kanál; hodnota, ktorá nie je reťazcom, vyhodí výnimku).
middleware.verified_status409—Status sentinel.verified pri neúspešnej kontrole (400–599).
middleware.verified_reactionabortSENTINEL_VERIFIED_REACTIONabort, alebo len nahlásiť a pokračovať.
idempotency.storedatabaseSENTINEL_IDEMPOTENCY_STOREdatabase, cache alebo naviazaný vlastný store.
idempotency.cache_storenullSENTINEL_IDEMPOTENCY_CACHE_STORECache store so zámkami pre store cache.
idempotency.headerIdempotency-Key—Hlavička požiadavky.
idempotency.replay_headerIdempotent-Replayed—Hlavička na prehraných odpovediach.
idempotency.methods['POST', 'PATCH']—Metódy, na ktoré sa middleware uplatní.
idempotency.ttl86400SENTINEL_IDEMPOTENCY_TTLSekundy platnosti kľúča od jeho prvého výskytu (60–2592000).
idempotency.lock_seconds60—Lease rozpracovanej požiadavky (1–3600).
idempotency.min_length / max_length16 / 255—Povolená dĺžka kľúča.
idempotency.accept_unquotedtrueSENTINEL_IDEMPOTENCY_ACCEPT_UNQUOTEDPrijímať kľúče bez úvodzoviek.
idempotency.store_client_errorstrue—Ukladať a prehrávať odpovede 4xx.
idempotency.store_server_errorsfalse—Ukladať odpovede 5xx (predvolene sa kľúč uvoľní).
idempotency.transactionalfalseSENTINEL_IDEMPOTENCY_TRANSACTIONALHandler a záznam v jednej transakcii. Vyžaduje idempotency.store = database — inak sa odmietne.
idempotency.encrypttrueSENTINEL_IDEMPOTENCY_ENCRYPTŠifrovať uložené odpovede.
idempotency.max_response_bytes1048576—Väčšie odpovede sa nedajú prehrať.
idempotency.replayed_headerscontent-type, content-language, location, etag, last-modified, cache-control—Uložené a prehrávané hlavičky (set-cookie nikdy).
nonces.storedatabaseSENTINEL_NONCE_STOREdatabase, cache alebo naviazaný vlastný store.
nonces.cache_storenullSENTINEL_NONCE_CACHE_STORECache store so zámkami.
nonces.ttl900—Sekundy platnosti nonce (1–2592000).
nonces.length43—Dĺžka nonce v znakoch base64url, 32–128 (43 ≈ 256 bitov).
problems.type_basenullSENTINEL_PROBLEM_TYPE_BASERFC 9457 type = base + #code (null: vynechá sa).
signatures.default_profiledefault—Profil sentinel.signed bez parametra.
signatures.profiles.<name>.ringhttp—Kruh, v ktorom sa hľadajú id kľúčov profilu; kruh, ktorý nie je názvom, vyhodí výnimku.
signatures.profiles.<name>.labelnull—Label podpisu na overenie (null: jediný, alebo ten s tagom profilu).
signatures.profiles.<name>.tagnull—Povinný parameter tag.
signatures.profiles.<name>.components@method, @authority, @path—Komponenty, ktoré musia byť pokryté.
signatures.profiles.<name>.require_querytrue—Pokryť @query, keď má požiadavka query.
signatures.profiles.<name>.require_content_digesttrue—Pokryť content-digest, keď má požiadavka telo.
signatures.profiles.<name>.require_noncetrue—Vyžadovať (a deduplikovať) nonce.
signatures.profiles.<name>.max_age300—Sekundy, počas ktorých sa podpis prijíma po created (1–86400).
signatures.profiles.<name>.clock_skew30—Povolený rozdiel hodín v sekundách (0–3600).
signatures.profiles.<name>.algorithmsštyri algoritmy RFC 9421—Povolené algoritmy (povinné); prázdny zoznam je chyba konfigurácie (fail closed).
signatures.profiles.<name>.accept_signing_keysfalse—Prijať kľúč, ktorým aplikácia sama podpisuje. Vypnuté: požiadavka podpísaná samotnou aplikáciou nikdy neprejde ako partnerova.
signatures.outbound.ringhttp—Kruh kľúčov pre Http::withSignature(); kruh, ktorý nie je názvom, vyhodí výnimku.
signatures.outbound.labelsig1—Label odchádzajúcich podpisov.
signatures.outbound.components@method, @authority, @path, @query, content-digest, content-type—Podpisované komponenty (chýbajúce sa vynechajú).
signatures.outbound.digestsha-256—Algoritmus Content-Digest: sha-256 alebo sha-512.
signatures.outbound.expires_innull—Sekundy do parametra expires, 1–86400 (null alebo prázdna hodnota: žiadny).
signatures.outbound.tagnull—Parameter tag.
signatures.outbound.include_algfalse—Posielať parameter alg.
signatures.advertisetrueSENTINEL_ADVERTISE_SIGNATUREHlavička Accept-Signature na odpovediach 401.
schedule.enabledtrueSENTINEL_SCHEDULEZaregistrovať údržbové úlohy v plánovači (vypnuté: naplánujete si príkazy sami).
schedule.checkpointeveryMinuteSENTINEL_SCHEDULE_CHECKPOINTsentinel:checkpoint (len so zapnutým denníkom) — okno, v ktorom návrat ostane nepovšimnutý. Prázdna hodnota sa považuje za nenastavenú → everyMinute.
schedule.verifydailySENTINEL_SCHEDULE_VERIFYsentinel:verify --allow-empty --ledger; malým tabuľkám vyhovuje hourly.
schedule.prunedailySENTINEL_SCHEDULE_PRUNEsentinel:prune.

Frekvencie sú everyMinute, everyTwoMinutes, everyFiveMinutes, everyTenMinutes, everyFifteenMinutes, everyThirtyMinutes, hourly, everyTwoHours, everyThreeHours, everyFourHours, everySixHours, daily a weekly — alebo off na vypnutie úlohy (prázdna hodnota sa považuje za nenastavenú, takže úloha si ponechá predvolenú frekvenciu). Každá úloha beží bez prekrývania a na jednom serveri.

Názvy kruhov, profilov, kotiev a úložísk zodpovedajú [a-z][a-z0-9_-]{0,63}. Kruhy pridávate v keys.rings.<ring> (driver a algorithms sú povinné; pre kruh s driverom config vypíše sentinel:key:generate --ring=<ring> riadky SENTINEL_<RING>_* — načítajte ich v sekcii kruhu cez env()) a politiky prichádzajúcich podpisov v signatures.profiles.<name>.

Ako sa hodnoty čítajú

Každé nastavenie sa overí pri prvom použití a neplatné vyhodí InvalidSentinelConfigurationException s názvom kľúča — nikdy sa potichu nepoužije predvolená hodnota. Nenastavený kľúč — chýbajúci, null alebo prázdny ('' či len medzery, čo dá riadok SENTINEL_LEDGER= v .env) — dostane predvolenú hodnotu z tabuľky vyššie. Booleany prijímajú true/false, on/off, yes/no, 1/0 (bez ohľadu na veľkosť písmen); čokoľvek iné vyhodí výnimku, ktorej správa uvedie kľúč aj prijatú hodnotu — SENTINEL_ALLOW_SUSPENSION=disabled je chyba, nikdy nie „povolené“. Rovnako sa správa hodnota mimo rozsahu, neznámy prípad enumu, chybne zapísaný zoznam či názov, ktorý nie je reťazcom (log kanál, ability, store, disk kotvy, kruh podpisov); prázdny voliteľný názov sa považuje za nenastavený. Prázdna frekvencia schedule.* si ponechá predvolenú hodnotu — úlohu vypne len off (alebo null).

php artisan about ukáže sekciu Sentinel — kruhy, driver, prítomnosť podpisového kľúča, prepínače, kotvy, úložiská, zapečatené modely a plán, nikdy nie materiál kľúčov — a sentinel:check nahlási všetky neplatné nastavenia naraz.

Preklady

Balík obsahuje angličtinu a slovenčinu; publikujte ich tagom sentinel-translations, ak chcete texty upraviť alebo pridať jazyk:

KľúčPoužíva
sentinel::messages.tamperedVšeobecná správa pri zlyhaní sentinel.verified.
sentinel::messages.problems.<code>.title / .detailOdpovede problem details podľa RFC 9457 — kódy idempotency_key_missing, invalid_idempotency_key, idempotency_key_reused, idempotency_request_in_progress, idempotent_response_unavailable, nonce_rejected, signature_rejected.
sentinel::validation.intact_sealPravidlo IntactSeal (:attribute).
sentinel::statuses.<status>Názvy stavov vo výstupe sentinel:verify, jeden pre každú hodnotu VerificationStatus.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.