Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/validate-translations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
- "openapi/**"
- "package.json"
- "account/**"
- "company/**"
- "admin-api/**"
- "api-reference/**"
- "components/**"
Expand Down
118 changes: 118 additions & 0 deletions company/security.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
---
title: Security
description: How Trophy protects customer data, controls access, and approaches compliance.
og:description: How Trophy protects customer data, controls access, and approaches compliance.
icon: shield-check
---

## Data Residency {#data-residency}

All customer data is stored and processed on cloud infrastructure hosted in London within GDPR compliance.

Other data residency options are available. [Contact support](mailto:support@trophy.so) to discuss them.

## Data Security {#data-security}

### Encryption {#encryption}

| Control area | Status | Notes |
| --- | --- | --- |
| Encryption in transit (TLS 1.2+) | In place | All API and web traffic uses HTTPS/TLS. |
| Encryption at rest | In place | Application volumes are encrypted. |
| Database encryption at rest | In place | Database volumes and cache stores are encrypted. |
| Secrets management | In place | Environment variables are stored in secure vaults. |

### Data Classification {#data-classification}

Trophy processes the following categories of end-user data:

- User identifiers (anonymous external IDs provided by customers)
- Time zone identifiers (IANA)
- Gamification event data (actions, points, leaderboard ranks, timestamps, and similar events)
- Notification preferences (push notification and email subscription flags)

By default, Trophy does not store personally identifiable information (PII) directly. It is possible to send the following PII to Trophy, but it is not required:

- User name
- Email address

It is also possible to send custom attributes (customer-managed key-value pairs attached to users and events) to Trophy with PII-status determined by the customer use case.

Trophy processes the following categories of customer data:

- Customer account and billing information

Trophy does not have access to customer passwords or credit card data.

### Data Retention and Deletion {#data-retention-and-deletion}

- Customer data is retained for the duration of the contract and deleted within 30 days of contract termination on written request.
- You can request deletion of your data at any time by contacting [support@trophy.so](mailto:support@trophy.so).

### Backups {#backups}

- Daily automated snapshots of all databases
- Restore procedures are tested annually

## Access Controls {#access-controls}

### Internal Access {#internal-access}

| Control area | Status | Notes |
| --- | --- | --- |
| Role-based access control (RBAC) | In place | Enabled on all cloud providers |
| Multi-factor authentication (MFA) | In place | Enabled on all cloud providers |
| SSO / identity provider | In place | Enabled on relevant internal systems |
| Access reviews | In place | Reviewed annually |

### Principle of Least Privilege {#principle-of-least-privilege}

All internal access follows least-privilege principles. Engineers are granted access only to the systems required for their role. Production database access is restricted to senior engineers and requires justification.

### Customer Data Isolation {#customer-data-isolation}

Each customer's data is isolated using customer-scoped API keys and row-level filtering. Customers can only access their own data.

## Application Security {#application-security}

### Development Practices {#development-practices}

- All production code undergoes mandatory peer review before merge.
- Branch protection policies enforce this at the repository level, preventing direct commits.
- Dependency vulnerabilities are monitored continuously through GitHub security alerts.
- Secrets are never committed to source control.

### Vulnerability Management {#vulnerability-management}

| Control area | Status | Notes |
| --- | --- | --- |
| Dependency vulnerability scanning | In place | Automated on builds |
| Security patch SLA | In place | Critical patches applied within 24 hours |

### API Security {#api-security}

- All API access requires authenticated API keys scoped to the customer account.
- API keys can be rotated and revoked at any time in the Trophy dashboard.
- API keys are encrypted before they are stored in the database.
- Rate limiting is applied to all API endpoints to prevent abuse.
- Webhook signature verification is under customer control. Trophy recommends [verifying signatures](/webhooks/security) in webhook endpoints.

### Web Application Security {#web-application-security}

