Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
casbin — Biblioteca de autorização que aplica modelos de controle de acesso ACL, RBAC, ABAC e personalizados, com APIs RESTful de correspondência e gerenciamento de políticas para aplicações e serviços. | Kitploit
Ferramentas/GitHubGitHub/apache/casbin
Autenticação e AutorizaçãoGerenciamento de IdentidadesGerenciamento de Identidade e Acesso (IAM)Segurança de API
GitHubapache/casbin

casbin

Biblioteca de autorização que aplica modelos de controle de acesso ACL, RBAC, ABAC e personalizados, com APIs RESTful de correspondência e gerenciamento de políticas para aplicações e serviços.

Ver Repositório
20.3k1.8khá 2 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

Apache Casbin

Lint Build Coverage Status Godoc Release Discord

Notícias: ainda se preocupa em como escrever a política correta do Apache Casbin? O Apache Casbin online editor está chegando para ajudar! Experimente em: https://casbin.apache.org/editor/

Logotipo do Casbin

O Apache Casbin é uma biblioteca de controle de acesso de código aberto, poderosa e eficiente, para projetos Golang. Ela fornece suporte para aplicar autorização com base em vários modelos de controle de acesso.

Todos os idiomas suportados pelo Apache Casbin:

Índice

  • Modelos suportados
  • Como funciona?
  • Recursos
  • Instalação
  • Documentação
  • Editor online
  • Tutoriais
  • Começando
  • Gerenciamento de políticas
  • Persistência de políticas
  • Consistência de políticas entre múltiplos nós
  • Gerenciador de papéis
  • Benchmarks
  • Exemplos
  • Middlewares
  • Nossos adotantes

