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

implementing-opa-gatekeeper-for-policy-enforcement

Faz seu agente aplicar regras de segurança personalizadas em um sistema chamado Kubernetes, impedindo configurações incorretas antes que aconteçam.

O que ela faz

Este recurso ajuda a garantir que tudo o que você coloca no seu cluster Kubernetes siga regras específicas. Ele age como um porteiro, verificando se as solicitações de recursos estão em conformidade antes de serem aceitas.

Quando usar

  • ✓Quando você quer garantir que todos os recursos no seu cluster Kubernetes tenham etiquetas específicas.
  • ✓Quando você quer impedir que contêineres com permissões excessivas sejam executados.
  • ✓Quando você quer restringir quais imagens de contêiner podem ser usadas no seu cluster.

Exemplo do que pedir para a IA

“Configure o OPA Gatekeeper para garantir que todos os pods tenham a etiqueta 'ambiente' e que nenhum contêiner privilegiado seja implantado.”

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-opa-gatekeeper-for-policy-enforcement/SKILL.md

Mensagem pronta para colar

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

Ele funciona instalando um componente chamado OPA Gatekeeper no seu cluster Kubernetes usando o Helm. Depois, você define regras (ConstraintTemplates) e aplica essas regras a recursos específicos (Constraints) para validar, modificar ou bloquear solicitações.

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-opa-gatekeeper-for-policy-enforcement

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/implementing-opa-gatekeeper-for-policy-enforcement/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 OPA Gatekeeper para Aplicação de Políticas

Visão Geral

OPA Gatekeeper é um controlador de admissão do Kubernetes que aplica políticas escritas em Rego. Ele usa ConstraintTemplates (modelos de política com lógica Rego) e Constraints (políticas instanciadas com parâmetros) para validar, mutar ou negar requisições de recursos do Kubernetes no momento da admissão.

Quando Usar

  • Ao implantar ou configurar capacidades de implementação de OPA Gatekeeper para aplicação de políticas em seu ambiente
  • Ao estabelecer controles de segurança alinhados a requisitos de conformidade
  • Ao construir ou melhorar a arquitetura de segurança para este domínio
  • Ao realizar avaliações de segurança que exigem esta implementação

Pré-requisitos

  • Cluster Kubernetes v1.24+
  • Helm 3
  • kubectl com acesso cluster-admin
  • Familiaridade com a linguagem de políticas Rego

Instalando o Gatekeeper

# Install via Helm
helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts
helm repo update

helm install gatekeeper gatekeeper/gatekeeper \
  --namespace gatekeeper-system --create-namespace \
  --set replicas=3 \
  --set audit.replicas=1 \
  --set audit.logLevel=INFO

# Verify
kubectl get pods -n gatekeeper-system
kubectl get crd | grep gatekeeper

Verificar Instalação

# Check webhook
kubectl get validatingwebhookconfigurations gatekeeper-validating-webhook-configuration

# Check CRDs
kubectl get crd constrainttemplates.templates.gatekeeper.sh
kubectl get crd configs.config.gatekeeper.sh

Exemplos de ConstraintTemplate

1. Exigir Labels em Recursos

# template-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, "details": {"missing_labels": missing}}] {
          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])
        }
# constraint-require-team-label.yaml
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
  name: require-team-label
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Namespace"]
      - apiGroups: ["apps"]
        kinds: ["Deployment"]
  parameters:
    labels:
      - "team"
      - "environment"

2. Bloquear Contêineres Privilegiados

# template-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])
        }
# constraint-block-privileged.yaml
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sBlockPrivileged
metadata:
  name: block-privileged-containers
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]
    namespaces:
      - "production"
      - "staging"

3. Restringir Registros de Imagens de Contêiner

# template-allowed-repos.yaml
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8sallowedrepos
spec:
  crd:
    spec:
      names:
        kind: K8sAllowedRepos
      validation:
        openAPIV3Schema:
          type: object
          properties:
            repos:
              type: array
              items:
                type: string
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8sallowedrepos


…
Perguntas frequentes

O que é OPA Gatekeeper?

É uma ferramenta que ajuda a aplicar políticas personalizadas no Kubernetes, garantindo que os recursos criados ou modificados estejam em conformidade com as regras definidas.

O que são ConstraintTemplates e Constraints?

ConstraintTemplates são modelos de políticas com a lógica definida em Rego. Constraints são instâncias dessas políticas, onde você especifica quais recursos devem ser verificados e com quais parâmetros.

Por que usar o Helm?

O Helm é um gerenciador de pacotes para Kubernetes que simplifica a instalação e o gerenciamento de aplicações e componentes, como o OPA Gatekeeper.

Detalhes

Descrição original do autor

Deploys OPA Gatekeeper via Helm as a Kubernetes admission controller and writes ConstraintTemplates with Rego plus instantiated Constraints to validate, mutate, or deny resource requests at admission time. Use when enforcing custom policy-as-code at admission on Kubernetes v1.24+, blocking non-compliant workloads before scheduling, or expressing a rule that built-in controls cannot. Keywords: Gate

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5925
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