O que é uma Lista de Controle de Acesso? Listas de Permissão por Recurso
Uma lista de controle de acesso (ACL) é uma lista anexada a um recurso que detalha exatamente quais identidades podem executar quais ações sobre ele.
Uma lista de controle de acesso, ou ACL, é uma das formas mais antigas e diretas de expressar autorização. Cada recurso protegido carrega uma lista de entradas, cada uma dizendo qual identidade tem permissão (ou negação) para qual ação. Você vê ACLs em arquivos, em buckets de armazenamento na nuvem e em recursos de rede por toda a infraestrutura de CI/CD.
Como uma ACL funciona
Cada entrada associa uma identidade a uma permissão sobre o recurso: este usuário pode ler, aquele grupo pode escrever, este serviço é negado. Quando uma requisição chega, o sistema percorre a lista para decidir. As permissões residem junto ao recurso, não em um catálogo central de papéis.
Onde você encontra ACLs
- Permissões de sistema de arquivos nos agentes de build.
- ACLs de buckets e objetos de armazenamento na nuvem para artifacts.
- ACLs de rede controlando o tráfego entre sub-redes.
ACLs versus RBAC
As ACLs são centradas no recurso: você pergunta "quem pode tocar nesta coisa?" O RBAC é centrado na identidade: você pergunta "o que este papel pode fazer?" As ACLs são precisas, mas podem se tornar difíceis de gerenciar em escala, já que cada recurso mantém sua própria lista.
ACLs em CI/CD
Os pipelines leem e escrevem artifacts, caches e buckets de armazenamento, todos os quais podem ser governados por ACLs. Um bucket com ACL mal configurada que permite leitura pública é uma fonte recorrente de vazamentos, então as ACLs de armazenamento de artifacts merecem revisão cuidadosa.
Armadilhas comuns
A proliferação de ACLs é o principal risco: milhares de recursos, cada um com entradas sob medida, tornam-se impossíveis de auditar. Entradas excessivamente permissivas (acesso público, regras de permissão amplas) são como os dados acabam expostos. Muitas plataformas agora preferem acesso baseado em política em vez de ACLs por objeto.
ACLs e o ambiente de build
No runner, as ACLs de sistema de arquivos decidem o que um job pode ler e escrever. Runners efêmeros e isolados (como os runners gerenciados da Latchkey) começam limpos a cada vez, então um job não pode herdar arquivos protegidos por ACL deixados por um job anterior.
Principais conclusões
- Uma ACL é uma lista por recurso de quem pode executar quais ações.
- Ela é centrada no recurso, ao contrário de modelos centrados na identidade como o RBAC.
- ACLs de armazenamento mal configuradas são uma causa frequente de vazamentos de artifacts em CI.