El problema que todos ya vivimos

¿Te ha pasado que necesitas darle acceso a un compañero nuevo, a un pipeline de CI/CD, o — más reciente — a un agente de IA que va a tocar tu infra? La tentación siempre es la misma: "dale un token de Admin y ya". Pero ahí rompes el principio de menor privilegio de una forma brutal. Un token filtrado con Workers Scripts Edit significaba acceso a TODOS los Workers de tu cuenta. Incluso el que sirve producción. 😱

Cloudflare acaba de lanzar control de acceso por Worker con cuatro roles nuevas, que te permiten escopar hasta un recurso específico. Es el primer paso hacia un modelo de autorización consistente en toda la Developer Platform (D1, R2 y KV vienen en camino).

Vamos a ver qué cambió en la práctica y cómo migrar sin romper tu pipeline. ¡Vamos a darle! 🚀

Cloudflare dashboard showing granular Worker-level role assignment for team members and AI agents Programming Illustration

Las cuatro roles nuevas

En lugar de ese blob genérico de "Workers Admin", ahora eliges una role (qué puede hacer) y un scope (en qué recursos).

RoleQué permiteCuándo usarla
Metadata Read-OnlyVer listas, settings, métricas, logs y traces. Sin acceso al contenido.Agente de debug o guardia que necesita observabilidad, pero no el código.
Content Read-OnlyLeer código del Worker / contenido de D1. Sin escritura.Bots de code review, auditoría de seguridad, dev nuevo en el equipo.
EditorLeer + escribir contenido y actualizar settings. No crea ni borra.Tokens de CI/CD, agentes que hacen deploy.
AdminControl total, incluyendo borrar y otorgar acceso.Dueño de un Worker específico, nada más.

Scopes: tres niveles

Cada role se puede aplicar en uno de estos niveles:

  • Developer Platform — todos los recursos de la plataforma.
  • Producto — todos los recursos de un producto (ej: todos los Workers).
  • Recurso — un Worker específico, una DB D1, un bucket.

Creando un token escopado a un Worker

En el dashboard, al crear el token, seleccionas el Worker como scope. El wrangler.toml sigue igual — quien limita el daño es el token, no el archivo:

# wrangler.toml
name = "mi-worker"
main = "src/index.ts"
compatibility_date = "2024-09-23"

# La ruta es permiso aparte — necesitas
# Workers Routes en la zona para tocar esto.
[[routes]]
pattern = "ejemplo.mx/*"
zone_name = "ejemplo.mx"
# Crea un token escopado a UN Worker con role Editor
# (dashboard: Manage Account > Members > API Tokens)
export CLOUDFLARE_API_TOKEN="<token-escopado>"

# Este deploy solo toca mi-worker, aunque el token se filtre.
npx wrangler deploy

Durable Objects heredan del Worker

Durable Objects no tienen roles propias. El acceso viene del Worker que los implementa. Para debuggear un DO, dale Metadata Read-Only al Worker. Para consultar o modificar estado vía Data Studio, necesita Editor.

Developer configuring API token with Editor role scoped to a single Cloudflare Worker Technical Structure Concept

Mapa de migración: roles viejas → nuevas

Cloudflare no va a deprecar las roles viejas (por ahora), pero conviene migrar ya — solo las nuevas soportan scope a nivel de recurso.

Role viejaRole nueva recomendada
Workers Platform (Read-Only)Developer Platform Content Read-Only
Workers Platform AdminDeveloper Platform Admin
Workers Scripts ReadContent Read-Only
Workers Scripts EditEditor
Workers CI ReadContent Read-Only
Workers CI EditEditor
Workers Observability ReadMetadata Read-Only
Workers Observability EditEditor
Workers Observability Telemetry EditEditor
Workers Tail ReadMetadata Read-Only

Límites y trampas 🧐

  • Rutas y Custom Domains son permiso aparte. Editar una ruta requiere Editor en el Worker + Workers Routes en la zona. Es intencional — no quieres que un token de CI redirija tráfico de producción en silencio.
  • Deploys que no tocan rutas son seguros. Una vez configurada la ruta, el CI puede subir nuevas versiones sin acceso a la zona.
  • Datos de Durable Object están detrás de Editor. Metadata Read-Only no te deja inspeccionar estado vía Data Studio.
  • Sin fecha de deprecación de las roles viejas. Asignaciones existentes siguen funcionando, pero pierdes el beneficio del scope.
  • Errores 403 mejores. Ahora las APIs linkean a la doc exacta de permisos — útil cuando tu agente necesita autodiagnosticarse.

Próximos pasos

  1. Audita tus tokens de API. Todo token con Workers Scripts Edit es candidato a convertirse en Editor + scope en Worker.
  2. Crea User Groups para equipos con el mismo patrón de acceso, en vez de asignar persona por persona.
  3. Re-tokeniza tu CI/CD. Cada pipeline tiene su propio Editor escopado al Worker que despliega.
  4. Escopea tus agentes. Si el agente solo debuggea, dale Metadata Read-Only — no Editor.
  5. Pon atención al rollout de D1 / R2 / KV. Las mismas cuatro roles van a aplicar; ya estandariza tu nomenclatura.

Referencia completa en la documentación de autorización de Cloudflare Workers.

Cloudflare Workers permissions diagram showing Metadata Read-Only, Content Read-Only, Editor and Admin scopes IT Technology Image

El punto real

Lo interesante de este release no son las cuatro roles — tabla de RBAC es aburrida. Es que Cloudflare está tratando a los agentes de IA como identidades de primera clase, que merecen tokens propios y escopados. Es un cambio silencioso pero importante: el modelo de amenaza ahora incluye actores no-humanos que llaman tus APIs por su cuenta.

Si ya corres agentes contra tu infra, esto es obligatorio en tu stack. Si aún no, empieza escopeando los tokens del CI — la disciplina es la misma.

Lee también

Este contenido fue redactado con la asistencia de herramientas de IA, basándose en fuentes confiables, y fue revisado por nuestro equipo editorial antes de su publicación. No reemplaza el asesoramiento de un profesional especializado.