diff --git a/docs/compatibility.md b/docs/compatibility.md index fa765e6f3a8..ea4896e7e9d 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -342,6 +342,8 @@ and image digests used for each completed check. The selected Server is the native 3.x Server. PHP Server 2.x is frozen at 2.11.8 and receives no further releases; existing PHP installations can move to native with `upgrade-takeover` by following the [native takeover runbook](%%artifact.serverTakeoverRunbookUrl%%). Takeover is qualified on the published 3.0.4 image within the runbook's stated scope; it is one-way and backup-first. +PHP Server 2.11.8 remains unpatched for the November Laravel advisories. Existing pinned deployments must follow the [conditional exposure and retirement actions](./polyglot/server.md#retired-php-server-security); the historical takeover evidence retains its original limits. + The Helm chart's recorded `appVersion` is `%%artifact.helmChartAppVersion%%`, matching the selected Server, and the chart runs the native Server by default. Its [published release receipt](%%artifact.helmChartQualificationUrl%%) records the chart release run, OCI/package digests, source identity, and a kind install in that run; it is not a production cluster qualification. See [chart selection and upgrades](./deployment.md#helm-chart-selection) before installing or overriding the image. PyPI renders the Python distribution version as diff --git a/docs/deployment.md b/docs/deployment.md index 45b3e1d6715..ae1b0e72cd1 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -38,6 +38,8 @@ Server 2.x is frozen at 2.11.8 and receives no further releases. :::note Existing PHP Server 2.x installations +PHP Server 2.11.8 is retired and unpatched for the November Laravel advisories. For pinned PHP deployments, follow the [conditional exposure and ingress/signed-link actions](./polyglot/server.md#retired-php-server-security) before using the legacy recipes below. + The PHP 2.x stack (server, queue worker, scheduler, bootstrap job and Redis) remains available. At the 2.11.8 release tag it is [`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml); diff --git a/docs/polyglot/server-config-reference.md b/docs/polyglot/server-config-reference.md index 54bd3947e7f..c4937f20a08 100644 --- a/docs/polyglot/server-config-reference.md +++ b/docs/polyglot/server-config-reference.md @@ -23,6 +23,8 @@ templates, reviewing production configuration, or migrating older is the native 3.x Server; [Native Server 3.x](#native-server-3x) lists which settings it honors, ignores or refuses. PHP Server 2.x is frozen at 2.11.8. +PHP Server 2.11.8 remains unpatched for the November Laravel advisories. Follow the [conditional exposure and ingress/signed-link actions](./server.md#retired-php-server-security) for an existing pinned deployment; changing these settings does not patch the image. + The PHP 2.x server also consumes ordinary Laravel runtime settings such as `DB_*`, `REDIS_*`, `QUEUE_CONNECTION`, and `CACHE_STORE`. Those runtime infrastructure variables are listed separately because they are deployment diff --git a/docs/polyglot/server.md b/docs/polyglot/server.md index 9810a3c3c16..9edfe20110f 100644 --- a/docs/polyglot/server.md +++ b/docs/polyglot/server.md @@ -44,6 +44,24 @@ Configuration below marked as PHP 2.x does not apply to the native Server. ::: +## Retired PHP Server security {#retired-php-server-security} + +:::warning Retired and unpatched + +PHP Server 2.11.8 is retired and remains unpatched for the November Laravel advisories. Its published image contains Laravel 13.34.0. Updating a source checkout's Composer dependencies does not patch that installed image. Read the [13 November 2026 security notice](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md) for the reviewed conditions. + +Laravel registers signed `GET /storage/{path}` and `PUT /storage/{path}` routes. The shipped application does not issue their temporary signed URLs or call `Concurrency::run()`. The dependency finding does not demonstrate an exploitable default Server journey. Storage-route exposure depends on obtaining or issuing a valid temporary signed URL and the advisory's request-parsing conditions. Review custom routes and extensions separately. + +Stop exposing the retired PHP service and plan migration to native. Until retirement: + +- Block all `/storage/*` requests at ingress, including GET and PUT, and verify the rule on the actual endpoint. These routes are separate from authenticated `/api/external-payloads/v1` transport. +- Stop issuing and reusing local-disk temporary download or upload URLs. Review extensions that generate signed routes or call Laravel Concurrency. +- Preserve a restorable database and external-payload-storage backup. Stop every PHP role during a migration that writes the database. + +These controls reduce the identified storage-route exposure; they do not install the fixes or establish that custom extensions are safe. Native uses a Rust runtime outside this Laravel dependency finding. Follow the [backup-first takeover runbook](%%artifact.serverTakeoverRunbookUrl%%) only within its exact version/backend/state limits and rehearse on a restored copy. Native startup is not a PHP database conversion, and the latest native release does not newly qualify takeover. Subsequent native upgrades retain their [explicit schema and restore requirements](../deployment.md#native-schema-upgrade-3-10). + +::: + ## Is this only for PHP teams? No. PHP, Python, and Rust are first-party SDK surfaces. A Python- or Rust-only diff --git a/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md index e35f50b0d9a..383f38a5b3f 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md @@ -245,6 +245,8 @@ Die Tabelle zeigt die für diese Dokumentation geprüfte stabile Kombination aus Der ausgewählte Server ist der native Server 3.x. Der PHP-Server 2.x ist bei 2.11.8 eingefroren und erhält keine weiteren Veröffentlichungen; bestehende PHP-Installationen können mit `upgrade-takeover` auf den nativen Server wechseln; folgen Sie dazu dem [Runbook zur nativen Übernahme](%%artifact.serverTakeoverRunbookUrl%%). Die Übernahme ist auf dem veröffentlichten 3.0.4-Image innerhalb des im Runbook angegebenen Umfangs qualifiziert; sie ist einseitig und erfordert vorab eine Sicherung. +PHP Server 2.11.8 bleibt für die Laravel-Sicherheitshinweise vom November ungepatcht. Bestehende fest gepinnte Deployments müssen die [Bedingungen und Stilllegungsmaßnahmen](./polyglot/server.md#retired-php-server-security) beachten; die historischen Takeover-Nachweise behalten ihre ursprünglichen Grenzen. + Die aufgezeichnete `appVersion` des Helm-Charts ist `%%artifact.helmChartAppVersion%%` und entspricht dem ausgewählten Server; das Chart betreibt standardmäßig den nativen Server. Sein [veröffentlichter Release-Bericht](%%artifact.helmChartQualificationUrl%%) dokumentiert den Release-Lauf des Charts, OCI-/Paket-Digests, die Quellidentität und eine kind-Installation in diesem Lauf; er ist keine Qualifizierung für einen Produktionscluster. Lesen Sie vor der Installation oder einem Image-Override die [Chart-Auswahl und Upgrade-Hinweise](./deployment.md#helm-chart-selection). diff --git a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md index c4fe271f8de..d68bb7819b7 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md @@ -21,6 +21,8 @@ Er läuft als ein Prozess pro Knoten: Er erstellt und prüft sein Datenbankschem :::note Bestehende Installationen des PHP-Servers 2.x +PHP Server 2.11.8 ist eingestellt und für die Laravel-Sicherheitshinweise vom November ungepatcht. Befolgen Sie bei fest gepinnten PHP-Deployments die [Bedingungen und Ingress-/Signatur-Link-Maßnahmen](./polyglot/server.md#retired-php-server-security), bevor Sie die alten Rezepte unten verwenden. + Der PHP-2.x-Stack (Server, Queue-Worker, Scheduler, Bootstrap-Job und Redis) bleibt verfügbar. Am Veröffentlichungstag 2.11.8 ist er [`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml); diff --git a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index cb704a1bada..32225491bf3 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -18,6 +18,8 @@ keywords: Diese Seite beschreibt den Vertrag der Umgebungsvariablen `DW_*` für Betreiber des Durable Workflow Server-Images. Nutzen Sie sie für Bereitstellungsvorlagen, die Prüfung der Produktionskonfiguration und die Umstellung älterer Namen `WORKFLOW_*` / `ACTIVITY_*` auf den Server-v2-Vertrag. Der aktuelle Server ist der native 3.x-Server; [Nativer Server 3.x](#native-server-3x) führt auf, welche Einstellungen er berücksichtigt, ignoriert oder ablehnt. PHP Server 2.x ist bei 2.11.8 eingefroren. +PHP Server 2.11.8 bleibt für die Laravel-Sicherheitshinweise vom November ungepatcht. Befolgen Sie für ein bestehendes fest gepinntes Deployment die [Bedingungen und Ingress-/Signatur-Link-Maßnahmen](./server.md#retired-php-server-security); Änderungen dieser Einstellungen patchen das Image nicht. + Der PHP-2.x-Server verwendet außerdem gewöhnliche Laravel-Einstellungen wie `DB_*`, `REDIS_*`, `QUEUE_CONNECTION` und `CACHE_STORE`. Diese Infrastrukturvariablen sind gesondert aufgeführt, weil sie die Bereitstellung konfigurieren und keine Durable Workflow API-Einstellungen darstellen. ## Nativer Server 3.x {#native-server-3x} diff --git a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md index 569ab99072a..c407288c0e9 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -42,6 +42,24 @@ Als PHP 2.x gekennzeichnete Konfiguration unten gilt nicht für den nativen Serv ::: +## Sicherheit des eingestellten PHP-Servers {#retired-php-server-security} + +:::warning Eingestellt und ungepatcht + +PHP Server 2.11.8 ist eingestellt und bleibt für die Laravel-Sicherheitshinweise vom November ungepatcht. Das veröffentlichte Image enthält Laravel 13.34.0. Aktualisierte Composer-Abhängigkeiten in einem Quellcode-Checkout patchen dieses installierte Image nicht. Die geprüften Bedingungen stehen im [Sicherheitshinweis vom 13. November 2026](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md). + +Laravel registriert signierte Routen `GET /storage/{path}` und `PUT /storage/{path}`. Die ausgelieferte Anwendung stellt deren temporäre signierte URLs nicht aus und ruft `Concurrency::run()` nicht auf. Der Abhängigkeitsbefund weist keinen ausnutzbaren Standardablauf des Servers nach. Die Exposition der Speicherrouten hängt vom Erhalt oder Ausstellen einer gültigen temporären signierten URL und den Request-Parsing-Bedingungen des Hinweises ab. Prüfen Sie eigene Routen und Erweiterungen gesondert. + +Beenden Sie die Erreichbarkeit des eingestellten PHP-Dienstes und planen Sie die Migration zu native. Bis zur Stilllegung: + +- Blockieren Sie am Ingress alle `/storage/*`-Anfragen einschließlich GET und PUT und prüfen Sie die Regel am tatsächlichen Endpunkt. Diese Routen sind vom authentifizierten Transport `/api/external-payloads/v1` getrennt. +- Stellen Sie keine temporären Download- oder Upload-URLs für den lokalen Datenträger mehr aus und verwenden Sie bestehende nicht weiter. Prüfen Sie Erweiterungen, die signierte Routen erzeugen oder Laravel Concurrency aufrufen. +- Bewahren Sie eine wiederherstellbare Sicherung der Datenbank und des externen Payload-Speichers auf. Stoppen Sie bei einer Migration mit Datenbankschreibzugriff jede PHP-Rolle. + +Diese Maßnahmen verringern die festgestellte Exposition der Speicherrouten; sie installieren keine Fehlerbehebung und bestätigen nicht die Sicherheit eigener Erweiterungen. Native verwendet eine Rust-Runtime außerhalb dieses Laravel-Abhängigkeitsbefunds. Befolgen Sie das [Backup-first-Takeover-Runbook](%%artifact.serverTakeoverRunbookUrl%%) nur innerhalb seiner genauen Versions-, Backend- und Zustandsgrenzen und proben Sie mit einer wiederhergestellten Kopie. Der native Start konvertiert keine PHP-Datenbank, und das neueste native Release qualifiziert Takeover nicht neu. Für spätere native Upgrades gelten weiterhin die [expliziten Schema- und Restore-Anforderungen](../deployment.md#native-schema-upgrade-3-10). + +::: + ## Ist dies nur für PHP-Teams? {#is-this-only-for-php-teams} Nein. PHP, Python und Rust haben offizielle SDKs. Ein reines Python- oder Rust-Team kann Server als Infrastruktur betreiben, Workflows und Aktivitäten mit seinem nativen SDK schreiben und über das öffentliche Protokoll kommunizieren. Seine Anwendung bettet Laravel nicht ein und wird keine Laravel-Anwendung. diff --git a/i18n/de/source-hashes.json b/i18n/de/source-hashes.json index c0e7460a207..b9d558d55e1 100644 --- a/i18n/de/source-hashes.json +++ b/i18n/de/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "d2e8f2add0f4e59823adbe8245bf8befa4820bc4ea51cbc96a0a07d62256cde6", + "compatibility.md": "9e6e155c6e42ec224a625b5e172c0b314cb77992371bd93bb73d6cc9495aef5f", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", + "deployment.md": "1dd901213228a52e6222a15c6b85305098a4a4db06f198e319a7889c4562bddb", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", - "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", + "polyglot/server-config-reference.md": "aec241c0046f12a9d6efe2d6c1de443d7753bdf34135e06a6f83b3904ed1d429", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", + "polyglot/server.md": "f24fd7ff4eebcc768ec8105e8689ab1a14cc08d98167090ebb84e3e26631132a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md index 68e9f3d9810..c8ef7b1587b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md @@ -304,6 +304,8 @@ huellas de imágenes exactas usadas en cada comprobación completada. El Server seleccionado es el Server nativo 3.x. PHP Server 2.x está congelado en la versión 2.11.8 y no recibirá más publicaciones; las instalaciones PHP existentes pueden pasar al Server nativo con `upgrade-takeover` siguiendo el [runbook de toma de control nativa](%%artifact.serverTakeoverRunbookUrl%%). La toma de control está validada en la imagen publicada 3.0.4 dentro del alcance indicado en el runbook; es de un solo sentido y exige una copia de seguridad previa. +PHP Server 2.11.8 sigue sin parche para los avisos de Laravel de noviembre. Los despliegues fijados existentes deben seguir las [condiciones de exposición y acciones de retirada](./polyglot/server.md#retired-php-server-security); la evidencia histórica de takeover mantiene sus límites originales. + El `appVersion` registrado del chart de Helm es `%%artifact.helmChartAppVersion%%`, que coincide con el Server seleccionado, y el chart ejecuta el Server nativo de forma predeterminada. Su [comprobante de publicación](%%artifact.helmChartQualificationUrl%%) registra la ejecución de publicación del chart, los digests OCI/del paquete, la identidad del código fuente y una instalación en kind dentro de esa misma ejecución; no es una calificación en un clúster de producción. Consulte la [selección y actualización del chart](./deployment.md#helm-chart-selection) antes de instalar o sustituir la imagen. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md index a16a3c82cbc..299af6f8e9e 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md @@ -37,6 +37,8 @@ versión 2.11.8 y no recibirá más publicaciones. :::note Instalaciones existentes de PHP Server 2.x +PHP Server 2.11.8 está retirado y sin parche para los avisos de Laravel de noviembre. Para despliegues PHP fijados, siga las [condiciones de exposición y medidas de ingress/enlaces firmados](./polyglot/server.md#retired-php-server-security) antes de usar las recetas antiguas siguientes. + El stack PHP 2.x (servidor, worker de cola, programador, tarea de inicialización y Redis) sigue disponible. En la etiqueta de publicación 2.11.8 es [`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml); diff --git a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 176a855bbfa..b73a8b024a2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -18,6 +18,8 @@ keywords: Esta página documenta el contrato de variables de entorno `DW_*` para los operadores de la imagen de Durable Workflow Server. Úsela al crear plantillas de despliegue, revisar la configuración de producción o migrar los nombres antiguos `WORKFLOW_*` / `ACTIVITY_*` al contrato v2 de Server. El Server actual es el Server nativo 3.x; [Server nativo 3.x](#native-server-3x) indica qué ajustes respeta, ignora o rechaza. PHP Server 2.x está congelado en 2.11.8. +PHP Server 2.11.8 sigue sin parche para los avisos de Laravel de noviembre. Siga las [condiciones de exposición y medidas de ingress/enlaces firmados](./server.md#retired-php-server-security) para un despliegue fijado existente; cambiar estos ajustes no parchea la imagen. + PHP Server 2.x también utiliza la configuración habitual de Laravel, como `DB_*`, `REDIS_*`, `QUEUE_CONNECTION` y `CACHE_STORE`. Estas variables de infraestructura se enumeran por separado porque conectan los componentes del despliegue y no controlan la API de Durable Workflow. ## Server nativo 3.x {#native-server-3x} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md index 7d9e5d94cac..e1b3c108c72 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -34,6 +34,24 @@ La configuración marcada abajo como PHP 2.x no se aplica al Server nativo. ::: +## Seguridad de PHP Server retirado {#retired-php-server-security} + +:::warning Retirado y sin parche + +PHP Server 2.11.8 está retirado y sigue sin parche para los avisos de Laravel de noviembre. Su imagen publicada contiene Laravel 13.34.0. Actualizar las dependencias de Composer en el código fuente no parchea esa imagen instalada. Consulte las condiciones revisadas en el [aviso de seguridad del 13 de noviembre de 2026](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md). + +Laravel registra las rutas firmadas `GET /storage/{path}` y `PUT /storage/{path}`. La aplicación distribuida no emite sus URL firmadas temporales ni llama a `Concurrency::run()`. El hallazgo en la dependencia no demuestra un recorrido explotable del Server predeterminado. La exposición de las rutas de almacenamiento depende de obtener o emitir una URL firmada temporal válida y de las condiciones de análisis de solicitudes del aviso. Revise por separado las rutas y extensiones propias. + +Deje de exponer el servicio PHP retirado y planifique la migración a native. Hasta retirarlo: + +- Bloquee todas las solicitudes `/storage/*` en el ingress, incluidas GET y PUT, y verifique la regla en el endpoint real. Estas rutas son independientes del transporte autenticado `/api/external-payloads/v1`. +- Deje de emitir y reutilizar URL temporales de descarga o carga del disco local. Revise las extensiones que generan rutas firmadas o llaman a Laravel Concurrency. +- Conserve una copia restaurable de la base de datos y del almacenamiento externo de payloads. Detenga todos los roles PHP durante una migración que escriba en la base de datos. + +Estos controles reducen la exposición identificada de las rutas de almacenamiento; no instalan los parches ni demuestran que las extensiones propias sean seguras. Native usa un runtime Rust ajeno a este hallazgo de dependencia Laravel. Siga el [runbook de takeover con copia previa](%%artifact.serverTakeoverRunbookUrl%%) solo dentro de sus límites exactos de versión, backend y estado, y ensaye sobre una copia restaurada. El arranque native no convierte una base de datos PHP, y la última versión native no vuelve a cualificar takeover. Las actualizaciones native posteriores conservan sus [requisitos explícitos de esquema y restauración](../deployment.md#native-schema-upgrade-3-10). + +::: + ## ¿Es solo para equipos PHP? {#is-this-only-for-php-teams} No. PHP, Python y Rust tienen SDK oficiales. Un equipo que solo use Python o Rust puede desplegar Server como infraestructura, escribir workflows y actividades con su SDK nativo y comunicarse por el protocolo público. Su aplicación no integra Laravel ni se convierte en una aplicación Laravel. diff --git a/i18n/es/source-hashes.json b/i18n/es/source-hashes.json index c0e7460a207..b9d558d55e1 100644 --- a/i18n/es/source-hashes.json +++ b/i18n/es/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "d2e8f2add0f4e59823adbe8245bf8befa4820bc4ea51cbc96a0a07d62256cde6", + "compatibility.md": "9e6e155c6e42ec224a625b5e172c0b314cb77992371bd93bb73d6cc9495aef5f", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", + "deployment.md": "1dd901213228a52e6222a15c6b85305098a4a4db06f198e319a7889c4562bddb", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", - "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", + "polyglot/server-config-reference.md": "aec241c0046f12a9d6efe2d6c1de443d7753bdf34135e06a6f83b3904ed1d429", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", + "polyglot/server.md": "f24fd7ff4eebcc768ec8105e8689ab1a14cc08d98167090ebb84e3e26631132a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md index 41821b73c75..9a611ff56fa 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md @@ -302,6 +302,8 @@ pour chaque vérification terminée. Le Server sélectionné est le Server natif 3.x. PHP Server 2.x est figé à la version 2.11.8 et ne recevra plus de nouvelles versions ; les installations PHP existantes peuvent passer au natif avec `upgrade-takeover` en suivant le [runbook de reprise native](%%artifact.serverTakeoverRunbookUrl%%). La reprise est qualifiée sur l’image publiée 3.0.4 dans le périmètre indiqué par le runbook ; elle est à sens unique et exige une sauvegarde préalable. +PHP Server 2.11.8 reste non corrigé pour les avis Laravel de novembre. Les déploiements épinglés existants doivent suivre les [conditions d’exposition et actions de retrait](./polyglot/server.md#retired-php-server-security) ; les preuves historiques de takeover gardent leurs limites initiales. + L’`appVersion` enregistré du chart Helm est `%%artifact.helmChartAppVersion%%`, correspondant au Server sélectionné, et le chart exécute le Server natif par défaut. Son [reçu de publication](%%artifact.helmChartQualificationUrl%%) consigne l’exécution de publication du chart, les digests OCI/du paquet, l’identité source et une installation kind lors de cette exécution ; ce n’est pas une qualification sur un cluster de production. Consultez le [choix et la mise à niveau du chart](./deployment.md#helm-chart-selection) avant d’installer ou de remplacer l’image. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md index c664baa7717..bdc0956cb7e 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md @@ -38,6 +38,8 @@ worker de file, ni ordonnanceur, ni Redis. PHP Server 2.x est figé à la versio :::note Installations PHP Server 2.x existantes +PHP Server 2.11.8 est retiré et non corrigé pour les avis Laravel de novembre. Pour les déploiements PHP épinglés, suivez les [conditions d’exposition et actions ingress/liens signés](./polyglot/server.md#retired-php-server-security) avant d’utiliser les anciennes recettes ci-dessous. + La pile PHP 2.x (serveur, worker de file, ordonnanceur, job d'initialisation et Redis) reste disponible. Au tag de publication 2.11.8, il s'agit de [`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml) ; diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index bab31b01488..6f302cf9ed1 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -18,6 +18,8 @@ keywords: Cette page décrit le contrat des variables d’environnement `DW_*` destiné aux opérateurs de l’image Durable Workflow Server. Utilisez-la pour préparer vos modèles de déploiement, vérifier la configuration de production ou remplacer les anciens noms `WORKFLOW_*` / `ACTIVITY_*` par le contrat Server v2. Le Server actuel est le Server natif 3.x ; la section [Server natif 3.x](#native-server-3x) indique les paramètres qu’il applique, ignore ou refuse. PHP Server 2.x est figé en 2.11.8. +PHP Server 2.11.8 reste non corrigé pour les avis Laravel de novembre. Suivez les [conditions d’exposition et actions ingress/liens signés](./server.md#retired-php-server-security) pour un déploiement épinglé existant ; modifier ces paramètres ne corrige pas l’image. + Le serveur PHP 2.x utilise aussi les paramètres habituels de Laravel, comme `DB_*`, `REDIS_*`, `QUEUE_CONNECTION` et `CACHE_STORE`. Ces variables d’infrastructure sont présentées séparément : elles configurent le déploiement et ne constituent pas des commandes de l’API Durable Workflow. ## Server natif 3.x {#native-server-3x} diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md index 57e3c86e3c7..f5a3a706540 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -34,6 +34,24 @@ La configuration marquée PHP 2.x ci-dessous ne s’applique pas au Server natif ::: +## Sécurité de PHP Server retiré {#retired-php-server-security} + +:::warning Retiré et non corrigé + +PHP Server 2.11.8 est retiré et reste non corrigé pour les avis Laravel de novembre. Son image publiée contient Laravel 13.34.0. Mettre à jour les dépendances Composer d’une copie des sources ne corrige pas cette image installée. Consultez les conditions examinées dans l’[avis de sécurité du 13 novembre 2026](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md). + +Laravel enregistre les routes signées `GET /storage/{path}` et `PUT /storage/{path}`. L’application distribuée n’émet pas leurs URL signées temporaires et n’appelle pas `Concurrency::run()`. Le constat sur la dépendance ne démontre pas un parcours Server exploitable par défaut. L’exposition des routes de stockage dépend de l’obtention ou de l’émission d’une URL signée temporaire valide et des conditions d’analyse des requêtes décrites dans l’avis. Examinez séparément les routes et extensions personnalisées. + +Cessez d’exposer le service PHP retiré et planifiez la migration vers native. Jusqu’à son retrait : + +- Bloquez toutes les requêtes `/storage/*` à l’ingress, y compris GET et PUT, et vérifiez la règle sur le véritable endpoint. Ces routes sont distinctes du transport authentifié `/api/external-payloads/v1`. +- Cessez d’émettre et de réutiliser les URL temporaires de téléchargement ou d’envoi du disque local. Examinez les extensions qui génèrent des routes signées ou appellent Laravel Concurrency. +- Conservez une sauvegarde restaurable de la base de données et du stockage externe des payloads. Arrêtez tous les rôles PHP pendant une migration qui écrit dans la base. + +Ces contrôles réduisent l’exposition identifiée des routes de stockage ; ils n’installent pas les correctifs et n’établissent pas la sécurité des extensions personnalisées. Native utilise un runtime Rust hors de ce constat de dépendance Laravel. Suivez le [runbook de takeover avec sauvegarde préalable](%%artifact.serverTakeoverRunbookUrl%%) uniquement dans ses limites exactes de version, backend et état, et répétez sur une copie restaurée. Le démarrage native ne convertit pas une base PHP, et la dernière version native ne qualifie pas à nouveau takeover. Les mises à niveau native suivantes conservent leurs [exigences explicites de schéma et restauration](../deployment.md#native-schema-upgrade-3-10). + +::: + ## Est-ce réservé aux équipes PHP ? {#is-this-only-for-php-teams} Non. PHP, Python et Rust disposent de SDK officiels. Une équipe dont l’application utilise uniquement Python ou Rust peut déployer Server comme infrastructure, écrire ses workflows et activités avec son SDK natif et communiquer par le protocole public. Son application n’intègre pas Laravel et ne devient pas une application Laravel. diff --git a/i18n/fr/source-hashes.json b/i18n/fr/source-hashes.json index c0e7460a207..b9d558d55e1 100644 --- a/i18n/fr/source-hashes.json +++ b/i18n/fr/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "d2e8f2add0f4e59823adbe8245bf8befa4820bc4ea51cbc96a0a07d62256cde6", + "compatibility.md": "9e6e155c6e42ec224a625b5e172c0b314cb77992371bd93bb73d6cc9495aef5f", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", + "deployment.md": "1dd901213228a52e6222a15c6b85305098a4a4db06f198e319a7889c4562bddb", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", - "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", + "polyglot/server-config-reference.md": "aec241c0046f12a9d6efe2d6c1de443d7753bdf34135e06a6f83b3904ed1d429", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", + "polyglot/server.md": "f24fd7ff4eebcc768ec8105e8689ab1a14cc08d98167090ebb84e3e26631132a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md index d9d53259ca4..e4a540a59e8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md @@ -247,6 +247,8 @@ Durable Workflow の各公開インターフェースは、次の安定性レベ 選択した Server はネイティブ 3.x Server です。PHP Server 2.x は 2.11.8 で凍結され、今後リリースはありません。既存の PHP インストールは、[ネイティブ移行(テイクオーバー)手順書](%%artifact.serverTakeoverRunbookUrl%%)に従って `upgrade-takeover` でネイティブへ移行できます。テイクオーバーは、手順書に記載された範囲内で、公開済みの 3.0.4 イメージで適格性が確認されています。一方向の操作であり、事前のバックアップが前提です。 +PHP Server 2.11.8 は11月の Laravel アドバイザリに対して未修正です。既存の固定バージョン環境では[条件付きの露出と廃止の対策](./polyglot/server.md#retired-php-server-security)に従ってください。過去の takeover 実証の制限は変わりません。 + Helm チャートに記録された `appVersion` は `%%artifact.helmChartAppVersion%%` で、選択した Server と一致し、チャートは既定でネイティブ Server を実行します。[公開済みのリリース記録](%%artifact.helmChartQualificationUrl%%)には、チャートのリリース実行、OCI/パッケージのダイジェスト、ソース識別子、その実行内での kind へのインストールが記録されています。本番クラスターでの適格性確認ではありません。インストールやイメージの上書き前に、[チャートの選択とアップグレード](./deployment.md#helm-chart-selection)を確認してください。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md index 78d5299e54b..6f93a30b20d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md @@ -20,6 +20,8 @@ Server は Waterline を同梱・運用しません。運用 UI が必要な場 :::note 既存の PHP Server 2.x インストール +PHP Server 2.11.8 はサポート終了で、11月の Laravel アドバイザリに対して未修正です。バージョン固定の PHP 環境では、以下の旧レシピを使う前に[条件付きの露出と ingress・署名リンク対策](./polyglot/server.md#retired-php-server-security)に従ってください。 + PHP 2.x のスタック(Server、キュー Worker、スケジューラー、ブートストラップジョブ、Redis)は引き続き利用できます。2.11.8 のリリースタグでは[`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml)で、3.0.0 以降の Server リポジトリでは同じスタックを[`docker-compose.php.yml`](https://github.com/durable-workflow/server/blob/main/docker-compose.php.yml)として維持しています。既存の PHP 2.x インストールは、[ネイティブ移行(テイクオーバー)手順書](%%artifact.serverTakeoverRunbookUrl%%)に従って `upgrade-takeover` でネイティブへ移行できます。テイクオーバーは、SQLite、MySQL 8.0、PostgreSQL 17 上で PHP 2.11.8 が書き込んだデータベースについて、公開済みの 3.0.4 イメージ(arm64)で適格性が確認されています。MariaDB、amd64、および他の PHP リリースのデータベース(スキーマレイアウト 2.8.0–2.11.8)は、ソースビルドでの CI による検証のみです。テイクオーバーは一方向で、事前のバックアップが前提であり、PHP を停止しておく必要があります。引き継げないデータベースや状態は拒否されます。各ケースは手順書の[拒否条件の表](%%artifact.serverTakeoverRunbookUrl%%#refusals)に記載されています。まずバックアップから復元したコピーでリハーサルしてください。テイクオーバー後に PHP へロールバックすることはできません。また、テイクオーバーは 3.1.x 系で非推奨とする予定です。以下の節で Redis、キュー Worker、スケジューラー、ブートストラップに触れている箇所は、PHP 2.x のトポロジーを説明しています。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index c30195f694d..ebe7eb8f5c1 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -18,6 +18,8 @@ keywords: このページは Durable Workflow Server イメージの運用者向け `DW_*` 環境変数の契約を説明します。デプロイ用テンプレートの作成、本番設定の確認、従来の `WORKFLOW_*` / `ACTIVITY_*` 名から v2 Server の契約への移行に使用してください。現在の Server はネイティブ 3.x Server です。どの設定を適用、無視、拒否するかは [ネイティブ Server 3.x](#native-server-3x) に記載しています。PHP Server 2.x は 2.11.8 で凍結されています。 +PHP Server 2.11.8 は11月の Laravel アドバイザリに対して未修正です。既存の固定バージョン環境では[条件付きの露出と ingress・署名リンク対策](./server.md#retired-php-server-security)に従ってください。設定を変更してもイメージは修正されません。 + PHP 2.x Server は `DB_*`、`REDIS_*`、`QUEUE_CONNECTION`、`CACHE_STORE` など、通常の Laravel 実行時設定も使用します。これらは Durable Workflow API の設定ではなくデプロイ基盤の設定なので、別の表に記載しています。 ## ネイティブ Server 3.x {#native-server-3x} diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md index 8c8088f7976..458d53456c3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -24,6 +24,24 @@ PHP 2.x のスタック(Server、キュー Worker、スケジューラー、 ::: +## サポート終了 PHP Server のセキュリティ {#retired-php-server-security} + +:::warning サポート終了・未修正 + +PHP Server 2.11.8 はサポート終了であり、11月の Laravel アドバイザリに対して未修正です。公開済みイメージには Laravel 13.34.0 が含まれます。ソースのチェックアウトで Composer 依存関係を更新しても、インストール済みイメージは修正されません。確認済みの条件は[2026年11月13日のセキュリティ通知](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md)を参照してください。 + +Laravel は署名付きの `GET /storage/{path}` と `PUT /storage/{path}` を登録します。配布アプリケーションはその一時署名 URL を発行せず、`Concurrency::run()` も呼びません。依存関係の問題は、デフォルトの Server 経路で悪用可能と実証したものではありません。ストレージ経路の露出は、有効な一時署名 URL の入手または発行と、アドバイザリのリクエスト解析条件に依存します。独自のルートや拡張は別途確認してください。 + +サポート終了 PHP サービスの公開を停止し、native への移行を計画してください。廃止までの間は次を実施します。 + +- GET と PUT を含むすべての `/storage/*` リクエストを ingress で遮断し、実際のエンドポイントでルールを確認します。これらは認証付きの `/api/external-payloads/v1` 転送とは別のルートです。 +- ローカルディスクの一時ダウンロード・アップロード URL の発行と再利用を停止します。署名ルートを生成したり Laravel Concurrency を呼んだりする拡張を確認します。 +- 復元可能なデータベースと外部 payload ストレージのバックアップを保持します。データベースに書き込む移行では PHP の全ロールを停止します。 + +これらの対策は確認されたストレージ経路の露出を減らしますが、修正を導入したり独自拡張の安全性を証明したりするものではありません。native はこの Laravel 依存関係の問題に該当しない Rust runtime を使用します。[バックアップ優先の takeover 手順](%%artifact.serverTakeoverRunbookUrl%%)の正確なバージョン・backend・状態の制限内でのみ実行し、復元したコピーで予行してください。native の起動は PHP データベースの変換ではなく、最新 native リリースが takeover を新たに適格化するわけでもありません。その後の native 更新にも[明示的な schema と復元の要件](../deployment.md#native-schema-upgrade-3-10)が適用されます。 + +::: + ## PHP チーム専用ですか? {#is-this-only-for-php-teams} 専用ではありません。PHP、Python、Rust はいずれも公式 SDK です。Python や Rust だけを使うチームでも、公開 Server を基盤としてデプロイし、各言語の SDK でワークフローとアクティビティを実装して公開プロトコルで通信できます。アプリケーションに Laravel を組み込んだり、Laravel アプリケーションへ変更したりする必要はありません。 diff --git a/i18n/ja/source-hashes.json b/i18n/ja/source-hashes.json index c0e7460a207..b9d558d55e1 100644 --- a/i18n/ja/source-hashes.json +++ b/i18n/ja/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "d2e8f2add0f4e59823adbe8245bf8befa4820bc4ea51cbc96a0a07d62256cde6", + "compatibility.md": "9e6e155c6e42ec224a625b5e172c0b314cb77992371bd93bb73d6cc9495aef5f", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", + "deployment.md": "1dd901213228a52e6222a15c6b85305098a4a4db06f198e319a7889c4562bddb", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", - "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", + "polyglot/server-config-reference.md": "aec241c0046f12a9d6efe2d6c1de443d7753bdf34135e06a6f83b3904ed1d429", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", + "polyglot/server.md": "f24fd7ff4eebcc768ec8105e8689ab1a14cc08d98167090ebb84e3e26631132a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md index 2838b576971..9efa67c8afe 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md @@ -306,6 +306,8 @@ as versões exatas e os digests de imagens usados em cada verificação concluí O Server selecionado é o Server nativo 3.x. O PHP Server 2.x está congelado na versão 2.11.8 e não receberá novas releases; instalações PHP existentes podem passar para o Server nativo com o `upgrade-takeover` seguindo o [runbook de migração para o Server nativo](%%artifact.serverTakeoverRunbookUrl%%). A migração está qualificada na imagem publicada 3.0.4 dentro do escopo declarado no runbook; ela é sem volta e exige um backup prévio. +O PHP Server 2.11.8 continua sem correção para os avisos Laravel de novembro. Implantações fixadas existentes devem seguir as [condições de exposição e ações de aposentadoria](./polyglot/server.md#retired-php-server-security); as evidências históricas de takeover mantêm seus limites originais. + O `appVersion` registrado do chart Helm é `%%artifact.helmChartAppVersion%%`, correspondendo ao Server selecionado, e o chart executa o Server nativo por padrão. O [comprovante de release publicado](%%artifact.helmChartQualificationUrl%%) registra a execução da release do chart, os digests OCI/do pacote, a identidade do código-fonte e uma instalação em kind nessa mesma execução; não é uma qualificação em cluster de produção. Consulte a [seleção e atualização do chart](./deployment.md#helm-chart-selection) antes de instalar ou substituir a imagem. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md index d7251ade138..3a531b60c9d 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md @@ -39,6 +39,8 @@ na versão 2.11.8 e não receberá novas releases. :::note Instalações existentes do PHP Server 2.x +O PHP Server 2.11.8 foi aposentado e continua sem correção para os avisos Laravel de novembro. Para implantações PHP fixadas, siga as [condições de exposição e ações de ingress/links assinados](./polyglot/server.md#retired-php-server-security) antes de usar as receitas antigas abaixo. + O stack PHP 2.x (server, worker de fila, agendador, job de bootstrap e Redis) continua disponível. Na tag de release 2.11.8, ele é o [`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml); diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 962d5337d6d..2a2719b0431 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -18,6 +18,8 @@ keywords: Esta página documenta o contrato das variáveis de ambiente `DW_*` da imagem do Durable Workflow Server para operadores. Use-a ao criar modelos de implantação, revisar a configuração de produção ou migrar os nomes antigos `WORKFLOW_*` / `ACTIVITY_*` para o contrato v2 do Server. O Server atual é o Server nativo 3.x; [Server nativo 3.x](#native-server-3x) indica quais configurações ele respeita, ignora ou recusa. O PHP Server 2.x está congelado na versão 2.11.8. +O PHP Server 2.11.8 continua sem correção para os avisos Laravel de novembro. Siga as [condições de exposição e ações de ingress/links assinados](./server.md#retired-php-server-security) para uma implantação fixada existente; alterar essas configurações não corrige a imagem. + O PHP Server 2.x também utiliza as configurações comuns do Laravel, como `DB_*`, `REDIS_*`, `QUEUE_CONNECTION` e `CACHE_STORE`. Essas variáveis de infraestrutura são listadas separadamente porque conectam os componentes da implantação e não controlam a API do Durable Workflow. ## Server nativo 3.x {#native-server-3x} diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md index 849e1b870f4..eefb41c8caa 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -34,6 +34,24 @@ A configuração abaixo marcada como PHP 2.x não se aplica ao Server nativo. ::: +## Segurança do PHP Server aposentado {#retired-php-server-security} + +:::warning Aposentado e sem correção + +O PHP Server 2.11.8 foi aposentado e continua sem correção para os avisos Laravel de novembro. Sua imagem publicada contém Laravel 13.34.0. Atualizar as dependências Composer de uma cópia do código-fonte não corrige essa imagem instalada. Consulte as condições revisadas no [aviso de segurança de 13 de novembro de 2026](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md). + +O Laravel registra as rotas assinadas `GET /storage/{path}` e `PUT /storage/{path}`. A aplicação distribuída não emite suas URLs temporárias assinadas nem chama `Concurrency::run()`. O problema na dependência não demonstra um fluxo explorável no Server padrão. A exposição das rotas de armazenamento depende da obtenção ou emissão de uma URL temporária assinada válida e das condições de análise de requisições do aviso. Revise rotas e extensões próprias separadamente. + +Pare de expor o serviço PHP aposentado e planeje a migração para native. Até a aposentadoria: + +- Bloqueie todas as requisições `/storage/*` no ingress, incluindo GET e PUT, e confira a regra no endpoint real. Essas rotas são separadas do transporte autenticado `/api/external-payloads/v1`. +- Pare de emitir e reutilizar URLs temporárias de download ou upload do disco local. Revise extensões que geram rotas assinadas ou chamam Laravel Concurrency. +- Preserve um backup restaurável do banco de dados e do armazenamento externo de payloads. Pare todos os papéis PHP durante uma migração que escreva no banco. + +Esses controles reduzem a exposição identificada das rotas de armazenamento; não instalam as correções nem demonstram que extensões próprias são seguras. Native usa um runtime Rust fora deste problema de dependência Laravel. Siga o [runbook de takeover com backup prévio](%%artifact.serverTakeoverRunbookUrl%%) somente dentro dos limites exatos de versão, backend e estado e ensaie em uma cópia restaurada. A inicialização native não converte um banco PHP, e a versão native mais recente não qualifica takeover novamente. Atualizações native posteriores mantêm os [requisitos explícitos de schema e restauração](../deployment.md#native-schema-upgrade-3-10). + +::: + ## É apenas para equipes PHP? {#is-this-only-for-php-teams} Não. PHP, Python e Rust têm SDKs oficiais. Uma equipe que usa apenas Python ou Rust pode implantar o Server como infraestrutura, escrever workflows e atividades com seu SDK nativo e se comunicar pelo protocolo público. Sua aplicação não incorpora Laravel nem se torna uma aplicação Laravel. diff --git a/i18n/pt-BR/source-hashes.json b/i18n/pt-BR/source-hashes.json index c0e7460a207..b9d558d55e1 100644 --- a/i18n/pt-BR/source-hashes.json +++ b/i18n/pt-BR/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "d2e8f2add0f4e59823adbe8245bf8befa4820bc4ea51cbc96a0a07d62256cde6", + "compatibility.md": "9e6e155c6e42ec224a625b5e172c0b314cb77992371bd93bb73d6cc9495aef5f", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", + "deployment.md": "1dd901213228a52e6222a15c6b85305098a4a4db06f198e319a7889c4562bddb", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", - "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", + "polyglot/server-config-reference.md": "aec241c0046f12a9d6efe2d6c1de443d7753bdf34135e06a6f83b3904ed1d429", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", + "polyglot/server.md": "f24fd7ff4eebcc768ec8105e8689ab1a14cc08d98167090ebb84e3e26631132a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md index 9bcf5fbbfdc..c50485808e0 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md @@ -300,6 +300,8 @@ forward compatibility в документах стабільності паке Вибраний Server — це нативний Server 3.x. PHP Server 2.x заморожено на версії 2.11.8, і нових випусків він не отримуватиме; наявні PHP-встановлення можна перевести на нативний Server за допомогою `upgrade-takeover` за [runbook переходу на нативний Server](%%artifact.serverTakeoverRunbookUrl%%). Перехід кваліфіковано на опублікованому образі 3.0.4 у межах, зазначених у runbook; він односторонній і вимагає попередньої резервної копії. +PHP Server 2.11.8 залишається невиправленим щодо листопадових рекомендацій Laravel. Наявні встановлення із зафіксованою версією мають виконати [дії щодо умовної експозиції та виведення з експлуатації](./polyglot/server.md#retired-php-server-security); історичні докази takeover зберігають початкові межі. + Записаний `appVersion` чарту Helm — `%%artifact.helmChartAppVersion%%`, що відповідає вибраному Server, і чарт типово запускає нативний Server. [Опублікований звіт про випуск](%%artifact.helmChartQualificationUrl%%) фіксує запуск випуску чарту, OCI/package digests, ідентичність джерела та встановлення в kind у межах цього запуску; це не кваліфікація production-кластера. Перед встановленням або перевизначенням образу див. [вибір і оновлення чарту](./deployment.md#helm-chart-selection). diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md index e68442e2e89..fde63a46a12 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md @@ -38,6 +38,8 @@ Cloud натомість містить Managed Waterline для свого ке :::note Наявні встановлення PHP Server 2.x +PHP Server 2.11.8 виведено з підтримки й не виправлено щодо листопадових рекомендацій Laravel. Для встановлень PHP із зафіксованою версією виконайте [дії щодо умовної експозиції, ingress і підписаних посилань](./polyglot/server.md#retired-php-server-security), перш ніж використовувати старі рецепти нижче. + Стек PHP 2.x (server, worker черги, планувальник, Job початкового налаштування та Redis) залишається доступним. У тегу випуску 2.11.8 це [`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml); diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 18789007359..a256a4e4f3e 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -24,6 +24,8 @@ keywords: перелічено, які налаштування він враховує, ігнорує чи відхиляє. PHP Server 2.x зафіксовано на версії 2.11.8. +PHP Server 2.11.8 залишається невиправленим щодо листопадових рекомендацій Laravel. Для наявного встановлення із зафіксованою версією виконайте [дії щодо умовної експозиції, ingress і підписаних посилань](./server.md#retired-php-server-security); зміна цих налаштувань не виправляє образ. + PHP Server 2.x також використовує звичайні налаштування Laravel runtime, зокрема `DB_*`, `REDIS_*`, `QUEUE_CONNECTION` та `CACHE_STORE`. Ці інфраструктурні змінні перелічено окремо як налаштування розгортання, diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md index 2682c4fe907..43e19178cf5 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -45,6 +45,24 @@ PHP має бути зупинено. Він відхиляє бази та ст ::: +## Безпека виведеного з підтримки PHP Server {#retired-php-server-security} + +:::warning Підтримку завершено, виправлення немає + +PHP Server 2.11.8 виведено з підтримки, і він залишається невиправленим щодо листопадових рекомендацій Laravel. Його опублікований образ містить Laravel 13.34.0. Оновлення залежностей Composer у копії вихідного коду не виправляє цей установлений образ. Перевірені умови наведено в [повідомленні про безпеку від 13 листопада 2026 року](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md). + +Laravel реєструє підписані маршрути `GET /storage/{path}` і `PUT /storage/{path}`. Поставлений застосунок не видає їхніх тимчасових підписаних URL і не викликає `Concurrency::run()`. Виявлена проблема залежності не доводить можливість експлуатації типового сценарію Server. Експозиція маршрутів сховища залежить від отримання або видачі дійсного тимчасового підписаного URL та умов розбору запиту з рекомендації. Власні маршрути й розширення перевіряйте окремо. + +Припиніть зовнішній доступ до виведеного з підтримки PHP-сервісу та плануйте перехід на native. До виведення з експлуатації: + +- Блокуйте на ingress усі запити `/storage/*`, зокрема GET і PUT, та перевірте правило на фактичній кінцевій точці. Ці маршрути окремі від автентифікованого транспорту `/api/external-payloads/v1`. +- Припиніть видавати й повторно використовувати тимчасові URL завантаження з локального диска та на нього. Перевірте розширення, які створюють підписані маршрути або викликають Laravel Concurrency. +- Збережіть придатну до відновлення резервну копію бази даних і зовнішнього сховища payload. Зупиніть усі ролі PHP під час міграції, що записує дані в базу. + +Ці заходи зменшують виявлену експозицію маршрутів сховища; вони не встановлюють виправлень і не доводять безпечності власних розширень. Native використовує Rust runtime поза цією проблемою залежності Laravel. Дотримуйтеся [runbook takeover із попереднім резервуванням](%%artifact.serverTakeoverRunbookUrl%%) лише в точних межах версій, backend і стану та проведіть репетицію на відновленій копії. Запуск native не перетворює базу PHP, а найновіший випуск native не надає нової кваліфікації takeover. Подальші оновлення native зберігають [явні вимоги до схеми й відновлення](../deployment.md#native-schema-upgrade-3-10). + +::: + ## Це лише для команд PHP? {#is-this-only-for-php-teams} Ні. PHP, Python і Rust мають офіційні SDK. Команда застосунку лише на Python diff --git a/i18n/uk/source-hashes.json b/i18n/uk/source-hashes.json index c0e7460a207..b9d558d55e1 100644 --- a/i18n/uk/source-hashes.json +++ b/i18n/uk/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "d2e8f2add0f4e59823adbe8245bf8befa4820bc4ea51cbc96a0a07d62256cde6", + "compatibility.md": "9e6e155c6e42ec224a625b5e172c0b314cb77992371bd93bb73d6cc9495aef5f", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", + "deployment.md": "1dd901213228a52e6222a15c6b85305098a4a4db06f198e319a7889c4562bddb", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", - "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", + "polyglot/server-config-reference.md": "aec241c0046f12a9d6efe2d6c1de443d7753bdf34135e06a6f83b3904ed1d429", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", + "polyglot/server.md": "f24fd7ff4eebcc768ec8105e8689ab1a14cc08d98167090ebb84e3e26631132a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md index 739b038e552..1a97713a9c7 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md @@ -238,6 +238,8 @@ Durable Workflow 中每个公开接口恰好具有以下一个稳定性级别。 所选 Server 为原生 3.x Server。PHP Server 2.x 已冻结在 2.11.8,不再发布新版本;现有 PHP 安装可以按照[原生接管运行手册](%%artifact.serverTakeoverRunbookUrl%%),使用 `upgrade-takeover` 迁移到原生 Server。接管已在运行手册说明的范围内于已发布的 3.0.4 镜像上通过资格验证;它是单向的,且必须先备份。 +PHP Server 2.11.8 仍未修补 11 月的 Laravel 安全公告问题。现有固定版本部署必须遵循[有条件的暴露说明和退役措施](./polyglot/server.md#retired-php-server-security);历史 takeover 证据保留原有限制。 + Helm Chart 记录的 `appVersion` 为 `%%artifact.helmChartAppVersion%%`,与所选 Server 一致,且该 Chart 默认运行原生 Server。[已发布的版本发布记录](%%artifact.helmChartQualificationUrl%%)记录了 Chart 的发布运行、OCI/软件包摘要、源码标识,以及该次运行中的 kind 安装;它并不代表生产集群资格验证。安装或覆盖镜像前,请阅读 [Chart 选择与升级](./deployment.md#helm-chart-selection)。 diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md index faa220f4ab9..7307bfddf62 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md @@ -20,6 +20,8 @@ Durable Workflow v2 支持多种自托管形态。选择与你运维环境相符 :::note 现有 PHP Server 2.x 安装 +PHP Server 2.11.8 已退役,仍未修补 11 月的 Laravel 安全公告问题。固定版本的 PHP 部署在使用下述旧配方前,应遵循[有条件的暴露说明及 ingress/签名链接措施](./polyglot/server.md#retired-php-server-security)。 + PHP 2.x 栈(Server、队列 Worker、调度器、bootstrap 任务和 Redis)仍然可用。在 2.11.8 发布标签中,它是 [`docker-compose.published.yml`](https://github.com/durable-workflow/server/blob/2.11.8/docker-compose.published.yml);从 3.0.0 起,Server 仓库以 [`docker-compose.php.yml`](https://github.com/durable-workflow/server/blob/main/docker-compose.php.yml) 保留同一个栈。现有 PHP 2.x 安装可以按照[原生接管运行手册](%%artifact.serverTakeoverRunbookUrl%%),使用 `upgrade-takeover` 迁移到原生 Server。对于由 PHP 2.11.8 在 SQLite、MySQL 8.0 和 PostgreSQL 17 上写入的数据库,接管已在已发布的 3.0.4 镜像(arm64)上通过资格验证。MariaDB、amd64 以及来自其他 PHP 版本的数据库(布局 2.8.0–2.11.8)仅有基于源码构建的 CI 覆盖。接管是单向的,必须先备份,并且必须停止 PHP。接管会拒绝它无法迁移的数据库和状态;运行手册中的[拒绝情形表](%%artifact.serverTakeoverRunbookUrl%%#refusals)列出了每种情况。请先在由备份恢复出的副本上演练接管。接管后无法回滚到 PHP,且接管计划在 3.1.x 系列中弃用。下文提及 Redis、队列 Worker、调度器或 bootstrap 的部分描述的是 PHP 2.x 拓扑。 ::: diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 0af34ab0f8f..8ce0288ecc1 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -18,6 +18,8 @@ keywords: 本页说明 Durable Workflow Server 镜像面向运维人员的 `DW_*` 环境变量契约。构建部署模板、检查生产配置,或将旧的 `WORKFLOW_*` / `ACTIVITY_*` 名称迁移到 v2 Server 契约时,请参考本页。当前 Server 是原生 3.x Server;[原生 Server 3.x](#native-server-3x) 列出它遵循、忽略或拒绝的设置。PHP Server 2.x 已冻结在 2.11.8。 +PHP Server 2.11.8 仍未修补 11 月的 Laravel 安全公告问题。现有固定版本部署应遵循[有条件的暴露说明及 ingress/签名链接措施](./server.md#retired-php-server-security);更改这些设置不会修补镜像。 + PHP 2.x Server 还使用常规 Laravel 运行时设置,例如 `DB_*`、`REDIS_*`、`QUEUE_CONNECTION` 和 `CACHE_STORE`。这些变量属于部署基础设施,并非 Durable Workflow API 控制项,因此单独列出。 ## 原生 Server 3.x {#native-server-3x} diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md index ea581db452c..740c4c0010a 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -24,6 +24,24 @@ PHP 2.x 栈(Server、队列 Worker、调度器、bootstrap 任务和 Redis) ::: +## 已退役 PHP Server 的安全性 {#retired-php-server-security} + +:::warning 已退役且未修补 + +PHP Server 2.11.8 已退役,仍未修补 11 月的 Laravel 安全公告问题。其已发布镜像包含 Laravel 13.34.0。更新源码检出中的 Composer 依赖不会修补已安装镜像。已审查的条件见 [2026 年 11 月 13 日安全通知](https://github.com/durable-workflow/server/blob/3f21b754418ffea5e786f2bd48481a35c92ab1a2/docs/security/retired-php-server-2026-11-13.md)。 + +Laravel 注册带签名的 `GET /storage/{path}` 和 `PUT /storage/{path}` 路由。随附应用不会签发其临时签名 URL,也不会调用 `Concurrency::run()`。依赖问题并不证明默认 Server 流程可被利用。存储路由的暴露取决于获得或签发有效临时签名 URL,以及公告中的请求解析条件。自定义路由和扩展需单独审查。 + +停止对外开放已退役 PHP 服务,并规划迁移至 native。在退役前: + +- 在 ingress 阻止所有 `/storage/*` 请求,包括 GET 和 PUT,并在实际端点验证规则。这些路由独立于经过身份验证的 `/api/external-payloads/v1` 传输。 +- 停止签发和重复使用本地磁盘的临时下载或上传 URL。审查生成签名路由或调用 Laravel Concurrency 的扩展。 +- 保留可恢复的数据库及外部 payload 存储备份。迁移写入数据库期间停止所有 PHP 角色。 + +这些控制降低已识别的存储路由暴露,但不会安装修复,也不能证明自定义扩展安全。Native 使用 Rust runtime,不在此 Laravel 依赖问题范围内。仅在精确的版本、backend 和状态限制内遵循[备份优先的 takeover 手册](%%artifact.serverTakeoverRunbookUrl%%),并在恢复出的副本上演练。Native 启动不是 PHP 数据库转换,最新 native 发布也不会重新证明 takeover 的适用性。后续 native 升级仍遵循[显式 schema 与恢复要求](../deployment.md#native-schema-upgrade-3-10)。 + +::: + ## 只适用于 PHP 团队吗? {#is-this-only-for-php-teams} 不是。PHP、Python 和 Rust 都有第一方 SDK。仅使用 Python 或 Rust 的团队可将已发布的独立 Server 部署为基础设施,以各自 SDK 编写工作流和活动,通过公开协议通信。应用无需嵌入 Laravel,也不会因此变成 Laravel 应用。 diff --git a/i18n/zh-Hans/source-hashes.json b/i18n/zh-Hans/source-hashes.json index c0e7460a207..b9d558d55e1 100644 --- a/i18n/zh-Hans/source-hashes.json +++ b/i18n/zh-Hans/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "d2e8f2add0f4e59823adbe8245bf8befa4820bc4ea51cbc96a0a07d62256cde6", + "compatibility.md": "9e6e155c6e42ec224a625b5e172c0b314cb77992371bd93bb73d6cc9495aef5f", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", + "deployment.md": "1dd901213228a52e6222a15c6b85305098a4a4db06f198e319a7889c4562bddb", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", - "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", + "polyglot/server-config-reference.md": "aec241c0046f12a9d6efe2d6c1de443d7753bdf34135e06a6f83b3904ed1d429", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", + "polyglot/server.md": "f24fd7ff4eebcc768ec8105e8689ab1a14cc08d98167090ebb84e3e26631132a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327",