# Controle de Acesso Baseado em Funções

Documentação de RBAC (Controle de Acesso Baseado em Funções)

Source: https://atlascloud.ai/docs/pt/account/rbac

## Visão Geral

O sistema implementa um modelo RBAC abrangente para gerenciar o controle de acesso em diferentes recursos e ações. Ele consiste em funções, políticas e atribuições de funções de usuário.

## Componentes Principais

### Recursos

O sistema define os seguintes recursos protegidos:
- Audit
- Payment
- Region
- Resource
- Team
- Role
- UserRole

### Ações

Ações disponíveis em recursos:
- List
- Get
- Create
- Update
- Delete

## Sistema de Funções

Uma função é uma coleção de permissões que define quais ações um usuário pode executar em recursos específicos. As funções ajudam a organizar e gerenciar direitos de acesso de forma eficiente ao agrupar permissões relacionadas.

### Funções Predefinidas

1. AccountAdmin
   - Acesso total aos recursos de nível de conta
   - Pode gerenciar membros da equipe
   - Pode configurar definições da conta

2. Developer
   - Pode gerenciar recursos de desenvolvimento

3. Auditor
   - Acesso somente leitura aos logs de Auditoria

4. Finance
   - Acesso total às funções de Pagamento

5. Ops
   - Acesso total aos recursos operacionais


## Políticas

Políticas são os blocos de construção fundamentais do controle de acesso que definem permissões específicas. Cada política representa uma regra que concede permissão para executar certas ações em recursos específicos.

### Estrutura da Política

- Resource: Recurso alvo
- Action: Ação permitida

### Atribuição de Política

- Políticas são atribuídas a funções através do mapeamento RolePolicy
- Várias políticas podem ser atribuídas a uma única função
- Atribuições de políticas são únicas por função

## Controle de Permissões do Usuário

O sistema implementa controle de permissões através de um modelo de três camadas: Usuários, Funções e Políticas. As funções atuam como uma ponte entre usuários e políticas, fornecendo uma maneira flexível e gerenciável de controlar direitos de acesso.

### Fluxo de Controle

1. **Atribuição de Usuário**
   - Os usuários recebem uma ou mais funções
   - As atribuições de funções são específicas para cada conta
   - Um usuário pode ter diferentes funções em diferentes contas

2. **Função como Ponte**
   - As funções servem como contêineres para coleções de políticas
   - Cada função define um conjunto específico de responsabilidades
   - As funções tornam o gerenciamento de permissões mais sustentável

3. **Aplicação de Política**
   - As políticas definem as permissões reais
   - Cada solicitação é validada contra as políticas das funções do usuário
   - O acesso é concedido apenas se existir uma política correspondente

## Processo de Autorização

1. Processamento de Solicitação
   - Extrair informações da conta
   - Identificar recurso alvo e ação
   - Verificar funções e políticas do usuário

2. Verificação de Permissão
   - Funções específicas da conta são validadas contra a conta alvo
   - A correspondência de políticas considera correspondências exatas e curingas

3. Controle de Acesso
   - Acesso concedido se alguma função atribuída tiver política correspondente
   - Solicitações negadas retornam resultados vazios em vez de erros
   - O registro de auditoria ocorre após a validação RBAC

## Melhores Práticas

1. Gerenciamento de Funções
   - Use funções predefinidas quando possível
   - Crie funções personalizadas com as permissões mínimas necessárias
   - Revise regularmente as atribuições de funções

2. Considerações de Segurança
   - Sempre valide o contexto da conta
   - Implemente restrições de UI baseadas em funções
   - Mantenha logs de auditoria para mudanças de funções

3. Desempenho
   - Atribuições de funções e políticas são armazenadas em cache
   - Operações em lote disponíveis para atribuições em massa
   - Consultas de banco de dados otimizadas para verificações de permissão
