From 13e5f0ccad8585f833e4de0d21cfe919d5511a71 Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Fri, 23 Oct 2026 05:07:47 +0000 Subject: [PATCH] docs: explain database TLS settings in every locale --- docs/deployment.md | 2 +- docs/polyglot/server-config-reference.md | 38 +++++++++++++++++- .../current/deployment.md | 2 +- .../polyglot/server-config-reference.md | 39 +++++++++++++++++- i18n/de/source-hashes.json | 4 +- .../current/deployment.md | 2 +- .../polyglot/server-config-reference.md | 38 +++++++++++++++++- i18n/es/source-hashes.json | 4 +- .../current/deployment.md | 2 +- .../polyglot/server-config-reference.md | 40 ++++++++++++++++++- i18n/fr/source-hashes.json | 4 +- .../current/deployment.md | 2 +- .../polyglot/server-config-reference.md | 38 +++++++++++++++++- i18n/ja/source-hashes.json | 4 +- .../current/deployment.md | 2 +- .../polyglot/server-config-reference.md | 39 +++++++++++++++++- i18n/pt-BR/source-hashes.json | 4 +- .../current/deployment.md | 2 +- .../polyglot/server-config-reference.md | 39 +++++++++++++++++- i18n/uk/source-hashes.json | 4 +- .../current/deployment.md | 2 +- .../polyglot/server-config-reference.md | 35 +++++++++++++++- i18n/zh-Hans/source-hashes.json | 4 +- 23 files changed, 320 insertions(+), 30 deletions(-) diff --git a/docs/deployment.md b/docs/deployment.md index c973d8edf2f..3f31aeff79e 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -90,7 +90,7 @@ packet as the image tag, migration plan, and recovery evidence: | Posture area | Honest release statement | | --- | --- | | Data handling | Workflow arguments, results, history, memos, search attributes, visibility labels, command context, audit rows, exception messages, and operator notes can contain customer application data. [Workflow IDs](./defining-workflows/workflow-id.md#ids-are-visible-metadata), search attributes and labels are operator-visible metadata, not secret storage. Workflow IDs remain plaintext and are not covered by payload codecs. | -| Encryption | Use TLS for every production HTTP surface. At-rest encryption comes from your database, object storage, filesystem, queue, cache, and secret manager. The workflow package and server do not automatically encrypt each payload field. | +| Encryption | Use TLS for every production HTTP surface and configure [database TLS](./polyglot/server-config-reference.md#database-tls) on every Server role, including migrations. At-rest encryption comes from your database, object storage, filesystem, queue, cache, and secret manager. The workflow package and server do not automatically encrypt each payload field. | | Compliance | The open-source package and self-hosted server provide controls and audit evidence, not a compliance certification by themselves. Claims such as SOC 2, HIPAA, PCI, ISO, or FedRAMP belong to your own program unless a hosted offering documents otherwise. | | Audit logs | Workflow commands, schedule audit events, history export metadata, and service-call records provide durable operational evidence. They are not a complete SIEM, DLP system, immutable external ledger, or legal-hold system unless you add those components. | | Support | Role-scoped credentials, TLS termination, backups, restore rehearsal, and narrow self-serve topologies are documented here. Advanced identity, mTLS rollout, private networking, custom policy engines, provider compliance, and bespoke topology review are support-led unless public docs say otherwise. | diff --git a/docs/polyglot/server-config-reference.md b/docs/polyglot/server-config-reference.md index c21d5595b32..d43aad628dc 100644 --- a/docs/polyglot/server-config-reference.md +++ b/docs/polyglot/server-config-reference.md @@ -340,11 +340,47 @@ Durable Workflow API knobs. | --- | --- | --- | | Application | `APP_NAME`, `APP_ENV`, `APP_KEY`, `APP_DEBUG`, `APP_URL`, `APP_VERSION`, locale, timezone, maintenance, and cipher settings | Laravel application runtime identity and boot behavior. | | Logging | `LOG_CHANNEL`, `LOG_LEVEL`, `LOG_STDERR_FORMATTER`, stack, daily, Slack, and Papertrail settings | Laravel logging destinations, formatting and retention. | -| Database | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, charset, collation, and foreign-key settings | SQL state store for workflow, namespace, worker, and projection tables. | +| Database | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, `DB_SSLMODE` (`DB_SSL_MODE`), `DB_SSLROOTCERT` (`DB_SSL_ROOT_CERT`), `MYSQL_ATTR_SSL_CA`, charset, collation, and foreign-key settings | SQL state store for workflow, namespace, worker, and projection tables. See [database TLS](#database-tls). | | Redis/cache/queue | `REDIS_*`, `QUEUE_CONNECTION`, `QUEUE_FAILED_DRIVER`, `CACHE_STORE`, `CACHE_PREFIX`, `SESSION_*` | Queue workers, cache locks, long-poll signaling, and web/session runtime support. | | Filesystems/mail/broadcasting | `FILESYSTEM_DISK`, `MAIL_*`, `BROADCAST_*`, `PUSHER_*`, `AWS_*` | Framework integrations used by deployment-specific features. | | Build/runtime | `MYSQL_VERSION`, `REDIS_VERSION`, `PHP_CLI_SERVER_WORKERS`, `VITE_APP_NAME`, `BCRYPT_ROUNDS` | Docker Compose images and framework runtime behavior. | +## Database TLS {#database-tls} + +Set the same TLS settings on the API server, queue worker, bootstrap/migration +job and scheduler. PostgreSQL defaults to `prefer`; MySQL/MariaDB keep their +connection defaults when no mode is set. Neither default guarantees an +authenticated encrypted connection. + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | No TLS. | No TLS; conflicting TLS options are refused. | +| `allow`, `prefer` | Opportunistic TLS without an encryption or identity guarantee. | Refused. | +| `require` | Encryption required. | Encryption required with mysqlnd and OpenSSL. | +| `verify-ca` | Encryption and a trusted certificate chain required. | Refused: PDO mysqlnd cannot verify only the chain independently of the hostname. | +| `verify-full` | Encryption, trusted chain and matching hostname required. | Encryption, trusted chain and matching hostname required. | + +`DB_SSL_MODE` aliases `DB_SSLMODE`; `DB_SSL_ROOT_CERT` aliases +`DB_SSLROOTCERT`. For certificate verification, mount a readable CA bundle at +the configured path in **every role**, including migrations. `MYSQL_ATTR_SSL_CA` +can supply the CA for explicit MySQL/MariaDB `verify-full`. Conflicting +canonical, alias or URL settings refuse startup. Required TLS needs an explicit +TCP hostname; Unix sockets are refused. Explicit MySQL/MariaDB TLS modes need +PDO MySQL with mysqlnd and OpenSSL. + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +Use the certificate's DNS hostname. With Helm, configure +`externalDatabase.sslMode` and `externalDatabase.tls.existingSecret` / `caKey`. +Create the Secret before installation or upgrade; the chart mounts its CA in +all four roles, including the bootstrap hook. Restart persistent roles after +changing environment settings because configuration is cached at startup. + ## Container logs Set `LOG_CHANNEL=stderr` on API, worker and scheduler containers so `docker logs` diff --git a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md index d2a01d20c3d..7b78f4078df 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md @@ -49,7 +49,7 @@ Selbst gehostete Durable-Workflow-Bereitstellungen übernehmen die meisten Siche | Bereich | Sachliche Veröffentlichungsaussage | | --- | --- | | Datenverarbeitung | Workflow-Argumente, Ergebnisse, Historie, Memos, Suchattribute, Sichtbarkeitslabels, Befehlskontext, Auditzeilen, Ausnahmemeldungen und Operatornotizen können Kundenanwendungsdaten enthalten. [Workflow-IDs](./defining-workflows/workflow-id.md#ids-are-visible-metadata), Suchattribute und Labels sind operatorsichtbare Metadaten, kein Geheimnisspeicher. Workflow-IDs bleiben Klartext und werden von Nutzdaten-Codecs nicht erfasst. | -| Verschlüsselung | TLS für jede produktive HTTP-Schnittstelle verwenden. Verschlüsselung ruhender Daten stammt aus Datenbank, Objektspeicher, Dateisystem, Warteschlange, Cache und Secret Manager. Workflow-Paket und Server verschlüsseln nicht automatisch jedes Nutzdatenfeld. | +| Verschlüsselung | TLS für jede produktive HTTP-Schnittstelle verwenden und [Datenbank-TLS](./polyglot/server-config-reference.md#database-tls) für jede Server-Rolle einschließlich Migrationen konfigurieren. Verschlüsselung ruhender Daten stammt aus Datenbank, Objektspeicher, Dateisystem, Warteschlange, Cache und Secret Manager. Workflow-Paket und Server verschlüsseln nicht automatisch jedes Nutzdatenfeld. | | Compliance | Open-Source-Paket und selbst gehosteter Server liefern Maßnahmen und Auditnachweise, allein aber keine Compliance-Zertifizierung. Aussagen zu SOC 2, HIPAA, PCI, ISO oder FedRAMP gehören zu Ihrem eigenen Programm, sofern ein gehostetes Angebot nichts anderes dokumentiert. | | Auditlogs | Workflow-Befehle, Zeitplan-Auditereignisse, Historienexportmetadaten und Dienstaufrufdatensätze liefern dauerhafte Betriebsnachweise. Ohne zusätzliche Komponenten bilden sie kein vollständiges SIEM, DLP-System, unveränderliches externes Hauptbuch oder System zur rechtlichen Aufbewahrung. | | Unterstützung | Rollenbezogene Zugangsdaten, TLS-Terminierung, Sicherungen, Wiederherstellungsproben und eng begrenzte selbstständig nutzbare Topologien sind hier dokumentiert. Erweiterte Identität, mTLS-Rollout, private Netzwerke, eigene Richtlinienengines, Provider-Compliance und individuelle Topologieprüfung sind supportbegleitet, sofern öffentliche Dokumentation nichts anderes sagt. | 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 1a6c7e7ee43..230df181b3f 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 @@ -279,11 +279,48 @@ Infrastrukturvariablen konfigurieren Framework und Abhängigkeiten. Die Server-P | --- | --- | --- | | Anwendung | `APP_NAME`, `APP_ENV`, `APP_KEY`, `APP_DEBUG`, `APP_URL`, `APP_VERSION`, Sprach-, Zeitzonen-, Wartungs- und Verschlüsselungseinstellungen | Identität und Startverhalten der Laravel-Anwendung. | | Protokollierung | `LOG_CHANNEL`, `LOG_LEVEL`, `LOG_STDERR_FORMATTER`, Einstellungen für stack, daily, Slack und Papertrail | Ziele, Formatierung und Aufbewahrung der Laravel-Protokolle. | -| Datenbank | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, Zeichensatz-, Sortier- und Fremdschlüsseleinstellungen | SQL-Zustandsspeicher für Workflow-, Namespace-, Worker- und Projektionstabellen. | +| Datenbank | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, `DB_SSLMODE` (`DB_SSL_MODE`), `DB_SSLROOTCERT` (`DB_SSL_ROOT_CERT`), `MYSQL_ATTR_SSL_CA`, Zeichensatz-, Sortier- und Fremdschlüsseleinstellungen | SQL-Zustandsspeicher für Workflow-, Namespace-, Worker- und Projektionstabellen. Siehe [Datenbank-TLS](#database-tls). | | Redis/Cache/Queue | `REDIS_*`, `QUEUE_CONNECTION`, `QUEUE_FAILED_DRIVER`, `CACHE_STORE`, `CACHE_PREFIX`, `SESSION_*` | Queue-Worker, Cache-Sperren, Long-Poll-Signale und Web-/Sitzungsunterstützung. | | Dateisysteme/E-Mail/Broadcasting | `FILESYSTEM_DISK`, `MAIL_*`, `BROADCAST_*`, `PUSHER_*`, `AWS_*` | Framework-Integrationen für bereitstellungsspezifische Funktionen. | | Build/Laufzeit | `MYSQL_VERSION`, `REDIS_VERSION`, `PHP_CLI_SERVER_WORKERS`, `VITE_APP_NAME`, `BCRYPT_ROUNDS` | Docker-Compose-Images und Laufzeitverhalten des Frameworks. | +## Datenbank-TLS {#database-tls} + +Setzen Sie dieselben TLS-Einstellungen für API-Server, Queue-Worker, +Bootstrap-/Migrationsjob und Scheduler. PostgreSQL verwendet standardmäßig +`prefer`; MySQL/MariaDB behalten ohne Modus ihre Verbindungsstandards. Keiner +dieser Standards garantiert eine authentifizierte, verschlüsselte Verbindung. + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | Kein TLS. | Kein TLS; widersprüchliche TLS-Optionen werden abgelehnt. | +| `allow`, `prefer` | Opportunistisches TLS ohne Verschlüsselungs- oder Identitätsgarantie. | Abgelehnt. | +| `require` | Verschlüsselung erforderlich. | Verschlüsselung mit mysqlnd und OpenSSL erforderlich. | +| `verify-ca` | Verschlüsselung und vertrauenswürdige Zertifikatskette erforderlich. | Abgelehnt: PDO mysqlnd kann die Kette nicht unabhängig vom Hostnamen prüfen. | +| `verify-full` | Verschlüsselung, vertrauenswürdige Kette und passender Hostname erforderlich. | Verschlüsselung, vertrauenswürdige Kette und passender Hostname erforderlich. | + +`DB_SSL_MODE` ist ein Alias für `DB_SSLMODE`, `DB_SSL_ROOT_CERT` für +`DB_SSLROOTCERT`. Mounten Sie zur Zertifikatsprüfung ein lesbares CA-Bundle am +konfigurierten Pfad in **jeder Rolle**, auch für Migrationen. `MYSQL_ATTR_SSL_CA` +kann die CA für explizites MySQL-/MariaDB-`verify-full` liefern. Widersprüche +zwischen kanonischen Einstellungen, Aliasen oder URL verhindern den Start. +Erforderliches TLS braucht einen expliziten TCP-Hostnamen; Unix-Sockets werden +abgelehnt. Explizite MySQL-/MariaDB-TLS-Modi benötigen PDO MySQL mit mysqlnd und +OpenSSL. + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +Verwenden Sie den DNS-Hostnamen des Zertifikats. Konfigurieren Sie in Helm +`externalDatabase.sslMode` und `externalDatabase.tls.existingSecret` / `caKey`. +Erstellen Sie das Secret vor Installation oder Upgrade; das Chart mountet die +CA in allen vier Rollen einschließlich Bootstrap-Hook. Starten Sie dauerhafte +Rollen nach Umgebungsänderungen neu, da die Konfiguration beim Start gecacht wird. + ## Container-Protokolle {#container-logs} Setzen Sie `LOG_CHANNEL=stderr` für API-, Worker- und Scheduler-Container, damit diff --git a/i18n/de/source-hashes.json b/i18n/de/source-hashes.json index 1891da471ae..fa7887d5b55 100644 --- a/i18n/de/source-hashes.json +++ b/i18n/de/source-hashes.json @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "56cd765dd3e8b723bea69c186f10d804a6992a1ceac4e86e0c996a30f0690102", + "deployment.md": "dd7cdad024a6b8eec3d0343677f4023214040d44f997139e5fc5ec1c41d2e756", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", @@ -86,7 +86,7 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "32de05a771b5ee6d8cf54fdd408222372995ce29c8be63102abe58b977ac8ef0", "polyglot/server-api-reference.md": "e94af77a13b341d6fdc9941d4ee94e5053ab932d2e77069b238eb33351414e83", - "polyglot/server-config-reference.md": "eb62395611f09ae88fc0b6a6c8b902a7ca27e9e8b0112c89b7756b75d56186e7", + "polyglot/server-config-reference.md": "c8d110939a91c49bbea32e732a85499917bf7b1739b03eed980c129e0987049b", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", "polyglot/server.md": "7950b0c82dac2940c30b0aa042f3105dc9bdc70b524600cce4ed6d311cda7171", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", diff --git a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md index 32cbff2536d..d800cd8747f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md @@ -82,7 +82,7 @@ migración y evidencia de recuperación: | Área | Declaración honesta de publicación | | --- | --- | | Tratamiento de datos | Argumentos, resultados, historial, memos, atributos de búsqueda, etiquetas, contexto de comandos, auditoría, excepciones y notas pueden contener datos de la aplicación del cliente. Los [identificadores de workflow](./defining-workflows/workflow-id.md#ids-are-visible-metadata), atributos de búsqueda y etiquetas son metadatos visibles para operadores, no almacenes de secretos. Los identificadores siguen en texto claro y no los cubren los códecs de cargas. | -| Cifrado | Usa TLS en todas las interfaces HTTP de producción. El cifrado en reposo corresponde a tu base de datos, almacenamiento de objetos, sistema de archivos, cola, caché y gestor de secretos. El paquete y Server no cifran automáticamente cada campo de carga. | +| Cifrado | Usa TLS en todas las interfaces HTTP de producción y configura [TLS de base de datos](./polyglot/server-config-reference.md#database-tls) en cada rol del Server, incluidas las migraciones. El cifrado en reposo corresponde a tu base de datos, almacenamiento de objetos, sistema de archivos, cola, caché y gestor de secretos. El paquete y Server no cifran automáticamente cada campo de carga. | | Cumplimiento | El paquete abierto y Server autogestionado ofrecen controles y evidencia de auditoría, no una certificación. SOC 2, HIPAA, PCI, ISO o FedRAMP corresponden a tu programa salvo que una oferta alojada documente otra cosa. | | Registros de auditoría | Comandos de workflow, eventos de auditoría de programaciones, metadatos de exportación y llamadas de servicio aportan evidencia duradera. No son un SIEM completo, DLP, registro externo inmutable ni sistema de conservación legal salvo que añadas esos componentes. | | Soporte | Aquí se documentan credenciales por rol, TLS, copias, ensayos de restauración y topologías autónomas acotadas. Identidad avanzada, despliegue mTLS, redes privadas, motores de políticas propios, cumplimiento del proveedor y revisión a medida requieren soporte salvo documentación pública en contrario. | 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 62a73699c9d..4bab2cff06f 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 @@ -279,11 +279,47 @@ Las variables de infraestructura de ejecución controlan el framework y sus depe | --- | --- | --- | | Aplicación | `APP_NAME`, `APP_ENV`, `APP_KEY`, `APP_DEBUG`, `APP_URL`, `APP_VERSION`, idioma, zona horaria, mantenimiento y cifrado | Identidad y comportamiento de arranque de la aplicación Laravel. | | Registros | `LOG_CHANNEL`, `LOG_LEVEL`, `LOG_STDERR_FORMATTER`, opciones de stack, daily, Slack y Papertrail | Destinos, formato y retención de registros de Laravel. | -| Base de datos | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, juego de caracteres, cotejamiento y claves foráneas | Almacén SQL de estado para tablas de workflows, namespaces, workers y proyecciones. | +| Base de datos | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, `DB_SSLMODE` (`DB_SSL_MODE`), `DB_SSLROOTCERT` (`DB_SSL_ROOT_CERT`), `MYSQL_ATTR_SSL_CA`, juego de caracteres, cotejamiento y claves foráneas | Almacén SQL de estado para tablas de workflows, namespaces, workers y proyecciones. Consulta [TLS de base de datos](#database-tls). | | Redis/caché/cola | `REDIS_*`, `QUEUE_CONNECTION`, `QUEUE_FAILED_DRIVER`, `CACHE_STORE`, `CACHE_PREFIX`, `SESSION_*` | Workers de cola, bloqueos de caché, señales de long polling y soporte web y de sesiones. | | Archivos/correo/difusión | `FILESYSTEM_DISK`, `MAIL_*`, `BROADCAST_*`, `PUSHER_*`, `AWS_*` | Integraciones del framework usadas por funciones propias de cada despliegue. | | Compilación/ejecución | `MYSQL_VERSION`, `REDIS_VERSION`, `PHP_CLI_SERVER_WORKERS`, `VITE_APP_NAME`, `BCRYPT_ROUNDS` | Imágenes de Docker Compose y comportamiento de ejecución del framework. | +## TLS de base de datos {#database-tls} + +Configura los mismos valores TLS en el servidor API, el worker de cola, el +trabajo de inicialización/migración y el planificador. PostgreSQL usa `prefer` +por defecto; MySQL/MariaDB conservan sus valores de conexión si no se indica +modo. Ninguno garantiza una conexión cifrada y autenticada. + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | Sin TLS. | Sin TLS; se rechazan opciones TLS contradictorias. | +| `allow`, `prefer` | TLS oportunista sin garantía de cifrado o identidad. | Rechazados. | +| `require` | Cifrado obligatorio. | Cifrado obligatorio con mysqlnd y OpenSSL. | +| `verify-ca` | Cifrado y cadena de certificados de confianza obligatorios. | Rechazado: PDO mysqlnd no puede verificar solo la cadena sin verificar el hostname. | +| `verify-full` | Cifrado, cadena de confianza y hostname coincidente obligatorios. | Cifrado, cadena de confianza y hostname coincidente obligatorios. | + +`DB_SSL_MODE` es alias de `DB_SSLMODE`; `DB_SSL_ROOT_CERT`, de `DB_SSLROOTCERT`. +Para verificar certificados, monta un archivo CA legible en la ruta configurada +en **todos los roles**, incluidas las migraciones. `MYSQL_ATTR_SSL_CA` puede +aportar la CA para `verify-full` explícito en MySQL/MariaDB. Los valores +contradictorios entre nombres canónicos, alias o URL impiden el arranque. TLS +obligatorio requiere un hostname TCP explícito; se rechazan sockets Unix. Los +modos TLS explícitos de MySQL/MariaDB necesitan PDO MySQL con mysqlnd y OpenSSL. + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +Usa el nombre DNS del certificado. En Helm, configura `externalDatabase.sslMode` +y `externalDatabase.tls.existingSecret` / `caKey`. Crea el Secret antes de instalar +o actualizar; el chart monta su CA en los cuatro roles, incluido el hook de +inicialización. Reinicia los roles persistentes al cambiar el entorno: +la configuración se almacena en caché al arrancar. + ## Registros de contenedores {#container-logs} Establece `LOG_CHANNEL=stderr` en los contenedores de API, workers y planificador diff --git a/i18n/es/source-hashes.json b/i18n/es/source-hashes.json index 1891da471ae..fa7887d5b55 100644 --- a/i18n/es/source-hashes.json +++ b/i18n/es/source-hashes.json @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "56cd765dd3e8b723bea69c186f10d804a6992a1ceac4e86e0c996a30f0690102", + "deployment.md": "dd7cdad024a6b8eec3d0343677f4023214040d44f997139e5fc5ec1c41d2e756", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", @@ -86,7 +86,7 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "32de05a771b5ee6d8cf54fdd408222372995ce29c8be63102abe58b977ac8ef0", "polyglot/server-api-reference.md": "e94af77a13b341d6fdc9941d4ee94e5053ab932d2e77069b238eb33351414e83", - "polyglot/server-config-reference.md": "eb62395611f09ae88fc0b6a6c8b902a7ca27e9e8b0112c89b7756b75d56186e7", + "polyglot/server-config-reference.md": "c8d110939a91c49bbea32e732a85499917bf7b1739b03eed980c129e0987049b", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", "polyglot/server.md": "7950b0c82dac2940c30b0aa042f3105dc9bdc70b524600cce4ed6d311cda7171", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md index caf5dcfa712..92730b451b9 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md @@ -86,7 +86,7 @@ ou d'exploitation que la version d'image, les migrations et les preuves de repri | Domaine | Déclaration de publication exacte | | --- | --- | | Traitement des données | Arguments, résultats, historique, mémos, attributs de recherche, libellés de visibilité, contexte de commande, lignes d'audit, messages d'exception et notes opérateur peuvent contenir des données applicatives client. Les [identifiants de workflow](./defining-workflows/workflow-id.md#ids-are-visible-metadata), attributs de recherche et libellés sont des métadonnées visibles par l'opérateur, pas du stockage secret. Les identifiants restent en clair, hors des codecs de charge utile. | -| Chiffrement | Utilisez TLS pour toutes les interfaces HTTP de production. Le chiffrement au repos dépend de votre base, stockage objet, système de fichiers, files, cache et gestionnaire de secrets. Le paquet et le serveur ne chiffrent pas automatiquement chaque champ de charge utile. | +| Chiffrement | Utilisez TLS pour toutes les interfaces HTTP de production et configurez [TLS de la base de données](./polyglot/server-config-reference.md#database-tls) sur chaque rôle du Server, migrations comprises. Le chiffrement au repos dépend de votre base, stockage objet, système de fichiers, files, cache et gestionnaire de secrets. Le paquet et le serveur ne chiffrent pas automatiquement chaque champ de charge utile. | | Conformité | Paquet open source et serveur auto-hébergé offrent contrôles et preuves d'audit, sans constituer une certification. SOC 2, HIPAA, PCI, ISO ou FedRAMP relèvent de votre programme, sauf documentation explicite d'une offre hébergée. | | Journaux d'audit | Commandes, événements d'audit des planifications, métadonnées d'export et appels de service fournissent des preuves durables d'exploitation. Ce ne sont ni un SIEM complet, ni un système DLP, registre externe immuable ou dispositif de conservation légale sans ces composants supplémentaires. | | Assistance | Identifiants par rôle, terminaison TLS, sauvegardes, répétitions et topologies autonomes limitées sont documentés ici. Identité avancée, déploiement mTLS, réseau privé, moteurs de politiques, conformité fournisseur et topologies sur mesure restent accompagnés sauf indication publique contraire. | 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 2889d317b24..12035a537a2 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 @@ -279,11 +279,49 @@ Les variables d’infrastructure règlent le framework et ses dépendances. L’ | --- | --- | --- | | Application | `APP_NAME`, `APP_ENV`, `APP_KEY`, `APP_DEBUG`, `APP_URL`, `APP_VERSION`, langue, fuseau horaire, maintenance et chiffrement | Identité et comportement de démarrage de l’application Laravel. | | Journaux | `LOG_CHANNEL`, `LOG_LEVEL`, `LOG_STDERR_FORMATTER`, paramètres stack, daily, Slack et Papertrail | Destinations, format et conservation des journaux Laravel. | -| Base de données | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, jeu de caractères, collation et clés étrangères | Stockage SQL des tables de workflows, namespaces, workers et projections. | +| Base de données | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, `DB_SSLMODE` (`DB_SSL_MODE`), `DB_SSLROOTCERT` (`DB_SSL_ROOT_CERT`), `MYSQL_ATTR_SSL_CA`, jeu de caractères, collation et clés étrangères | Stockage SQL des tables de workflows, namespaces, workers et projections. Voir [TLS de la base de données](#database-tls). | | Redis/cache/file | `REDIS_*`, `QUEUE_CONNECTION`, `QUEUE_FAILED_DRIVER`, `CACHE_STORE`, `CACHE_PREFIX`, `SESSION_*` | Workers de file, verrous du cache, signaux long poll et prise en charge du web et des sessions. | | Systèmes de fichiers/courrier/diffusion | `FILESYSTEM_DISK`, `MAIL_*`, `BROADCAST_*`, `PUSHER_*`, `AWS_*` | Intégrations du framework utilisées par les fonctions propres au déploiement. | | Construction/exécution | `MYSQL_VERSION`, `REDIS_VERSION`, `PHP_CLI_SERVER_WORKERS`, `VITE_APP_NAME`, `BCRYPT_ROUNDS` | Images Docker Compose et comportement d’exécution du framework. | +## TLS de la base de données {#database-tls} + +Appliquez les mêmes réglages TLS au serveur API, au worker de file, au job +d'initialisation/migration et à l'ordonnanceur. PostgreSQL utilise `prefer` par +défaut ; MySQL/MariaDB conservent leurs réglages de connexion sans mode explicite. +Aucun de ces défauts ne garantit une connexion chiffrée et authentifiée. + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | Sans TLS. | Sans TLS ; les options TLS contradictoires sont refusées. | +| `allow`, `prefer` | TLS opportuniste sans garantie de chiffrement ni d'identité. | Refusés. | +| `require` | Chiffrement obligatoire. | Chiffrement obligatoire avec mysqlnd et OpenSSL. | +| `verify-ca` | Chiffrement et chaîne de certificats de confiance obligatoires. | Refusé : PDO mysqlnd ne peut pas vérifier la chaîne indépendamment du nom d'hôte. | +| `verify-full` | Chiffrement, chaîne de confiance et nom d'hôte correspondant obligatoires. | Chiffrement, chaîne de confiance et nom d'hôte correspondant obligatoires. | + +`DB_SSL_MODE` est un alias de `DB_SSLMODE` ; `DB_SSL_ROOT_CERT`, de +`DB_SSLROOTCERT`. Pour vérifier les certificats, montez un fichier CA lisible au +chemin configuré dans **chaque rôle**, migrations comprises. `MYSQL_ATTR_SSL_CA` +peut fournir la CA pour un `verify-full` explicite sur MySQL/MariaDB. Les +contradictions entre réglages canoniques, alias ou URL empêchent le démarrage. +TLS obligatoire exige un nom d'hôte TCP explicite ; les sockets Unix sont +refusés. Les modes TLS explicites de MySQL/MariaDB nécessitent PDO MySQL avec +mysqlnd et OpenSSL. + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +Utilisez le nom DNS du certificat. Avec Helm, configurez +`externalDatabase.sslMode` et `externalDatabase.tls.existingSecret` / `caKey`. +Créez le Secret avant l'installation ou la mise à niveau ; le chart monte sa +CA dans les quatre rôles, hook d'initialisation compris. Redémarrez les rôles +persistants après modification de l'environnement : la configuration est mise +en cache au démarrage. + ## Journaux des conteneurs {#container-logs} Définissez `LOG_CHANNEL=stderr` sur les conteneurs API, workers et ordonnanceur diff --git a/i18n/fr/source-hashes.json b/i18n/fr/source-hashes.json index 1891da471ae..fa7887d5b55 100644 --- a/i18n/fr/source-hashes.json +++ b/i18n/fr/source-hashes.json @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "56cd765dd3e8b723bea69c186f10d804a6992a1ceac4e86e0c996a30f0690102", + "deployment.md": "dd7cdad024a6b8eec3d0343677f4023214040d44f997139e5fc5ec1c41d2e756", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", @@ -86,7 +86,7 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "32de05a771b5ee6d8cf54fdd408222372995ce29c8be63102abe58b977ac8ef0", "polyglot/server-api-reference.md": "e94af77a13b341d6fdc9941d4ee94e5053ab932d2e77069b238eb33351414e83", - "polyglot/server-config-reference.md": "eb62395611f09ae88fc0b6a6c8b902a7ca27e9e8b0112c89b7756b75d56186e7", + "polyglot/server-config-reference.md": "c8d110939a91c49bbea32e732a85499917bf7b1739b03eed980c129e0987049b", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", "polyglot/server.md": "7950b0c82dac2940c30b0aa042f3105dc9bdc70b524600cce4ed6d311cda7171", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md index 8c54d556f1c..a4b5617d203 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md @@ -50,7 +50,7 @@ Server は Waterline を同梱・運用しません。運用 UI が必要な場 | 領域 | 正確なリリースの説明 | | --- | --- | | データ処理 | 引数、結果、履歴、メモ、検索属性、ラベル、コマンド文脈、監査行、例外文、運用注記は顧客データを含み得る。[ワークフロー ID](./defining-workflows/workflow-id.md#ids-are-visible-metadata)、属性、ラベルは見えるメタデータで、秘密保管先ではない。ID は平文でコーデック対象外。 | -| 暗号化 | 本番 HTTP は全て TLS。保存時暗号化は DB、オブジェクトストレージ、ファイルシステム、キュー、キャッシュ、秘密管理が担う。パッケージ・Server は各ペイロードフィールドを自動暗号化しない。 | +| 暗号化 | 本番 HTTP は全て TLS。マイグレーションを含む Server の全ロールで [データベース TLS](./polyglot/server-config-reference.md#database-tls) も設定する。保存時暗号化は DB、オブジェクトストレージ、ファイルシステム、キュー、キャッシュ、秘密管理が担う。パッケージ・Server は各ペイロードフィールドを自動暗号化しない。 | | コンプライアンス | OSS とセルフホストは管理機能・監査証拠を提供し、単独で認証にはならない。SOC 2、HIPAA、PCI、ISO、FedRAMP 等は、ホステッド契約で別途明記しない限り自社プログラムの責任。 | | 監査ログ | コマンド、スケジュール監査、エクスポートメタデータ、サービス呼出記録は永続証拠。追加構築なしに完全な SIEM、DLP、不変外部台帳、法的保全システムにはならない。 | | サポート | 限定ロール認証、TLS、バックアップ、復元訓練、狭いセルフサービス構成は文書化済み。高度な ID、mTLS、プライベートネットワーク、独自ポリシー、プロバイダー準拠、独自構成レビューは明示がなければサポート主導。 | 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 c7419457ff2..86ab429ede6 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 @@ -279,11 +279,47 @@ CI とデプロイ用マニフェストには `DW_V2_GUARDRAILS_BOOT` を使用 | --- | --- | --- | | アプリケーション | `APP_NAME`、`APP_ENV`、`APP_KEY`、`APP_DEBUG`、`APP_URL`、`APP_VERSION`、ロケール、タイムゾーン、メンテナンス、暗号設定 | Laravel アプリケーションの実行時識別情報と起動動作。 | | ログ | `LOG_CHANNEL`、`LOG_LEVEL`、`LOG_STDERR_FORMATTER`、スタック、日次、Slack、Papertrail の設定 | Laravel のログ出力先、形式、保持。 | -| データベース | `DB_CONNECTION`、`DB_HOST`、`DB_PORT`、`DB_DATABASE`、`DB_USERNAME`、`DB_PASSWORD`、`DB_SOCKET`、`DB_URL`、文字セット、照合順序、外部キーの設定 | ワークフロー、Namespace、Worker、プロジェクションを保存する SQL データベース。 | +| データベース | `DB_CONNECTION`、`DB_HOST`、`DB_PORT`、`DB_DATABASE`、`DB_USERNAME`、`DB_PASSWORD`、`DB_SOCKET`、`DB_URL`、`DB_SSLMODE`(`DB_SSL_MODE`)、`DB_SSLROOTCERT`(`DB_SSL_ROOT_CERT`)、`MYSQL_ATTR_SSL_CA`、文字セット、照合順序、外部キーの設定 | ワークフロー、Namespace、Worker、プロジェクションを保存する SQL データベース。[データベース TLS](#database-tls) を参照。 | | Redis・キャッシュ・キュー | `REDIS_*`、`QUEUE_CONNECTION`、`QUEUE_FAILED_DRIVER`、`CACHE_STORE`、`CACHE_PREFIX`、`SESSION_*` | キューワーカー、キャッシュロック、ロングポーリング通知、Web・セッションの実行時サポート。 | | ファイルシステム・メール・配信 | `FILESYSTEM_DISK`、`MAIL_*`、`BROADCAST_*`、`PUSHER_*`、`AWS_*` | デプロイ固有の機能で使用するフレームワーク連携。 | | ビルド・実行環境 | `MYSQL_VERSION`、`REDIS_VERSION`、`PHP_CLI_SERVER_WORKERS`、`VITE_APP_NAME`、`BCRYPT_ROUNDS` | Docker Compose のイメージとフレームワークの実行時動作。 | +## データベース TLS {#database-tls} + +API サーバー、キューワーカー、初期化・マイグレーションジョブ、スケジューラーに +同じ TLS 設定を適用してください。PostgreSQL の既定値は `prefer` です。 +MySQL/MariaDB はモード未指定時に従来の接続設定を使います。いずれの既定値も、 +認証された暗号化接続を保証しません。 + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | TLS なし。 | TLS なし。矛盾する TLS オプションは拒否。 | +| `allow`, `prefer` | 暗号化・接続先の識別を保証しない日和見的 TLS。 | 拒否。 | +| `require` | 暗号化必須。 | mysqlnd と OpenSSL による暗号化必須。 | +| `verify-ca` | 暗号化と信頼できる証明書チェーンが必須。 | 拒否。PDO mysqlnd はホスト名の検証と独立してチェーンだけを検証できない。 | +| `verify-full` | 暗号化、信頼できるチェーン、ホスト名の一致が必須。 | 暗号化、信頼できるチェーン、ホスト名の一致が必須。 | + +`DB_SSL_MODE` は `DB_SSLMODE`、`DB_SSL_ROOT_CERT` は `DB_SSLROOTCERT` の +別名です。証明書を検証する場合、マイグレーションも含む **すべてのロール** に、 +指定パスで読み取れる CA バンドルをマウントしてください。MySQL/MariaDB の明示的な +`verify-full` では `MYSQL_ATTR_SSL_CA` も CA を指定できます。正規名・別名・URL の +設定が矛盾すると起動を拒否します。必須 TLS は明示的な TCP ホスト名を必要とし、 +Unix ソケットは拒否されます。MySQL/MariaDB の明示的 TLS モードには mysqlnd と +OpenSSL を備えた PDO MySQL が必要です。 + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +証明書の DNS ホスト名を使ってください。Helm では `externalDatabase.sslMode` と +`externalDatabase.tls.existingSecret` / `caKey` を設定します。インストール・ +アップグレード前に Secret を作成してください。チャートが初期化フックを含む +全 4 ロールに CA をマウントします。起動時に設定がキャッシュされるため、 +環境設定を変更したら常駐ロールを再起動してください。 + ## コンテナのログ {#container-logs} API、ワーカー、スケジューラーの各コンテナで `LOG_CHANNEL=stderr` を設定すると、 diff --git a/i18n/ja/source-hashes.json b/i18n/ja/source-hashes.json index 1891da471ae..fa7887d5b55 100644 --- a/i18n/ja/source-hashes.json +++ b/i18n/ja/source-hashes.json @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "56cd765dd3e8b723bea69c186f10d804a6992a1ceac4e86e0c996a30f0690102", + "deployment.md": "dd7cdad024a6b8eec3d0343677f4023214040d44f997139e5fc5ec1c41d2e756", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", @@ -86,7 +86,7 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "32de05a771b5ee6d8cf54fdd408222372995ce29c8be63102abe58b977ac8ef0", "polyglot/server-api-reference.md": "e94af77a13b341d6fdc9941d4ee94e5053ab932d2e77069b238eb33351414e83", - "polyglot/server-config-reference.md": "eb62395611f09ae88fc0b6a6c8b902a7ca27e9e8b0112c89b7756b75d56186e7", + "polyglot/server-config-reference.md": "c8d110939a91c49bbea32e732a85499917bf7b1739b03eed980c129e0987049b", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", "polyglot/server.md": "7950b0c82dac2940c30b0aa042f3105dc9bdc70b524600cce4ed6d311cda7171", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", 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 2b921f21a3f..c9bcd003a87 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md @@ -91,7 +91,7 @@ migração e evidências de recuperação: | Área | Declaração fiel da release | | --- | --- | | Tratamento de dados | Argumentos, resultados, histórico, memos, atributos de busca, rótulos de visibilidade, contexto de comandos, registros de auditoria, mensagens de exceção e notas do operador podem conter dados da aplicação do cliente. [IDs de workflow](./defining-workflows/workflow-id.md#ids-are-visible-metadata), atributos de busca e rótulos são metadados visíveis ao operador, não armazenamento de segredos. IDs de workflow permanecem em texto simples e não são abrangidos por codecs de payload. | -| Criptografia | Use TLS em toda interface HTTP de produção. A criptografia em repouso vem do seu banco de dados, armazenamento de objetos, sistema de arquivos, fila, cache e gerenciador de segredos. O pacote Workflow e o servidor não criptografam automaticamente cada campo de payload. | +| Criptografia | Use TLS em toda interface HTTP de produção e configure [TLS do banco de dados](./polyglot/server-config-reference.md#database-tls) em cada papel do Server, inclusive migrações. A criptografia em repouso vem do seu banco de dados, armazenamento de objetos, sistema de arquivos, fila, cache e gerenciador de segredos. O pacote Workflow e o servidor não criptografam automaticamente cada campo de payload. | | Conformidade | O pacote de código aberto e o servidor sob sua administração fornecem controles e evidências de auditoria, não uma certificação de conformidade por si só. Alegações como SOC 2, HIPAA, PCI, ISO ou FedRAMP pertencem ao seu próprio programa, a menos que uma oferta hospedada documente o contrário. | | Logs de auditoria | Comandos de workflow, eventos de auditoria de agendamentos, metadados de exportação de histórico e registros de chamadas de serviço fornecem evidências operacionais duráveis. Eles não são um SIEM completo, sistema DLP, registro externo imutável ou sistema de retenção legal, a menos que você adicione esses componentes. | | Suporte | Credenciais com escopo por papel, terminação TLS, backups, ensaios de restauração e topologias restritas para operação por conta própria são documentados aqui. Identidade avançada, implantação de mTLS, redes privadas, mecanismos de política personalizados, conformidade de provedores e revisão de topologias sob medida são conduzidos pelo suporte, salvo indicação contrária na documentação pública. | 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 ada5b39aefd..6d3df2eb2e2 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 @@ -279,11 +279,48 @@ As variáveis de infraestrutura de execução controlam o framework e suas depen | --- | --- | --- | | Aplicação | `APP_NAME`, `APP_ENV`, `APP_KEY`, `APP_DEBUG`, `APP_URL`, `APP_VERSION`, idioma, fuso horário, manutenção e criptografia | Identidade e comportamento de inicialização da aplicação Laravel. | | Logs | `LOG_CHANNEL`, `LOG_LEVEL`, `LOG_STDERR_FORMATTER`, opções de stack, daily, Slack e Papertrail | Destinos, formatação e retenção dos logs do Laravel. | -| Banco de dados | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, conjunto de caracteres, collation e chaves estrangeiras | Armazenamento SQL de estado das tabelas de workflows, namespaces, workers e projeções. | +| Banco de dados | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, `DB_SSLMODE` (`DB_SSL_MODE`), `DB_SSLROOTCERT` (`DB_SSL_ROOT_CERT`), `MYSQL_ATTR_SSL_CA`, conjunto de caracteres, collation e chaves estrangeiras | Armazenamento SQL de estado das tabelas de workflows, namespaces, workers e projeções. Veja [TLS do banco de dados](#database-tls). | | Redis/cache/fila | `REDIS_*`, `QUEUE_CONNECTION`, `QUEUE_FAILED_DRIVER`, `CACHE_STORE`, `CACHE_PREFIX`, `SESSION_*` | Workers de fila, bloqueios de cache, sinais de long polling e suporte web e de sessões. | | Arquivos/e-mail/difusão | `FILESYSTEM_DISK`, `MAIL_*`, `BROADCAST_*`, `PUSHER_*`, `AWS_*` | Integrações do framework usadas por recursos específicos de cada implantação. | | Compilação/execução | `MYSQL_VERSION`, `REDIS_VERSION`, `PHP_CLI_SERVER_WORKERS`, `VITE_APP_NAME`, `BCRYPT_ROUNDS` | Imagens do Docker Compose e comportamento de execução do framework. | +## TLS do banco de dados {#database-tls} + +Use as mesmas configurações TLS no servidor API, worker de fila, job de +inicialização/migração e agendador. O padrão do PostgreSQL é `prefer`; +MySQL/MariaDB mantêm os padrões de conexão quando nenhum modo é definido. +Nenhum desses padrões garante uma conexão criptografada e autenticada. + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | Sem TLS. | Sem TLS; opções TLS conflitantes são recusadas. | +| `allow`, `prefer` | TLS oportunista sem garantia de criptografia ou identidade. | Recusados. | +| `require` | Criptografia obrigatória. | Criptografia obrigatória com mysqlnd e OpenSSL. | +| `verify-ca` | Criptografia e cadeia de certificados confiável obrigatórias. | Recusado: PDO mysqlnd não verifica apenas a cadeia independentemente do hostname. | +| `verify-full` | Criptografia, cadeia confiável e hostname correspondente obrigatórios. | Criptografia, cadeia confiável e hostname correspondente obrigatórios. | + +`DB_SSL_MODE` é um alias de `DB_SSLMODE`; `DB_SSL_ROOT_CERT`, de +`DB_SSLROOTCERT`. Para verificar certificados, monte um arquivo CA legível no +caminho configurado em **todos os papéis**, inclusive migrações. +`MYSQL_ATTR_SSL_CA` pode fornecer a CA para `verify-full` explícito em +MySQL/MariaDB. Conflitos entre configurações canônicas, aliases ou URL impedem +a inicialização. TLS obrigatório exige um hostname TCP explícito; sockets Unix +são recusados. Modos TLS explícitos de MySQL/MariaDB precisam de PDO MySQL com +mysqlnd e OpenSSL. + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +Use o hostname DNS do certificado. No Helm, configure `externalDatabase.sslMode` +e `externalDatabase.tls.existingSecret` / `caKey`. Crie o Secret antes da instalação +ou atualização; o chart monta sua CA nos quatro papéis, inclusive no hook de +inicialização. Reinicie os papéis persistentes após alterar o ambiente: a +configuração é armazenada em cache na inicialização. + ## Logs dos contêineres {#container-logs} Defina `LOG_CHANNEL=stderr` nos contêineres da API, dos workers e do agendador diff --git a/i18n/pt-BR/source-hashes.json b/i18n/pt-BR/source-hashes.json index 1891da471ae..fa7887d5b55 100644 --- a/i18n/pt-BR/source-hashes.json +++ b/i18n/pt-BR/source-hashes.json @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "56cd765dd3e8b723bea69c186f10d804a6992a1ceac4e86e0c996a30f0690102", + "deployment.md": "dd7cdad024a6b8eec3d0343677f4023214040d44f997139e5fc5ec1c41d2e756", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", @@ -86,7 +86,7 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "32de05a771b5ee6d8cf54fdd408222372995ce29c8be63102abe58b977ac8ef0", "polyglot/server-api-reference.md": "e94af77a13b341d6fdc9941d4ee94e5053ab932d2e77069b238eb33351414e83", - "polyglot/server-config-reference.md": "eb62395611f09ae88fc0b6a6c8b902a7ca27e9e8b0112c89b7756b75d56186e7", + "polyglot/server-config-reference.md": "c8d110939a91c49bbea32e732a85499917bf7b1739b03eed980c129e0987049b", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", "polyglot/server.md": "7950b0c82dac2940c30b0aa042f3105dc9bdc70b524600cce4ed6d311cda7171", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md index fb1d92cf192..57354a915fb 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md @@ -87,7 +87,7 @@ Kubernetes конкретного провайдера залишаються ш | Область | Чесне твердження про випуск | | --- | --- | | Обробка даних | Аргументи workflow, результати, історія, memo, пошукові атрибути, мітки видимості, контекст команд, записи аудиту, повідомлення винятків та примітки оператора можуть містити дані застосунку клієнта. [Ідентифікатори workflow](./defining-workflows/workflow-id.md#ids-are-visible-metadata), пошукові атрибути й мітки — видимі оператору метадані, а не сховище секретів. Ідентифікатори workflow залишаються відкритим текстом і не охоплюються кодеками payload. | -| Шифрування | Використовуйте TLS для кожного виробничого HTTP-інтерфейсу. Шифрування під час зберігання забезпечують ваша база, об’єктне сховище, файлова система, черга, кеш і засіб керування секретами. Пакет workflow і Server не шифрують автоматично кожне поле payload. | +| Шифрування | Використовуйте TLS для кожного виробничого HTTP-інтерфейсу й налаштуйте [TLS бази даних](./polyglot/server-config-reference.md#database-tls) у кожній ролі Server, включно з міграціями. Шифрування під час зберігання забезпечують ваша база, об’єктне сховище, файлова система, черга, кеш і засіб керування секретами. Пакет workflow і Server не шифрують автоматично кожне поле payload. | | Відповідність вимогам | Пакет із відкритим кодом і власний Server надають механізми й підтвердження аудиту, а не сертифікацію відповідності самі по собі. Твердження про SOC 2, HIPAA, PCI, ISO або FedRAMP належать вашій програмі, якщо керована пропозиція не документує інше. | | Журнали аудиту | Команди workflow, події аудиту розкладів, метадані експорту історії та записи викликів служб надають стійкі операційні підтвердження. Вони не є повноцінною SIEM, DLP, незмінним зовнішнім реєстром або системою юридичного збереження даних, якщо ви не додасте ці компоненти. | | Підтримка | Тут документовано облікові дані з обмеженням за ролями, завершення TLS, резервні копії, репетиції відновлення та вузькі самостійні топології. Розширене керування ідентичністю, розгортання mTLS, приватна мережа, власні рушії політик, відповідність провайдера й індивідуальна перевірка топології потребують участі підтримки, якщо публічні документи не визначають інше. | 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 886893bf6b8..3822d8bc566 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 @@ -337,11 +337,48 @@ workers, які виконують ті самі workflows. | --- | --- | --- | | Застосунок | `APP_NAME`, `APP_ENV`, `APP_KEY`, `APP_DEBUG`, `APP_URL`, `APP_VERSION`, locale, timezone, налаштування maintenance і cipher | Ідентичність runtime Laravel-застосунку та поведінка старту. | | Логування | `LOG_CHANNEL`, `LOG_LEVEL`, `LOG_STDERR_FORMATTER`, налаштування stack, daily, Slack та Papertrail | Напрямки, формат і термін зберігання журналів Laravel. | -| База даних | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, налаштування charset, collation та foreign keys | SQL-сховище стану таблиць workflow, namespace, worker і projections. | +| База даних | `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `DB_SOCKET`, `DB_URL`, `DB_SSLMODE` (`DB_SSL_MODE`), `DB_SSLROOTCERT` (`DB_SSL_ROOT_CERT`), `MYSQL_ATTR_SSL_CA`, налаштування charset, collation та foreign keys | SQL-сховище стану таблиць workflow, namespace, worker і projections. Див. [TLS бази даних](#database-tls). | | Redis/cache/queue | `REDIS_*`, `QUEUE_CONNECTION`, `QUEUE_FAILED_DRIVER`, `CACHE_STORE`, `CACHE_PREFIX`, `SESSION_*` | Queue workers, cache locks, long-poll signals і підтримка web/session runtime. | | Файлові системи/пошта/broadcasting | `FILESYSTEM_DISK`, `MAIL_*`, `BROADCAST_*`, `PUSHER_*`, `AWS_*` | Інтеграції фреймворку для особливостей конкретного розгортання. | | Build/runtime | `MYSQL_VERSION`, `REDIS_VERSION`, `PHP_CLI_SERVER_WORKERS`, `VITE_APP_NAME`, `BCRYPT_ROUNDS` | Docker Compose images та поведінка runtime фреймворку. | +## TLS бази даних {#database-tls} + +Задайте однакові параметри TLS для API-сервера, воркера черги, завдання +початкового налаштування/міграції та планувальника. PostgreSQL за замовчуванням +використовує `prefer`; MySQL/MariaDB без явного режиму зберігають стандартні +налаштування з'єднання. Жоден із цих варіантів не гарантує автентифіковане +зашифроване з'єднання. + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | Без TLS. | Без TLS; суперечливі параметри TLS відхиляються. | +| `allow`, `prefer` | Опортуністичний TLS без гарантії шифрування чи ідентичності. | Відхиляються. | +| `require` | Шифрування обов'язкове. | Шифрування з mysqlnd та OpenSSL обов'язкове. | +| `verify-ca` | Обов'язкові шифрування та довірений ланцюжок сертифікатів. | Відхиляється: PDO mysqlnd не перевіряє лише ланцюжок незалежно від імені хоста. | +| `verify-full` | Обов'язкові шифрування, довірений ланцюжок та відповідність імені хоста. | Обов'язкові шифрування, довірений ланцюжок та відповідність імені хоста. | + +`DB_SSL_MODE` є псевдонімом `DB_SSLMODE`, а `DB_SSL_ROOT_CERT` — +`DB_SSLROOTCERT`. Для перевірки сертифікатів змонтуйте доступний для читання +CA-файл за налаштованим шляхом у **кожній ролі**, включно з міграціями. +`MYSQL_ATTR_SSL_CA` може задавати CA для явного `verify-full` у MySQL/MariaDB. +Суперечності між основними параметрами, псевдонімами або URL зупиняють запуск. +Обов'язковий TLS потребує явного TCP-імені хоста; Unix-сокети відхиляються. +Явні TLS-режими MySQL/MariaDB потребують PDO MySQL із mysqlnd та OpenSSL. + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +Використовуйте DNS-ім'я із сертифіката. У Helm налаштуйте +`externalDatabase.sslMode` та `externalDatabase.tls.existingSecret` / `caKey`. +Створіть Secret до встановлення чи оновлення; чарт монтує CA в усіх чотирьох +ролях, включно з хуком початкового налаштування. Після змін середовища перезапустіть +постійні ролі: конфігурація кешується під час запуску. + ## Журнали контейнерів {#container-logs} Задайте `LOG_CHANNEL=stderr` у контейнерах API, воркерів і планувальника, щоб diff --git a/i18n/uk/source-hashes.json b/i18n/uk/source-hashes.json index 1891da471ae..fa7887d5b55 100644 --- a/i18n/uk/source-hashes.json +++ b/i18n/uk/source-hashes.json @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "56cd765dd3e8b723bea69c186f10d804a6992a1ceac4e86e0c996a30f0690102", + "deployment.md": "dd7cdad024a6b8eec3d0343677f4023214040d44f997139e5fc5ec1c41d2e756", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", @@ -86,7 +86,7 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "32de05a771b5ee6d8cf54fdd408222372995ce29c8be63102abe58b977ac8ef0", "polyglot/server-api-reference.md": "e94af77a13b341d6fdc9941d4ee94e5053ab932d2e77069b238eb33351414e83", - "polyglot/server-config-reference.md": "eb62395611f09ae88fc0b6a6c8b902a7ca27e9e8b0112c89b7756b75d56186e7", + "polyglot/server-config-reference.md": "c8d110939a91c49bbea32e732a85499917bf7b1739b03eed980c129e0987049b", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", "polyglot/server.md": "7950b0c82dac2940c30b0aa042f3105dc9bdc70b524600cce4ed6d311cda7171", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", 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 24e637668f5..ae62f9d5484 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md @@ -49,7 +49,7 @@ Durable Workflow v2 支持多种自托管形态。选择与你运维环境相符 | 方面 | 如实的发布说明 | | --- | --- | | 数据处理 | 工作流参数、结果、历史、memo、搜索属性、可见性标签、命令上下文、审计行、异常消息和操作人员备注都可能包含客户应用数据。[工作流 ID](./defining-workflows/workflow-id.md#ids-are-visible-metadata)、搜索属性和标签是操作人员可见的元数据,不是密钥存储。工作流 ID 保持明文,不受负载编解码器保护。 | -| 加密 | 每个生产 HTTP 接口均使用 TLS。静态加密来自数据库、对象存储、文件系统、队列、缓存和密钥管理器。工作流软件包与 Server 不自动加密每个负载字段。 | +| 加密 | 每个生产 HTTP 接口均使用 TLS,并为 Server 的每个角色(包括迁移任务)配置[数据库 TLS](./polyglot/server-config-reference.md#database-tls)。静态加密来自数据库、对象存储、文件系统、队列、缓存和密钥管理器。工作流软件包与 Server 不自动加密每个负载字段。 | | 合规 | 开源软件包和自托管 Server 提供控制措施及审计证据,本身不构成合规认证。除非托管产品另有说明,SOC 2、HIPAA、PCI、ISO 或 FedRAMP 等声明属于你自己的合规计划。 | | 审计日志 | 工作流命令、计划审计事件、历史导出元数据和服务调用记录提供持久操作证据。除非自行添加相应组件,否则它们不是完整 SIEM、DLP 系统、不可变外部账本或法律保全系统。 | | 支持 | 本页记录按角色限定权限的凭据、TLS 终止、备份、恢复演练和范围明确的自助拓扑。除非公开文档另有说明,高级身份、mTLS 发布、私有网络、自定义策略引擎、提供商合规和定制拓扑审查均需支持团队指导。 | 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 a2aa709835a..a2f38079281 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 @@ -279,11 +279,44 @@ Server 镜像内置 `durable-workflow/workflow`,因此也提供包级 `DW_V2_* | --- | --- | --- | | 应用 | `APP_NAME`、`APP_ENV`、`APP_KEY`、`APP_DEBUG`、`APP_URL`、`APP_VERSION`、区域、时区、维护及加密设置 | Laravel 应用的运行时标识与启动行为。 | | 日志 | `LOG_CHANNEL`、`LOG_LEVEL`、`LOG_STDERR_FORMATTER`、堆栈、每日、Slack 与 Papertrail 设置 | Laravel 日志输出位置、格式与保留。 | -| 数据库 | `DB_CONNECTION`、`DB_HOST`、`DB_PORT`、`DB_DATABASE`、`DB_USERNAME`、`DB_PASSWORD`、`DB_SOCKET`、`DB_URL`、字符集、排序规则及外键设置 | 存储工作流、命名空间、Worker 及投影表的 SQL 状态库。 | +| 数据库 | `DB_CONNECTION`、`DB_HOST`、`DB_PORT`、`DB_DATABASE`、`DB_USERNAME`、`DB_PASSWORD`、`DB_SOCKET`、`DB_URL`、`DB_SSLMODE`(`DB_SSL_MODE`)、`DB_SSLROOTCERT`(`DB_SSL_ROOT_CERT`)、`MYSQL_ATTR_SSL_CA`、字符集、排序规则及外键设置 | 存储工作流、命名空间、Worker 及投影表的 SQL 状态库。参见[数据库 TLS](#database-tls)。 | | Redis、缓存与队列 | `REDIS_*`、`QUEUE_CONNECTION`、`QUEUE_FAILED_DRIVER`、`CACHE_STORE`、`CACHE_PREFIX`、`SESSION_*` | 队列 Worker、缓存锁、长轮询信号和 Web/会话运行时支持。 | | 文件系统、邮件与广播 | `FILESYSTEM_DISK`、`MAIL_*`、`BROADCAST_*`、`PUSHER_*`、`AWS_*` | 部署特有功能使用的框架集成。 | | 构建与运行时 | `MYSQL_VERSION`、`REDIS_VERSION`、`PHP_CLI_SERVER_WORKERS`、`VITE_APP_NAME`、`BCRYPT_ROUNDS` | Docker Compose 镜像及框架运行行为。 | +## 数据库 TLS {#database-tls} + +为 API 服务器、队列 Worker、初始化/迁移任务和调度器配置相同的 TLS 设置。 +PostgreSQL 默认为 `prefer`;MySQL/MariaDB 未指定模式时保留原有连接默认值。 +这些默认值都不能保证经过身份验证的加密连接。 + +| `DB_SSLMODE` | PostgreSQL | MySQL / MariaDB | +| --- | --- | --- | +| `disable` | 不使用 TLS。 | 不使用 TLS;拒绝冲突的 TLS 选项。 | +| `allow`, `prefer` | 机会式 TLS,不保证加密或身份验证。 | 拒绝。 | +| `require` | 必须加密。 | 必须通过 mysqlnd 和 OpenSSL 加密。 | +| `verify-ca` | 必须加密并验证受信任的证书链。 | 拒绝:PDO mysqlnd 无法脱离主机名验证而单独验证证书链。 | +| `verify-full` | 必须加密、验证受信任的证书链并匹配主机名。 | 必须加密、验证受信任的证书链并匹配主机名。 | + +`DB_SSL_MODE` 是 `DB_SSLMODE` 的别名,`DB_SSL_ROOT_CERT` 是 `DB_SSLROOTCERT` +的别名。验证证书时,应在 **每个角色**(包括迁移任务)中,将可读的 CA 文件挂载到 +配置的路径。MySQL/MariaDB 显式使用 `verify-full` 时,也可用 `MYSQL_ATTR_SSL_CA` +提供 CA。规范变量、别名或 URL 设置冲突会阻止启动。必须使用 TLS 时,需要明确的 +TCP 主机名,不能使用 Unix 套接字。MySQL/MariaDB 的显式 TLS 模式需要带有 mysqlnd +和 OpenSSL 的 PDO MySQL。 + +```dotenv +DB_CONNECTION=pgsql +DB_HOST=database.example.com +DB_SSLMODE=verify-full +DB_SSLROOTCERT=/run/database-ca/ca.pem +``` + +使用证书中的 DNS 主机名。Helm 部署应配置 `externalDatabase.sslMode` 和 +`externalDatabase.tls.existingSecret` / `caKey`。安装或升级前先创建 Secret; +chart 会将其 CA 挂载到全部四个角色,包括初始化钩子。 +环境设置更改后应重启常驻角色,因为启动时会缓存配置。 + ## 容器日志 {#container-logs} 在 API、worker 和调度器容器中设置 `LOG_CHANNEL=stderr`,让 `docker logs` diff --git a/i18n/zh-Hans/source-hashes.json b/i18n/zh-Hans/source-hashes.json index 1891da471ae..fa7887d5b55 100644 --- a/i18n/zh-Hans/source-hashes.json +++ b/i18n/zh-Hans/source-hashes.json @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "56cd765dd3e8b723bea69c186f10d804a6992a1ceac4e86e0c996a30f0690102", + "deployment.md": "dd7cdad024a6b8eec3d0343677f4023214040d44f997139e5fc5ec1c41d2e756", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", @@ -86,7 +86,7 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "32de05a771b5ee6d8cf54fdd408222372995ce29c8be63102abe58b977ac8ef0", "polyglot/server-api-reference.md": "e94af77a13b341d6fdc9941d4ee94e5053ab932d2e77069b238eb33351414e83", - "polyglot/server-config-reference.md": "eb62395611f09ae88fc0b6a6c8b902a7ca27e9e8b0112c89b7756b75d56186e7", + "polyglot/server-config-reference.md": "c8d110939a91c49bbea32e732a85499917bf7b1739b03eed980c129e0987049b", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", "polyglot/server.md": "7950b0c82dac2940c30b0aa042f3105dc9bdc70b524600cce4ed6d311cda7171", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27",