Pular para o conteúdo
Skillpedia
Segurança35 mil · #5935

implementing-policy-as-code-with-open-policy-agent

Faz seu agente aplicar políticas de segurança como código em sistemas como Kubernetes, garantindo que as regras sejam seguidas automaticamente.

O que ela faz

Esta ferramenta ajuda a garantir que seus sistemas de computador (especificamente Kubernetes) sigam regras de segurança e organização. Ela faz isso verificando e bloqueando configurações que não estejam de acordo com as políticas definidas.

Quando usar

  • ✓Quando você quer garantir que todos os seus sistemas sigam as mesmas regras de segurança.
  • ✓Quando você precisa impedir que configurações incorretas sejam aplicadas nos seus sistemas.
  • ✓Quando você quer ter um registro de auditoria das suas políticas de segurança.

Exemplo do que pedir para a IA

“Configure o Open Policy Agent para bloquear a criação de Pods sem limites de CPU definidos.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/implementing-policy-as-code-with-open-policy-agent/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/implementing-policy-as-code-with-open-policy-agent/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Você define regras em uma linguagem chamada Rego e usa o Gatekeeper para aplicá-las no Kubernetes. Ele age como um porteiro, verificando cada nova configuração antes de permitir que ela seja aplicada.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-policy-as-code-with-open-policy-agent

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/implementing-policy-as-code-with-open-policy-agent/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Implementando Política como Código com Open Policy Agent

Quando Usar

  • Ao impor políticas de segurança organizacional em clusters Kubernetes de forma programática
  • Ao exigir controle de admissão que bloqueia a criação de recursos não conformes
  • Ao implementar governança de políticas que pode ser versionada, testada e auditada
  • Ao padronizar regras de segurança em múltiplos clusters e ambientes
  • Ao precisar de um motor de políticas flexível que se estenda além do Kubernetes para APIs e CI/CD

Não use para varredura de vulnerabilidades (use Trivy/Checkov), para detecção de ameaças em tempo de execução (use Falco), ou para imposição de políticas de rede (use Kubernetes NetworkPolicy ou Calico).

Pré-requisitos

  • Cluster Kubernetes com acesso de administrador para instalação do Gatekeeper
  • Helm para implantação do Gatekeeper
  • OPA CLI ou conftest para testes locais de políticas
  • Conhecimento de Rego para autoria de políticas

Fluxo de Trabalho

Passo 1: Instalar OPA Gatekeeper

# Install Gatekeeper via Helm
helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts
helm install gatekeeper gatekeeper/gatekeeper \
  --namespace gatekeeper-system --create-namespace \
  --set replicas=3 \
  --set audit.replicas=1 \
  --set audit.writeToRAMDisk=true

Passo 2: Criar Modelos de Restrição

# templates/k8s-required-labels.yaml
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8srequiredlabels
spec:
  crd:
    spec:
      names:
        kind: K8sRequiredLabels
      validation:
        openAPIV3Schema:
          type: object
          properties:
            labels:
              type: array
              items:
                type: string
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8srequiredlabels
        violation[{"msg": msg}] {
          provided := {label | input.review.object.metadata.labels[label]}
          required := {label | label := input.parameters.labels[_]}
          missing := required - provided
          count(missing) > 0
          msg := sprintf("Missing required labels: %v", [missing])
        }

---
# templates/k8s-container-limits.yaml
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8scontainerlimits
spec:
  crd:
    spec:
      names:
        kind: K8sContainerLimits
      validation:
        openAPIV3Schema:
          type: object
          properties:
            cpu:
              type: string
            memory:
              type: string
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8scontainerlimits
        violation[{"msg": msg}] {
          container := input.review.object.spec.containers[_]
          not container.resources.limits.cpu
          msg := sprintf("Container %v has no CPU limit", [container.name])
        }
        violation[{"msg": msg}] {
          container := input.review.object.spec.containers[_]
          not container.resources.limits.memory
          msg := sprintf("Container %v has no memory limit", [container.name])
        }

---
# templates/k8s-block-privileged.yaml
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8sblockprivileged
spec:
  crd:
    spec:
      names:
        kind: K8sBlockPrivileged
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8sblockprivileged
        violation[{"msg": msg}] {
          container := input.review.object.spec.containers[_]
          container.securityContext.privileged == true
          msg := sprintf("Privileged container not allowed: %v", [container.name])
        }
        violation[{"msg": msg}] {
          container := input.review.object.spec.initContainers[_]
          container.securityContext.privileged == true
          msg := sprintf("Privileged init container not allowed: %v", [container.name])
        }

Passo 3: Aplicar Restrições

# constraints/require-labels.yaml
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
  name: require-team-labels
spec:
  enforcementAction: deny
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Namespace"]
      - apiGroups: ["apps"]
        kinds: ["Deployment", "StatefulSet"]
    excludedNamespaces:
      - kube-system
      - gatekeeper-system
  parameters:
    labels:
      - "team"
      - "environment"
      - "cost-center"

---
# constraints/block-privileged.yaml
apiVersion: constraints.gatekeeper.sh/v1beta1

…
Perguntas frequentes

O que é 'Policy as Code'?

É a ideia de gerenciar e aplicar políticas (como regras de segurança) usando código, da mesma forma que você gerencia o código do seu software. Isso permite versionamento, testes e automação.

O que é Open Policy Agent (OPA)?

É uma ferramenta de código aberto que permite definir e aplicar políticas de forma centralizada em diferentes sistemas.

O que é Gatekeeper?

É um componente que funciona com o OPA dentro do Kubernetes. Ele intercepta as solicitações para criar ou modificar recursos e as valida contra as políticas definidas.

Detalhes

Descrição original do autor

Implements policy-as-code enforcement with Open Policy Agent (OPA) and Gatekeeper for Kubernetes and CI/CD pipelines, covering writing Rego policies, deploying OPA Gatekeeper as a Kubernetes admission controller, testing policies in development, and integrating policy evaluation into deployment pipelines. Use when writing Rego policies, deploying Gatekeeper admission control, or gating CI/CD pipel

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5935
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas