Service Configuration Question #019e3a4f
Qual das seguintes afirmações está correta sobre o Open Policy Agent (OPA)?
As políticas devem ser escritas em linguagem Python.
O Kubernetes pode usá-lo para validar requisições e aplicar políticas.
As políticas só podem ser testadas quando publicadas.
Ele não pode ser usado fora do Kubernetes.
Official Explanation / Community Explanations
Open Policy Agent (OPA) é um mecanismo de políticas de uso geral que permite política-como-código em toda a pilha cloud-native. Ele é comumente integrado ao Kubernetes via OPA Gatekeeper ou como um controlador de admissão para validar e aplicar políticas em requisições à API.
Como Funciona
OPA usa uma linguagem declarativa de alto nível chamada Rego para definir políticas. Ele desacopla a tomada de decisão de políticas da lógica da aplicação, permitindo que as políticas sejam atualizadas independentemente. No Kubernetes, o OPA pode interceptar requisições de admissão e avaliá-las contra políticas Rego antes que os recursos sejam persistidos.
Por que a afirmação correta está certa
A afirmação "O Kubernetes pode usá-lo para validar requisições e aplicar políticas" está correta. OPA é amplamente usado como um controlador de admissão em clusters Kubernetes para aplicar políticas de segurança, conformidade e operacionais. Por exemplo, o OPA Gatekeeper integra-se ao Kubernetes para validar configurações de recursos contra políticas personalizadas.
Por que as afirmações incorretas estão erradas
- "As políticas devem ser escritas em linguagem Python" está incorreto porque as políticas do OPA são escritas em Rego, uma linguagem declarativa criada especificamente para esse fim, não Python.
- "As políticas só podem ser testadas quando publicadas" está incorreto porque o OPA fornece ferramentas como
opa teste o Rego Playground para teste e depuração locais antes da implantação. - "Ele não pode ser usado fora do Kubernetes" está incorreto porque o OPA é um mecanismo de políticas de uso geral que pode ser usado com vários sistemas (por exemplo, microsserviços, pipelines CI/CD, SSH, bancos de dados SQL) e não se limita ao Kubernetes.