- Access to the Trophy dashboard is secured by an identity provider that holds an independent SOC 2 Type II certification. The identity provider manages user authentication, including credential storage, session management, and token issuance. Trophy does not store or handle raw user passwords.
- Dashboard access follows the principle of least privilege. Admin accounts grant and revoke access for other members.
- Multi-factor authentication (MFA) for customer accounts is available [on request](mailto:support@trophy.so).
- Single sign-on (SSO) for customer accounts is available [on request](mailto:support@trophy.so).
- Sessions use short-lived JWT tokens with automatic expiry.
- Customer accounts are fully isolated at the data layer. Authenticated sessions are scoped to the issuing organisation and cannot access data belonging to other customers.
- Application development follows the OWASP Top 10 as a baseline for identifying and mitigating common web application vulnerabilities, including injection attacks, broken authentication, and security misconfiguration.

## GDPR {#gdpr}

- Trophy acts as a data processor for customer data under GDPR.
- Trophy is fully compliant with all GDPR practices and procedures for data handling.
- We are happy to enter into a Data Processing Agreement (DPA) with customers. Request one from your account contact.

<Note>
Contact [support@trophy.so](mailto:hello@trophy.so) for a copy of our full security and trust policies.
</Note>
12 changes: 12 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,12 @@
"account/branding",
"account/billing"
]
},
{
"group": "Company",
"pages": [
"company/security"
]
}
]
},
Expand Down Expand Up @@ -527,6 +533,12 @@
"es/account/branding",
"es/account/billing"
]
},
{
"group": "Empresa",
"pages": [
"es/company/security"
]
}
]
},
Expand Down
120 changes: 120 additions & 0 deletions es/company/security.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
---
title: Seguridad
description: Cómo Trophy protege los datos de los clientes, controla el acceso y
aborda el cumplimiento normativo.
og:description: Cómo Trophy protege los datos de los clientes, controla el
acceso y aborda el cumplimiento normativo.
icon: shield-check
---

## Residencia de datos {#data-residency}

Todos los datos de clientes se almacenan y procesan en infraestructura en la nube alojada en Londres dentro del cumplimiento de GDPR.

Hay otras opciones de residencia de datos disponibles. [Contacta con soporte](mailto:support@trophy.so) para discutirlas.

## Seguridad de datos {#data-security}

### Cifrado {#encryption}

| Área de control | Estado | Notas |
| --- | --- | --- |
| Cifrado en tránsito (TLS 1.2+) | Implementado | Todo el tráfico de API y web utiliza HTTPS/TLS. |
| Cifrado en reposo | Implementado | Los volúmenes de aplicación están cifrados. |
| Cifrado de base de datos en reposo | Implementado | Los volúmenes de base de datos y almacenes de caché están cifrados. |
| Gestión de secretos | Implementado | Las variables de entorno se almacenan en bóvedas seguras. |

### Clasificación de datos {#data-classification}

Trophy procesa las siguientes categorías de datos de usuario final:

- Identificadores de usuario (IDs externos anónimos proporcionados por los clientes)
- Identificadores de zona horaria (IANA)
- Datos de eventos de gamificación (acciones, puntos, rangos de clasificación, marcas de tiempo y eventos similares)
- Preferencias de notificación (indicadores de suscripción a notificaciones push y correo electrónico)

Por defecto, Trophy no almacena información de identificación personal (PII) directamente. Es posible enviar la siguiente PII a Trophy, pero no es obligatorio:

- Nombre de usuario
- Dirección de correo electrónico

También es posible enviar atributos personalizados (pares clave-valor gestionados por el cliente adjuntos a usuarios y eventos) a Trophy con el estado de PII determinado por el caso de uso del cliente.

Trophy procesa las siguientes categorías de datos de cliente:

- Información de cuenta de cliente y facturación

Trophy no tiene acceso a las contraseñas de clientes ni a los datos de tarjetas de crédito.

### Retención y Eliminación de Datos {#data-retention-and-deletion}

- Los datos de clientes se retienen durante la vigencia del contrato y se eliminan dentro de los 30 días posteriores a la terminación del contrato mediante solicitud por escrito.
- Puede solicitar la eliminación de sus datos en cualquier momento contactando a [support@trophy.so](mailto:support@trophy.so).

