O que é política como código?

A política como código é uma abordagem para o gerenciamento de políticas em que as políticas são definidas, atualizadas, compartilhadas e aplicadas usando código. Ao aproveitar a automação baseada em código, em vez de depender de processos manuais para gerenciar políticas, a política como código permite que as equipes se movimentem mais rapidamente e reduzam o potencial de erros devido a falhas humanas.

Ao mesmo tempo, uma abordagem de política como código para domínios como segurança possibilita definir e gerenciar políticas de forma que diferentes tipos de participantes, como desenvolvedores e engenheiros de segurança, possam entender.

Esta página explica como funciona a política como código, por que ela é importante e como aproveitá-la no contexto da segurança.

 

Definição de política como código

Para entender o que significa política como código, o senhor deve primeiro entender a definição de "política".

Nesse contexto, uma política é qualquer tipo de regra, condição ou instrução que rege as operações ou os processos de TI. Uma política pode ser uma regra que define quais condições devem ser atendidas para que um código passe por um controle de segurança e seja implantado, por exemplo. Ou pode ser um conjunto de procedimentos que são executados automaticamente em resposta a um evento de segurança.

Política como código é o uso de código para definir e gerenciar regras e condições. Em uma abordagem de política como código, as equipes escrevem políticas usando algum tipo de linguagem de programação, como Python, YAML ou Rego. O idioma específico geralmente depende das ferramentas de gerenciamento e aplicação de políticas como código que o senhor está usando.

Quando os engenheiros precisam fazer atualizações, eles o fazem modificando o código existente. Eles também podem compartilhar o código com outras pessoas para dar visibilidade às suas políticas usando sistemas de controle de versão (VCS). E, por último, mas não menos importante, eles podem usar um mecanismo de aplicação de política como código para garantir que as políticas sejam cumpridas. Um mecanismo de aplicação pode ser um código de política como código autônomo ou pode ser integrado a uma plataforma maior.

 

Política como código vs. Infraestrutura como código

O conceito de política como código pode parecer semelhante ao de Infraestrutura como código, ou IaC. A IaC, que usa arquivos baseados em código para automatizar a configuração e o provisionamento da infraestrutura, tem sido uma prática comum para as equipes de operações de TI há anos.

Enquanto a IaC é benéfica para as equipes de operações de TI que precisam fazer o provisionamento da infraestrutura, a política como código pode melhorar as operações de segurança, o gerenciamento da conformidade, o gerenciamento de dados e muito mais.

 

Benefícios da política como código

Em comparação com a alternativa, que é gerenciar regras, condições e procedimentos manualmente, a política como código oferece vários benefícios essenciais:

  • Eficiência: Quando as políticas são definidas como código, elas podem ser compartilhadas e aplicadas automaticamente em escala praticamente ilimitada. Isso é muito mais eficiente do que exigir que os engenheiros apliquem uma política manualmente sempre que for necessário. A atualização e o compartilhamento de políticas também são mais eficientes quando as políticas são definidas em um código claro e conciso, em vez de serem descritas em linguagem humana que alguns engenheiros podem interpretar de forma diferente dos outros.
  • Velocidade: A capacidade de automatizar a aplicação de políticas também significa que a política como código resulta em operações mais rápidas do que uma abordagem manual.
  • Visibilidade: Quando as políticas são definidas em código, é fácil para todas as partes interessadas usar o código para entender o que está acontecendo em um sistema. Eles podem revisar as regras de alerta ou de correção simplesmente verificando quais políticas baseadas em código estão em vigor, por exemplo, em vez de ter que perguntar a outros engenheiros e esperar por uma resposta.
  • Colaboração: Ao fornecer um meio uniforme e sistemático de gerenciar políticas, a política como código simplifica a colaboração. Isso inclui a colaboração não apenas dentro da mesma equipe, mas também entre diferentes tipos de equipes, especialmente entre desenvolvedores (que estão acostumados a pensar e trabalhar em termos de código) e especialistas em outros domínios, como segurança ou operações de TI.
  • Precisão: Quando as equipes definem e gerenciam políticas usando código, elas evitam o risco de cometer erros de configuração ao gerenciar um sistema manualmente.
  • Controle de versão: Se o senhor acompanhar as diferentes versões dos arquivos de política à medida que elas mudam, a política como código garante que seja possível reverter facilmente para uma configuração anterior caso uma nova versão da política crie um problema.
  • Teste e validação: Quando as políticas são escritas em código, é fácil validá-las usando ferramentas de auditoria automatizadas. Dessa forma, a política como código pode ajudar a reduzir o risco de introdução de erros críticos nos ambientes de produção.

 