Modelos suportados

  1. ACL (Lista de Controle de Acesso)
  2. ACL com superusuário
  3. ACL sem usuários: especialmente útil para sistemas que não possuem autenticação ou logins de usuário.
  4. ACL sem recursos: alguns cenários podem ter como alvo um tipo de recursos em vez de um recurso individual, usando permissões como write-article, read-log. Isso não controla o acesso a um artigo ou log específico.
  5. RBAC (Controle de Acesso Baseado em Papéis)
  6. RBAC com papéis de recursos: tanto usuários quanto recursos podem ter papéis (ou grupos) ao mesmo tempo.
  7. RBAC com domínios/tenants: os usuários podem ter diferentes conjuntos de papéis para diferentes domínios/tenants.
  8. ABAC (Controle de Acesso Baseado em Atributos): açúcar sintático como resource.Owner pode ser usado para obter o atributo de um recurso.
  9. RESTful: suporta caminhos como /res/*, /res/:id e métodos HTTP como GET, POST, , .

Como funciona?

No Casbin, um modelo de controle de acesso é abstraído em um arquivo CONF baseado no metamodelo PERM (Policy, Effect, Request, Matchers). Dessa forma, alternar ou atualizar o mecanismo de autorização de um projeto é tão simples quanto modificar uma configuração. Você pode personalizar seu próprio modelo de controle de acesso combinando os modelos disponíveis. Por exemplo, você pode obter papéis RBAC e atributos ABAC juntos dentro de um único modelo e compartilhar um mesmo conjunto de regras de política.

O modelo mais básico e simples no Casbin é o ACL. O CONF do modelo ACL é:

root@kitploit:~
# Request definition
[request_definition]
r = sub, obj, act

# Policy definition
[policy_definition]
p = sub, obj, act

# Policy effect
[policy_effect]
e = some(where (p.eft == allow))

# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

Um exemplo de política para o modelo ACL é:

root@kitploit:~
p, alice, data1, read
p, bob, data2, write

Isso significa:

  • alice pode ler data1
  • bob pode escrever data2

Também suportamos o modo multilinha adicionando '\' ao final:

root@kitploit:~
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj \
  && r.act == p.act

Além disso, se você estiver usando ABAC, pode tentar o operador in da seguinte forma na edição golang do Casbin (jCasbin e Node-Casbin ainda não são suportados):

root@kitploit:~
# Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')

Mas você DEVE garantir que o comprimento do array seja MAIOR que 1; caso contrário, isso causará um panic.

Para mais operadores, você pode dar uma olhada em govaluate

Recursos

O que o Apache Casbin faz:

  1. aplicar a política na forma clássica {subject, object, action} ou em uma forma personalizada, conforme você definiu; autorizações de permitir e negar são suportadas.
  2. lidar com o armazenamento do modelo de controle de acesso e da sua política.
  3. gerenciar os mapeamentos entre papéis e usuários e entre papéis e papéis (também conhecidos como hierarquia de papéis no RBAC).
  4. suportar superusuário integrado como root ou administrator. Um superusuário pode fazer qualquer coisa sem permissões explícitas.
  5. múltiplos operadores integrados para suportar a correspondência de regras. Por exemplo, keyMatch pode mapear uma chave de recurso /foo/bar para o padrão /foo*.

O que o Apache Casbin NÃO faz:

  1. autenticação (ou seja, verificar username e password quando um usuário faz login)
  2. gerenciar a lista de usuários ou papéis. Acredito que seja mais conveniente para o próprio projeto gerenciar essas entidades. Usuários geralmente têm suas senhas, e o Apache Casbin não foi projetado para ser um contêiner de senhas. No entanto, o Apache Casbin armazena o mapeamento entre usuários e papéis para o cenário RBAC.

Instalação

root@kitploit:~
go get github.com/casbin/casbin/v3

Documentação

https://casbin.apache.org/docs/overview

Editor online

Você também pode usar o editor online (https://casbin.apache.org/editor/) para escrever seu modelo e política do Casbin no seu navegador. Ele fornece funcionalidades como syntax highlighting e code completion, assim como uma IDE para uma linguagem de programação.

Tutoriais

https://casbin.apache.org/docs/tutorials

Começando

  1. Crie um novo enforcer do Casbin com um arquivo de modelo e um arquivo de política:

    root@kitploit:~
    e, _ := casbin.NewEnforcer("path/to/model.conf", "path/to/policy.csv")
    

Nota: você também pode inicializar um enforcer com política no banco de dados em vez de arquivo; consulte a seção Persistência de políticas para obter detalhes.

  1. Adicione um hook de enforcement ao seu código logo antes de o acesso ocorrer:

    root@kitploit:~
    sub := "alice" // the user that wants to access a resource.
    obj := "data1" // the resource that is going to be accessed.
    act := "read" // the operation that the user performs on the resource.
    
    if res, _ := e.Enforce(sub, obj, act); res {
        // permit alice to read data1
    } else {
        // deny the request, show an error
    }
    
  2. Além do arquivo de política estático, o Apache Casbin também fornece uma API para gerenciamento de permissões em tempo de execução. Por exemplo, você pode obter todos os papéis atribuídos a um usuário da seguinte forma:

    root@kitploit:~
    roles, _ := e.GetImplicitRolesForUser(sub)
    

Consulte APIs de gerenciamento de políticas para mais usos.

Gerenciamento de políticas

O Apache Casbin fornece dois conjuntos de APIs para gerenciar permissões:

  • Management API: a API básica que fornece suporte completo para o gerenciamento de políticas do Apache Casbin.
  • RBAC API: uma API mais amigável para RBAC. Esta API é um subconjunto da Management API. Os usuários de RBAC podem usar esta API para simplificar o código.

Também fornecemos uma interface web para gerenciamento de modelos e de políticas:

editor de modelos

editor de políticas

Persistência de políticas

https://casbin.apache.org/docs/adapters

Consistência de políticas entre múltiplos nós

https://casbin.apache.org/docs/watchers

Gerenciador de papéis

https://casbin.apache.org/docs/role-managers

Benchmarks

https://casbin.apache.org/docs/benchmark

Exemplos

Middlewares

Middlewares de autorização para frameworks web: https://casbin.apache.org/docs/middlewares

Nossos adotantes

https://casbin.apache.org/docs/adopters

Como Contribuir

Leia o guia de contribuição.

Colaboradores

Este projeto existe graças a todas as pessoas que contribuem.

Histórico de Estrelas

Star History Chart

Licença

Este projeto está licenciado sob a licença Apache 2.0.

Contato

Se você tiver algum problema ou solicitação de recurso, entre em contato conosco. PRs são bem-vindos.

  • https://github.com/apache/casbin/issues
  • https://discord.gg/S5UjpzGZjN
Baixar ferramenta
golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
pronto para produçãopronto para produçãopronto para produçãopronto para produção
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
pronto para produçãopronto para produçãopronto para produçãopronto para produção
PUT
DELETE
  • Deny-override: autorizações de permitir e negar são suportadas; a negação sobrescreve a permissão.
  • Prioridade: as regras de política podem ser priorizadas como regras de firewall.
  • ModeloArquivo de modeloArquivo de política
    ACLbasic_model.confbasic_policy.csv
    ACL com superusuáriobasic_model_with_root.confbasic_policy.csv
    ACL sem usuáriosbasic_model_without_users.confbasic_policy_without_users.csv
    ACL sem recursosbasic_model_without_resources.confbasic_policy_without_resources.csv
    RBACrbac_model.confrbac_policy.csv
    RBAC com papéis de recursosrbac_model_with_resource_roles.confrbac_policy_with_resource_roles.csv
    RBAC com domínios/tenantsrbac_model_with_domains.confrbac_policy_with_domains.csv
    ABACabac_model.confN/A
    RESTfulkeymatch_model.confkeymatch_policy.csv
    Deny-overriderbac_model_with_deny.confrbac_policy_with_deny.csv
    Prioridadepriority_model.confpriority_policy.csv