### Copias de Seguridad {#backups}

- Instantáneas automatizadas diarias de todas las bases de datos
- Los procedimientos de restauración se prueban anualmente

## Controles de Acceso {#access-controls}

### Acceso Interno {#internal-access}

| Área de control | Estado | Notas |
| --- | --- | --- |
| Control de acceso basado en roles (RBAC) | Implementado | Habilitado en todos los proveedores de nube |
| Autenticación multifactor (MFA) | Implementado | Habilitado en todos los proveedores de nube |
| SSO / proveedor de identidad | Implementado | Habilitado en sistemas internos relevantes |
| Revisiones de acceso | Implementado | Revisado anualmente |

### Principio de Mínimo Privilegio {#principle-of-least-privilege}

Todo el acceso interno sigue los principios de mínimo privilegio. A los ingenieros se les concede acceso únicamente a los sistemas requeridos para su rol. El acceso a la base de datos de producción está restringido a ingenieros senior y requiere justificación.

### Aislamiento de Datos de Clientes {#customer-data-isolation}

Los datos de cada cliente están aislados mediante claves API con alcance de cliente y filtrado a nivel de fila. Los clientes solo pueden acceder a sus propios datos.

## Seguridad de la Aplicación {#application-security}

### Prácticas de Desarrollo {#development-practices}

- Todo el código de producción se somete a revisión obligatoria por pares antes de la fusión.
- Las políticas de protección de ramas lo aplican a nivel de repositorio, evitando commits directos.
- Las vulnerabilidades de dependencias se monitorean continuamente mediante alertas de seguridad de GitHub.
- Los secretos nunca se incluyen en el control de versiones.

### Gestión de vulnerabilidades {#vulnerability-management}

| Área de control | Estado | Notas |
| --- | --- | --- |
| Escaneo de vulnerabilidades de dependencias | Implementado | Automatizado en compilaciones |
| SLA de parches de seguridad | Implementado | Parches críticos aplicados en 24 horas |

### Seguridad de API {#api-security}

- Todo acceso a la API requiere claves de API autenticadas con ámbito limitado a la cuenta del cliente.
- Las claves de API pueden rotarse y revocarse en cualquier momento desde el panel de Trophy.
- Las claves de API se cifran antes de almacenarse en la base de datos.
- Se aplica un límite de solicitudes a todos los endpoints de la API para prevenir abusos.
- La verificación de firma de webhooks está bajo control del cliente. Trophy recomienda [verificar las firmas](/es/webhooks/security) en los endpoints de webhook.

### Seguridad de aplicaciones web {#web-application-security}

- El acceso al panel de Trophy está protegido por un proveedor de identidad que posee una certificación SOC 2 Type II independiente. El proveedor de identidad gestiona la autenticación de usuarios, incluyendo el almacenamiento de credenciales, la gestión de sesiones y la emisión de tokens. Trophy no almacena ni maneja contraseñas de usuario sin procesar.
- El acceso al panel sigue el principio de mínimo privilegio. Las cuentas de administrador otorgan y revocan el acceso de otros miembros.
- La autenticación multifactor (MFA) para cuentas de clientes está disponible [bajo solicitud](mailto:support@trophy.so).
- El inicio de sesión único (SSO) para cuentas de clientes está disponible [bajo solicitud](mailto:support@trophy.so).
- Las sesiones utilizan tokens JWT de corta duración con vencimiento automático.
- Las cuentas de clientes están completamente aisladas en la capa de datos. Las sesiones autenticadas tienen un ámbito limitado a la organización emisora y no pueden acceder a datos pertenecientes a otros clientes.
- El desarrollo de aplicaciones sigue el OWASP Top 10 como base para identificar y mitigar vulnerabilidades comunes de aplicaciones web, incluyendo ataques de inyección, autenticación rota y configuración de seguridad incorrecta.

## GDPR {#gdpr}

