Repolode
apache

apache/casbin

Biblioteca de controle de acesso em Go que aplica políticas de autorização ACL, RBAC e ABAC configuradas por arquivos de modelo e de políticas.

Estrelas
20,482
Forks
1,767
Issues abertas
39
Último commit
há 3 dias

O que é?

O Apache Casbin é uma biblioteca de autorização para projetos em Go. Ela avalia se um sujeito pode executar uma ação sobre um objeto, com base em um modelo de controle de acesso definido em um arquivo de configuração e em um conjunto de regras de política. Como o modelo fica em um arquivo de configuração, mudar o esquema de autorização geralmente exige editar a configuração, em vez de reescrever o código da aplicação.

A biblioteca oferece suporte a ACL, RBAC (incluindo hierarquias de papéis, papéis de recurso e papéis por domínio ou tenant), ABAC com atributos de recursos, correspondência de caminhos e métodos RESTful, regras de precedência de negação e prioridades de regras. As políticas podem ser carregadas de arquivos ou de um banco de dados por meio de adapters, e APIs de gerenciamento em tempo de execução e uma API específica para RBAC permitem que as aplicações alterem permissões sem reiniciar. O próprio Casbin cuida da aplicação das regras e do armazenamento de políticas; ele não gerencia usuários, senhas nem autenticação.

O projeto faz parte da Apache Software Foundation. Há implementações relacionadas para Java, Node.js, PHP, Python, .NET, C++ e Rust, e o projeto oferece um editor online para criar modelos e políticas.

Recursos principais

  • 01Oferece suporte a modelos de controle de acesso ACL, RBAC, ABAC, RESTful, com precedência de negação e baseados em prioridades.
  • 02Define modelos de controle de acesso em um arquivo de configuração baseado na metamodelo PERM.
  • 03Carrega e armazena políticas por meio de adapters conectáveis, como os de bancos de dados.
  • 04Oferece APIs de gerenciamento e RBAC para alterar permissões em tempo de execução.
  • 05Inclui operadores de correspondência integrados, como keyMatch, para padrões de caminhos de recursos.
  • 06Oferece variantes sincronizadas do enforcer para uso concorrente.

Casos de uso

  • Adicionar verificações de permissão baseadas em papéis a um serviço web ou API em Go.
  • Aplicar regras multi-tenant em que os usuários têm papéis diferentes em cada tenant.
  • Expressar regras baseadas em atributos, como permitir que apenas o proprietário de um recurso o edite.
  • Gerenciar permissões por meio de uma interface administrativa que atualiza políticas em tempo de execução.

Início rápido

  1. 1

    Instale a biblioteca com Go modules

    go get github.com/casbin/casbin/v3
  2. 2

    Crie um Enforcer a partir de um arquivo de modelo e de um arquivo de políticas

  3. 3

    Chame Enforce no seu código antes de cada acesso para verificar a solicitação

Antes de usar

  • O Enforcer não é seguro para uso concorrente. Portanto, Enforcers compartilhados que mudam em tempo de execução precisam das variantes sincronizadas.
  • A biblioteca não cuida da autenticação nem gerencia usuários e funções, então seu app deve fornecer esses recursos.

Tópicos

Perguntas frequentes

O que é casbin?
Biblioteca de controle de acesso em Go que aplica políticas de autorização ACL, RBAC e ABAC configuradas por arquivos de modelo e de políticas. O Apache Casbin é uma biblioteca de autorização para projetos em Go. Ela avalia se um sujeito pode executar uma ação sobre um objeto, com base em um modelo de controle de acesso definido em um arquivo de configuração e em um conjunto de regras de política. Como o modelo fica em um arquivo de configuração, mudar o esquema de autorização geralmente exige editar a configuração, em vez de reescrever o código da aplicação.
casbin é gratuito? Qual é a licença?
casbin é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
casbin ainda é mantido?
Manutenção ativa. O último commit de casbin foi em 4 de nov. de 2026.
Para que posso usar casbin?
Adicionar verificações de permissão baseadas em papéis a um serviço web ou API em Go. Aplicar regras multi-tenant em que os usuários têm papéis diferentes em cada tenant. Expressar regras baseadas em atributos, como permitir que apenas o proprietário de um recurso o edite. Gerenciar permissões por meio de uma interface administrativa que atualiza políticas em tempo de execução.
Como instalar casbin?
Instale a biblioteca com Go modules: go get github.com/casbin/casbin/v3 Crie um Enforcer a partir de um arquivo de modelo e de um arquivo de políticas Chame Enforce no seu código antes de cada acesso para verificar a solicitação
Onde consigo casbin?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/apache/casbin

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados