Servicio de autorización de código abierto inspirado en Google Zanzibar para crear controles de acceso RBAC, ReBAC y ABAC detallados, fuera del código de la aplicación.
apache/casbin
Biblioteca de control de acceso para Go que aplica políticas de autorización ACL, RBAC y ABAC configuradas mediante archivos de modelo y políticas.
- Estrellas
- 20,482
- Forks
- 1,767
- Issues abiertos
- 39
- Último commit
- hace 3 días
¿Qué es?
Apache Casbin es una biblioteca de autorización para proyectos Go. Evalúa si un sujeto puede realizar una acción sobre un objeto, según un modelo de control de acceso definido en un archivo de configuración y un conjunto de reglas de política. Como el modelo se encuentra en un archivo de configuración, cambiar el esquema de autorización suele requerir modificar la configuración en lugar de reescribir el código de la aplicación.
La biblioteca admite ACL, RBAC (incluidas jerarquías de roles, roles de recursos y roles por dominio o inquilino), ABAC mediante atributos de recursos, coincidencia de rutas y métodos RESTful, reglas de prioridad de denegación y prioridades. Las políticas se pueden cargar desde archivos o desde una base de datos mediante adaptadores; además, las API de gestión en tiempo de ejecución y una API específica de RBAC permiten que las aplicaciones cambien los permisos sin reiniciarse. Casbin se encarga de aplicar las políticas y almacenarlas; no gestiona usuarios, contraseñas ni autenticación.
El proyecto forma parte de Apache Software Foundation. Hay implementaciones hermanas para Java, Node.js, PHP, Python, .NET, C++ y Rust, y el proyecto ofrece un editor en línea para escribir modelos y políticas.
Funciones clave
- 01Admite modelos de control de acceso ACL, RBAC, ABAC y RESTful, además de reglas de prioridad de denegación y basadas en prioridades.
- 02Define modelos de control de acceso en un archivo de configuración basado en el metamodelo PERM.
- 03Carga y almacena políticas mediante adaptadores conectables, como los de bases de datos.
- 04Proporciona API de gestión y de RBAC para cambiar permisos en tiempo de ejecución.
- 05Incluye operadores de coincidencia integrados, como keyMatch, para patrones de rutas de recursos.
- 06Ofrece variantes de enforcer sincronizadas para uso concurrente.
Casos de uso
- Añadir comprobaciones de permisos basadas en roles a un servicio web o una API en Go.
- Aplicar reglas multiinquilino en las que los usuarios tienen roles diferentes según el inquilino.
- Expresar reglas basadas en atributos, como permitir que solo el propietario de un recurso lo edite.
- Gestionar permisos desde una interfaz de administración que actualice las políticas en tiempo de ejecución.
Inicio rápido
- 1
Instala la biblioteca con Go modules
go get github.com/casbin/casbin/v3 - 2
Crea un Enforcer a partir de un archivo de modelo y uno de políticas
- 3
Llama a Enforce en tu código antes de cada acceso para comprobar la solicitud
Antes de usarlo
- Enforcer no es seguro para el uso concurrente, por lo que los Enforcer compartidos que cambien en tiempo de ejecución necesitan las variantes sincronizadas.
- La biblioteca no gestiona la autenticación ni administra usuarios y roles, así que tu aplicación debe encargarse de ello.
Temas
Preguntas frecuentes
- ¿Qué es casbin?
- Biblioteca de control de acceso para Go que aplica políticas de autorización ACL, RBAC y ABAC configuradas mediante archivos de modelo y políticas. Apache Casbin es una biblioteca de autorización para proyectos Go. Evalúa si un sujeto puede realizar una acción sobre un objeto, según un modelo de control de acceso definido en un archivo de configuración y un conjunto de reglas de política. Como el modelo se encuentra en un archivo de configuración, cambiar el esquema de autorización suele requerir modificar la configuración en lugar de reescribir el código de la aplicación.
- ¿casbin es gratuito? ¿Qué licencia tiene?
- casbin es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿casbin sigue mantenido?
- Mantenimiento activo. El último commit de casbin fue el 4 nov 2026.
- ¿Para qué puedo usar casbin?
- Añadir comprobaciones de permisos basadas en roles a un servicio web o una API en Go. Aplicar reglas multiinquilino en las que los usuarios tienen roles diferentes según el inquilino. Expresar reglas basadas en atributos, como permitir que solo el propietario de un recurso lo edite. Gestionar permisos desde una interfaz de administración que actualice las políticas en tiempo de ejecución.
- ¿Cómo se instala casbin?
- Instala la biblioteca con Go modules: go get github.com/casbin/casbin/v3 Crea un Enforcer a partir de un archivo de modelo y uno de políticas Llama a Enforce en tu código antes de cada acceso para comprobar la solicitud
- ¿Dónde consigo casbin?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/apache/casbin
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Paquete de Laravel para guardar usuarios, roles y permisos en la base de datos y comprobarlos mediante el gate de Laravel.
Motor de autorización autohospedado (PDP) que evalúa políticas YAML para determinar quién puede realizar qué acciones sobre qué recursos.
Un motor de políticas de propósito general que permite escribir reglas de autorización y cumplimiento en Rego y evaluarlas desde servicios, Kubernetes y otros sistemas.
Una capa de datos para TypeScript con un ORM compatible con Prisma, control de acceso integrado y generación automática de APIs CRUD y hooks de TanStack Query.
Monorepo oficial de bibliotecas cliente de Supabase para Python, con consultas a Postgres, autenticación, almacenamiento, realtime y edge functions.