Como usar a política como código

A maneira mais fácil de aproveitar as vantagens da política como código hoje é adotar ferramentas que suportem nativamente a política como código para qualquer domínio que o senhor queira gerenciar por meio de uma abordagem de política como código.

Por exemplo, no campo da segurança, Prisma Cloud, Bridgecrew e Checkov permitem que as equipes de segurança definam políticas de segurança usando código. Eles também podem verificar e auditar automaticamente os arquivos de política para detectar configurações incorretas ou vulnerabilidades antes da implantação. Essa abordagem é uma das maneiras pelas quais essas ferramentas simplificam o gerenciamento da postura de segurança na nuvem.

O senhor também pode querer explorar ferramentas como o Open Policy Agent, que tem como objetivo fornecer uma estrutura comum para aplicar a política como código a qualquer domínio. Até o momento, no entanto, a adoção pelo fornecedor de estruturas de política como código baseadas na comunidade como essa permanece limitada, e é por isso que procurar ferramentas de fornecedores com suporte nativo a política como código é o caminho mais simples para a implementação de uma abordagem de política como código para a segurança ou qualquer outro domínio de TI.

 

Perguntas frequentes sobre a política como código

A infraestrutura como código (IaC) é um método de gerenciamento e provisionamento da infraestrutura de computação por meio de arquivos de definição legíveis por máquina, em vez de configuração de hardware físico ou ferramentas de configuração interativas. Ele permite que os desenvolvedores e os profissionais de TI gerenciem, monitorem e provisionem automaticamente os recursos por meio de código, melhorando assim a consistência e reduzindo os erros manuais. A IaC oferece suporte à escalabilidade e flexibilidade dos serviços em nuvem, garantindo que as implantações de infraestrutura sejam repetíveis e padronizadas.
A conformidade como código é uma prática em que as especificações de conformidade são escritas em código e integradas ao pipeline de implantação automatizada. Ele garante que a infraestrutura e os aplicativos de TI cumpram continuamente os padrões regulatórios e de segurança, com verificações de conformidade codificadas para processos de validação automáticos e repetíveis. Essa abordagem minimiza o erro humano e reduz o tempo e o esforço necessários para as auditorias de conformidade.
A segurança como código envolve a integração de práticas de segurança no ciclo de vida de desenvolvimento de software por meio da codificação de políticas e controles de segurança. Ele permite a avaliação e a aplicação automatizadas da segurança no pipelines de CI/CD, garantindo que as verificações de segurança sejam parte integrante do processo de entrega de software, e não uma reflexão tardia. Ferramentas como scanners de vulnerabilidade automatizados e sistemas de gerenciamento de configuração são empregadas para manter os aplicativos seguros desde o início até a implantação.
O gerenciamento de configuração é o processo de lidar sistematicamente com as alterações em um sistema de forma a garantir a integridade ao longo do tempo. Envolve a manutenção de registros e atualizações de componentes de software e hardware, garantindo que os sistemas sejam configurados de forma consistente e que todas as alterações sejam rastreáveis. Ferramentas centralizadas de gerenciamento de configuração, como Ansible, Puppet e Chef, automatizam a implantação e a operação da infraestrutura, permitindo escalabilidade e confiabilidade.
Os scripts de automação são procedimentos codificados que executam tarefas sem intervenção humana. Eles são essenciais para automatizar operações repetitivas e complexas em ambientes de TI, aumentando a eficiência e reduzindo a probabilidade de erro humano. Na computação em nuvem, os scripts de automação são usados para provisionar recursos, gerenciar implantações e orquestrar fluxos de trabalho, geralmente em ferramentas como o Terraform ou por meio de interfaces de script de provedores de nuvem, como o AWS CloudFormation.
O GitOps é uma estrutura operacional que utiliza as práticas recomendadas do DevOps usadas para o desenvolvimento de aplicativos, como controle de versão, colaboração, conformidade e CI/CD, e as aplica à automação da infraestrutura. A ideia central do GitOps é usar o Git como uma única fonte de verdade para infraestrutura e aplicativos declarativos. Com o Git no centro do pipelines de CI/CD, as equipes podem fazer solicitações pull para acelerar e simplificar a implantação de aplicativos e as tarefas de operações.
A integração contínua/implantação contínua (CI/CD) é um método de entrega de software que introduz a automação nas etapas de desenvolvimento de aplicativos. Os principais conceitos atribuídos à CI/CD são integração contínua, entrega contínua e implantação contínua. O CI/CD integra alterações regulares de código em um repositório compartilhado, executa testes automaticamente e envia o código para ambientes de produção. Essa prática reduz os erros manuais, encurta o ciclo de desenvolvimento e melhora a qualidade do software.
A infraestrutura imutável é uma abordagem para gerenciar serviços e implantações de software em recursos de TI em que os componentes são substituídos em vez de alterados. Uma vez implantada, a infraestrutura nunca é modificada; em vez disso, quaisquer atualizações ou alterações são feitas substituindo servidores ou contêineres por uma nova versão. Esse paradigma minimiza as inconsistências e as possíveis vulnerabilidades de segurança devido a desvios de configuração ou intervenções manuais.
A segurança de código abrange os métodos e as ferramentas usados para proteger contra vulnerabilidades no código do software e impedir o acesso não autorizado ou alterações na base de código. Ela envolve práticas como análise de código estático e dinâmico, assinatura de código e o uso de padrões de codificação seguros para garantir que o software seja desenvolvido com forte ênfase na segurança desde o início.
Uma auditoria de código é uma análise abrangente em que o código-fonte é examinado para descobrir bugs, falhas de segurança ou violações das convenções de programação. Conduzidas sistematicamente, as auditorias de código ajudam a manter a integridade da base de código, aumentam a segurança e garantem a conformidade com os padrões de codificação e as regulamentações do setor.
A aplicação de políticas é o processo de implementação e garantia de adesão às políticas definidas em um ambiente de TI. Envolve o gerenciamento ativo de controles de acesso, utilização de recursos e comportamento operacional para garantir que todas as ações estejam alinhadas com as políticas de segurança e os requisitos de conformidade estabelecidos.
A configuração declarativa especifica o estado desejado de um sistema sem delinear as etapas para alcançá-lo. As ferramentas de gerenciamento subjacentes do sistema são responsáveis por executar as ações necessárias para manter o estado declarado. Essa abordagem contrasta com a configuração imperativa, que exige scripts ou comandos para descrever o processo para alcançar o estado desejado.
Os sistemas de controle de versão são ferramentas que rastreiam as alterações nos arquivos, mantendo um registro das modificações e de quem as fez. Eles são essenciais para o desenvolvimento colaborativo de software, permitindo que vários colaboradores trabalhem na mesma base de código simultaneamente sem substituir o trabalho uns dos outros. Os sistemas de controle de versão facilitam a reversão, a ramificação e a mesclagem e ajudam a resolver conflitos ao mesclar contribuições.
A prevenção do desvio de configuração garante que o estado da infraestrutura permaneça consistente com suas configurações definidas ao longo do tempo. Ao automatizar os processos de implantação e operações e reconciliar rotineiramente o estado real com o estado desejado, as ferramentas de prevenção de desvios, como Puppet, Chef e Ansible, detectam e corrigem discrepâncias, mantendo assim a integridade e a segurança do sistema.
As políticas de revisão de código estabelecem padrões e procedimentos para examinar sistematicamente o código-fonte por pares antes que ele seja incorporado à base de código principal. Essas políticas reforçam as práticas recomendadas de codificação, identificam possíveis vulnerabilidades de segurança e melhoram a qualidade do código. Eles geralmente especificam critérios para a atribuição de revisores, o escopo da revisão e as condições sob as quais o código é aprovado ou rejeitado.
A linguagem de definição de políticas (PDL) fornece uma sintaxe formal para escrever políticas que governam o comportamento do sistema, gerenciam o acesso e aplicam a conformidade. As PDLs, como a usada no Open Policy Agent, permitem a articulação clara de regras e a aplicação automatizada de políticas em diferentes estágios de desenvolvimento e implantação de software, garantindo a aplicação consistente de práticas de segurança.
Os modelos de infraestrutura como código são scripts ou arquivos predefinidos usados para automatizar o provisionamento de infraestruturas de TI. Escritos em linguagens como YAML ou JSON, os modelos de IaC descrevem os recursos e as configurações necessárias para um aplicativo, permitindo configurações de ambiente consistentes e repetíveis em desenvolvimento, teste e produção.
A governança automatizada integra a aplicação de políticas ao pipeline de implantação e integração contínua, garantindo que as alterações sigam automaticamente os padrões regulatórios e da empresa. Ele emprega ferramentas e práticas que monitoram e controlam os ambientes de TI, reduzindo a supervisão manual e fornecendo garantia de conformidade em tempo real. A governança automatizada permite a rápida identificação e correção de problemas que se desviam das políticas estabelecidas.
Anterior O que é segurança nativa da nuvem?