- Trophy actúa como procesador de datos para los datos de clientes según el GDPR.
- Trophy cumple completamente con todas las prácticas y procedimientos del GDPR para el manejo de datos.
- Estamos encantados de firmar un Acuerdo de Procesamiento de Datos (DPA) con los clientes. Solicite uno a su contacto de cuenta.

<Note>
Contacte a [support@trophy.so](mailto:hello@trophy.so) para obtener una copia de nuestras políticas completas de seguridad y confianza.
</Note>
1 change: 1 addition & 0 deletions i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"mdx": {
"include": [
"account/*.mdx",
"company/*.mdx",
"admin-api/*.mdx",
"admin-api/endpoints/points/*.mdx",
"admin-api/endpoints/streaks/*.mdx",
Expand Down
43 changes: 43 additions & 0 deletions i18n.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7192,3 +7192,46 @@ checksums:
content/12: af0feb53dc5665ddb60c7e0bf27f5ba1
content/13: 10e8e9a59847ddd720c6d06b12c7b120
content/14: 9799b973234bf2d10d5c971b267f55a5
b12885456ed1864406f2ce97d9fcddac:
meta/title: 4b34923fef858a2b9a4a914c3e822889
meta/description: cabe1c4819aac67ef4b216de43e848e6
meta/og%3Adescription: cabe1c4819aac67ef4b216de43e848e6
meta/icon: 4411b430bd6f32cc473899fddcb3723f
content/0: 3de1446c907ea726449066f005efbbdc
content/1: 9c1114c4a96b56a9d36988082867fb9a
content/2: 4e3c48254394049468fe51313878c9e3
content/3: 5345c4f922a2fb7b0c8654a3471989ac
content/4: 7f8a1ceae4b9cda385fc79e56c4fcd93
content/5: 31033ba8cdf5b12a289c069c149b9618
content/6: 7e1deea7042cec2e7d80abd039257a4f
content/7: fc09f49ee728df9d3412ffe86066112c
content/8: 1fd67040516c1a712dc4eabd87830166
content/9: c918d347b35b89f41c6eeb2810bd483f
content/10: 2408230c588d05860fd25eb5f55c5338
content/11: f697719766521a2389365f4396dd788c
content/12: a322dd8d71d623c966d4880559e6dbfe
content/13: 936a355223019fb8c5ae7a9dcc39b045
content/14: 42fbb7764e9f8e74494535ecc9f9a2ca
content/15: ca443c8a177297c51e283907a020f726
content/16: 7b7766cdf904710cd5fa26dc0b3b2503
content/17: 462eb78cca682d5fa8dd12ded276a715
content/18: 8146f2ae449691abbe568d9d6645d865
content/19: 925161c9f0b0ac4cfa57b1b63f255791
content/20: 200f0452d03f8d59d1dce97effbaf556
content/21: 86b43935a5c916acf781559c8431d13b
content/22: ea606c6c2f769dee430d565c78b2384b
content/23: 6dd4920577fbdb678338e268ed1cccbb
content/24: b15e392a1cba3f8edc8e36774ff53997
content/25: e1ff7669de34060bd8e56c2f721582c1
content/26: 1eae55014550f66fcf7a968314867700
content/27: bf188985846fd00d2bf4026f379164a4
content/28: 500e899b0e6e8243b8e4a0bbb5726ab4
content/29: 486a211700e759f0e8f8d475aa8855ba
content/30: 3f272c95744ed4401623dad9c324ec8a
content/31: 01bc5f76f5b827cfb45076830a219a7a
content/32: 9497354d005936b3c6052488b8e0bd24
content/33: f4c9e69fe46c374a0836f8c348908518
content/34: 8e6479dac30c04886d317cb99924e942
content/35: f787576def79d901e78006d8ec376ef5
content/36: 68256a2c31bee1a8202cc744b404e9ea
content/37: bb510f929be90e357007553f458c4a92
1 change: 1 addition & 0 deletions styles/config/vocabularies/Trophy/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ localStorage
shadcn
agentic
sandboxed
misconfiguration

# Markdown rich text
_[\w\s]+_
Expand Down
Loading