| Metadato | Valor |
|---|---|
| Versión / Version | 1 |
| Estado / Status | Borrador pendiente de revisión legal / Draft pending legal review |
| URI / URI | https://docs.docuten.com/earchiving/practice-statement/v1 |
| Dónde se cita / Where it is cited | Matriz de conformidad docs/governance/cen-ts-18170-matrix.md (fila de PRE-06) |
| Decisiones / Decisions | D-06, D-08 (06.9-CONTEXT.md) |
| Fecha / Date | 2026-11-10 |
Pendiente de revisión legal. Este texto es un borrador técnico. No es un contrato ni lo sustituye, y no debe tratarse como versión publicada hasta que lo haya revisado la persona responsable de su validez jurídica. El rol que lo aprueba es el responsable interno del servicio; la asesoría externa informa, pero no firma esta aprobación.
Pending legal review. This text is a technical draft. It is not a contract and does not replace one, and it must not be treated as a published version until the person responsible for its legal validity has reviewed it. The approving role is the service's internal owner; external counsel advises but does not sign this approval.
La URI es un identificador estable; no es una URL que haya que resolver. Su publicación en
docs.docuten.com la gestiona DevOps bajo PRE-07.
The URI is a stable identifier, not a URL that must be resolved. Its publication on
docs.docuten.com is handled by DevOps under PRE-07.
Este documento describe lo que el servicio Docuten eArchiving hace hoy. No promete cumplimiento más allá de lo que describe: cada sección dice qué se declara, qué queda fuera y qué requisito lo cierra.
This document describes what the Docuten eArchiving service does today. It does not promise compliance beyond what it describes: each section states what is declared, what is left out and which requirement closes it.
Las secciones que solo cubren una parte de lo exigido abren con un aviso fijo. INTERINO marca una
declaración provisional que un requisito posterior completará; el aviso lista, en este orden, qué se
declara hoy, qué queda excluido, qué lo cierra y la fila del Excel de cobertura a la que responde.
Sections that cover only part of what is required open with a fixed notice. INTERIM marks a
provisional declaration that a later requirement will complete; the notice lists, in this order,
what is declared today, what is excluded, what closes it and the coverage spreadsheet row it
answers.
INTERINO / INTERIM
- Qué se declara hoy: el contenido viaja cifrado por TLS hasta el borde del servicio. Todo blob que el servicio escribe en Azure Blob, tanto el staging del envío como el AIP, se cifra en el cliente con AES-256-GCM (cifrado de cliente de Azure, versión 2.1; clase
EnvelopeEncryptionService, métodos de escrituraAzureBlobAdapter#putStagingyAzureBlobAdapter#putAip) antes de salir hacia Azure. Cada blob lleva su propia clave de contenido (CEK), envuelta por una clave de cifrado de claves (KEK) propia de cada tenant (KekProvider). Los metadatos de la base de datos están aislados por tenant con seguridad a nivel de fila forzada (FORCE RLS,TenantRlsAspect). En preproducción y producción, la conexión a PostgreSQL exige TLS con verificación del servidor (sslmode=verify-full,DatabaseConnectionGuard); PRE-08 declara cobertura parcial de esta capa, porque no hay private endpoints.- Qué queda excluido: (a) la mitad «hasta su eliminación» de la confidencialidad que pide el apartado 7.6 del anexo del Reglamento de Ejecución (UE) 2025/2532, es decir, el borrado criptográfico por AIP (crypto-shredding), que espera a la decisión de retención; (b) el procesamiento transitorio en claro dentro del pod durante la saga de ingesta, descrito en el párrafo siguiente; y (c) la terminación TLS y mTLS del borde, que se configura en el ingress fuera de este repositorio y figura como pendiente de confirmación por Ops en
docs/ops/mtls-ingress-checklist.md.- Qué lo cierra: B-13 (retención y crypto-shredding, hito posterior) cierra la pata de eliminación. Los límites (b) y (c) no tienen cierre planificado: se declaran como límites.
- Fila del Excel: REQ-7.6-01.
- What is declared today: content travels over TLS up to the service edge. Every blob the service writes to Azure Blob, both the submission staging and the AIP, is encrypted client-side with AES-256-GCM (Azure client-side encryption, version 2.1; class
EnvelopeEncryptionService, write methodsAzureBlobAdapter#putStagingandAzureBlobAdapter#putAip) before it leaves for Azure. Each blob has its own content encryption key (CEK), wrapped by a per-tenant key encryption key (KEK) (KekProvider). Database metadata is isolated per tenant with forced row-level security (FORCE RLS,TenantRlsAspect). In pre-production and production, the PostgreSQL connection requires TLS with server verification (sslmode=verify-full,DatabaseConnectionGuard); PRE-08 declares partial coverage of this layer, because there are no private endpoints.- What is excluded: (a) the "until deletion" half of the confidentiality required by section 7.6 of the annex to Implementing Regulation (EU) 2025/2532, that is, per-AIP crypto-shredding, which awaits the retention decision; (b) transient cleartext processing inside the pod during the ingest saga, described in the next paragraph; and (c) TLS and mTLS termination at the edge, configured in the ingress outside this repository and listed as pending confirmation by Ops in
docs/ops/mtls-ingress-checklist.md.- What closes it: B-13 (retention and crypto-shredding, a later milestone) closes the deletion leg. Limits (b) and (c) have no planned closure: they are declared as limits.
- Spreadsheet row: REQ-7.6-01.
En resumen: cifrado en reposo desde la primera escritura a Blob; procesamiento transitorio en claro dentro del pod durante la saga.
In short: encryption at rest from the first write to Blob; transient cleartext processing inside the pod during the saga.
Durante la saga de ingesta, el servicio descarga el SIP de staging, lo descifra y lo escribe en
ficheros temporales del sistema de ficheros del pod. Lo hace para validarlo
(SipValidatedTasklet), identificar formatos (FormatIdentifiedTasklet, que además copia cada
fichero a un temporal propio para el identificador de formatos), validar firmas
(DigitalSignatureValidatedTasklet, que también escribe en temporal el contenedor de informes de
validación), comprobar la fixity declarada (FixityCheckTasklet), leer la metadata del inventario
(SipAipInventoryStep), construir el AIP (InformationPackageCreatedTasklet), calcular su huella
(MessageDigestCalculatedTasklet) y fusionar los artefactos de preservación
(EncryptionTasklet). En la ruta /file, el servicio escribe además los ficheros recibidos y el SIP
que construye a partir de ellos en un directorio temporal de trabajo (IngestController#uploadFile,
SipBuilderService).
During the ingest saga, the service downloads the SIP from staging, decrypts it and writes it to
temporary files on the pod's file system. It does so to validate it (SipValidatedTasklet),
identify formats (FormatIdentifiedTasklet, which also copies each file to its own temporary file
for the format identifier), validate signatures (DigitalSignatureValidatedTasklet, which also
writes the validation report container to a temporary file), check the declared fixity
(FixityCheckTasklet), read the inventory metadata (SipAipInventoryStep), build the AIP
(InformationPackageCreatedTasklet), compute its digest (MessageDigestCalculatedTasklet) and
merge the preservation artefacts (EncryptionTasklet). On the /file route, the service also
writes the received files and the SIP it builds from them to a temporary working directory
(IngestController#uploadFile, SipBuilderService).
En todos esos sitios, los ficheros y directorios temporales se eliminan en un bloque finally al
terminar el paso, también cuando el paso falla. El borrado es de mejor esfuerzo: si una eliminación
falla, el servicio lo registra en el log y no la reintenta. El multipart de la petición de /file
puede volcarse a disco temporal según la configuración del contenedor de servlets; su borrado lo
gestiona el propio contenedor y no está verificado. Sobre ninguno de estos temporales hay cifrado de
aplicación. Si el proceso muere antes del borrado, pueden quedar en el almacenamiento efímero del pod
hasta que este se recicle (no verificado).
In all those places, temporary files and directories are deleted in a finally block when the
step ends, including when the step fails. Deletion is best-effort: if a deletion fails, the service
logs it and does not retry it. The multipart body of the /file request may be spilled to temporary
disk depending on the servlet container's configuration; its deletion is handled by the container
itself and is not verified. None of these temporary files has application-level encryption. If the
process dies before deletion, they may remain in the pod's ephemeral storage until the pod is
recycled (not verified).
El control de acceso de mínimo privilegio queda remitido, solo por identificador, a los requisitos ACC-01, ACC-02, ACC-03, ACC-04 y ACC-05: «fase de control de acceso planificada en backlog, no cubierta por este documento». Este documento no describe su contenido ni lo declara.
Least-privilege access control is referred, by identifier only, to requirements ACC-01, ACC-02, ACC-03, ACC-04 and ACC-05: an access control phase planned in the backlog, not covered by this document. This document neither describes nor declares their content.
La retención y la eliminación de los paquetes archivados quedan fuera del alcance de este documento. El no-borrado durante el periodo contratado se declara en el acuerdo de servicio tipo (sección 4, «Conservación sin borrado durante el periodo contratado»), no aquí. La decisión de retención, y con ella el borrado criptográfico por AIP, corresponde a un hito posterior (B-13).
Retention and deletion of archived packages are outside the scope of this document. Non-deletion during the contracted period is declared in the service agreement template (section 4, "Retention without deletion during the contracted period"), not here. The retention decision, and with it per-AIP crypto-shredding, belongs to a later milestone (B-13).
El modelo OAIS del servicio (qué SIP acepta, cómo guarda el AIP y cómo entrega el DIP) se publica en
un documento propio, https://docs.docuten.com/earchiving/oais-model/v1
(docs/governance/oais-model-v1.md), que se versiona aparte. Ese documento abre con un aviso PARCIAL:
la pata del acuerdo de depósito queda excluida hasta B-04. Este documento no reproduce su contenido.
The service's OAIS model (which SIP it accepts, how it stores the AIP and how it delivers the DIP)
is published in its own document, https://docs.docuten.com/earchiving/oais-model/v1
(docs/governance/oais-model-v1.md), versioned separately. That document opens with a PARTIAL
notice: the deposit agreement leg is excluded until B-04. This document does not reproduce its
content.
La política criptográfica del servicio vive en una única fuente,
https://docs.docuten.com/earchiving/crypto-policy/v1. Este documento remite a ella y no duplica su
texto.
The service's cryptographic policy lives in a single source,
https://docs.docuten.com/earchiving/crypto-policy/v1. This document refers to it and does not
duplicate its text.
Los términos contractuales del servicio se recogen en el acuerdo de servicio tipo,
https://docs.docuten.com/earchiving/service-agreement-template/v1, que está en borrador pendiente
de aprobación. Mientras no se apruebe y publique, no vincula; este documento no afirma lo contrario.
The service's contractual terms are set out in the service agreement template,
https://docs.docuten.com/earchiving/service-agreement-template/v1, which is a draft pending
approval. Until it is approved and published it is not binding; this document does not claim
otherwise.
| Sección | Estado | Requisito dueño | Referencia ETSI |
|---|---|---|---|
| 2. Protección de la confidencialidad desde la entrada del documento | declarado | PRE-06 | referencia ETSI: por identificar (ACC-04) |
| 3. Control de acceso | fuera de alcance | ACC-01, ACC-02, ACC-03, ACC-04, ACC-05 | referencia ETSI: por identificar (ACC-04) |
| 4. Retención y eliminación | fuera de alcance | B-13 | referencia ETSI: por identificar (ACC-04) |
| 5. Modelo OAIS | declarado | PRE-09 | referencia ETSI: por identificar (ACC-04) |
| 6. Política criptográfica | declarado | PRE-05 | referencia ETSI: por identificar (ACC-04) |
| 7. Condiciones y acuerdo de servicio | pendiente | ING-07, DECL-01, DECL-02 | referencia ETSI: por identificar (ACC-04) |
Los estados son tres: declarado (la sección declara lo que el servicio hace hoy, con su aviso si es
interina), pendiente (la declaración existe en borrador y espera aprobación) y fuera de alcance
(este documento no la cubre). La columna ETSI no cita cláusulas: ACC-04 identificará primero, con
fuente, la versión aplicable de cada norma.
The states are three: declared (the section declares what the service does today, with its
notice if interim), pending (the declaration exists as a draft awaiting approval) and out of
scope (this document does not cover it). The ETSI column cites no clauses: ACC-04 will first
identify, with a source, the applicable version of each standard.
| Declaración | Qué se declara hoy | Qué queda excluido | Qué lo cierra | Fila del Excel |
|---|---|---|---|---|
| PRE-06 — Confidencialidad desde la entrada del documento (INTERINO) | Cifrado TLS hasta el borde; cifrado de cliente AES-256-GCM de todo blob con KEK por tenant; FORCE RLS por tenant; TLS verificado a PostgreSQL en preproducción y producción | La pata «hasta su eliminación» (crypto-shredding por AIP); el procesamiento transitorio en claro en el pod; la terminación TLS y mTLS del borde, pendiente de confirmación por Ops | B-13 para la pata de eliminación; los otros dos límites, sin cierre planificado | REQ-7.6-01 |
| Control de acceso — ACC-01, ACC-02, ACC-03, ACC-04, ACC-05 | Nada: se remite por identificador | Todo su contenido | La fase de control de acceso planificada en backlog | ver ACC-01..05 |
Declarations pending: PRE-06 (INTERIM) declares edge TLS, client-side AES-256-GCM encryption of every blob with a per-tenant KEK, per-tenant FORCE RLS and verified TLS to PostgreSQL in pre-production and production; it excludes the deletion leg, transient cleartext processing in the pod and edge TLS/mTLS termination; B-13 closes the deletion leg; spreadsheet row REQ-7.6-01. Access control (ACC-01 to ACC-05) is referred by identifier only and closed by the planned access control phase.