0Pricing
DevOps Bootcamp · Aula

Gerenciamento de Secrets e RBAC

Aprenda estratégias avançadas para gerenciar dados confidenciais e implementar o controle de acesso baseado em funções (RBAC) em ambientes de contêineres.

Gerenciamento de Secrets e RBAC é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.

Proteja seu ambiente de contêineres

Boas-vindas! Nesta lição, vamos conhecer práticas essenciais de segurança para aplicações conteinerizadas: gerenciamento de segredos e controle de acesso baseado em funções (RBAC).

Esses conceitos são fundamentais para proteger dados confidenciais e garantir que somente entidades autorizadas possam executar ações específicas em seus ambientes de contêineres.

Gerenciamento de Secrets e RBAC — ilustração 1

O perigo de inserir segredos diretamente no código

Inserir informações confidenciais, como chaves de API, senhas de banco de dados ou certificados privados, diretamente no código da aplicação ou em Dockerfiles é um grande risco de segurança.

  • Exposição: Qualquer pessoa com acesso ao seu repositório de código ou à imagem criada poderá vê-las facilmente.
  • Falta de controle: Alterar um segredo exige recriar e implantar novamente toda a aplicação.
  • Problemas de conformidade: Isso viola muitas melhores práticas de segurança e requisitos regulatórios.

Variáveis de ambiente (com cautela)

Uma forma comum, mas nem sempre segura, de transmitir segredos é por meio de variáveis de ambiente. O Docker permite transmiti-las com a opção -e, e as aplicações podem lê-las.

No entanto, as variáveis de ambiente podem ser inspecionadas facilmente, por exemplo com docker inspect, e talvez permaneçam no histórico do shell ou nos registros. Para dados realmente confidenciais, existem soluções melhores.

Segredos do Docker em ação

Os Docker Secrets permitem armazenar e transmitir dados confidenciais aos contêineres com segurança. Quando um segredo é associado a um contêiner, ele é montado como um arquivo temporário em /run/secrets/.

Primeiro, você criaria um segredo, por exemplo, echo "my_secure_pass" | docker secret create app_secret -. Em seguida, sua aplicação poderá lê-lo:

import os

def main():
    secret_path = "/run/secrets/app_secret"
    try:
        with open(secret_path, 'r') as f:
            secret_value = f.read().strip()
        print(f"Secret read: {secret_value}")
    except FileNotFoundError:
        print("Secret file not found. Make sure it's mounted.")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

Visão geral dos Secrets do Kubernetes

Assim como os Docker Secrets, o Kubernetes tem seu próprio objeto chamado “Secrets” para armazenar e gerenciar informações confidenciais. Esses segredos podem ser montados como arquivos em Pods ou expostos como variáveis de ambiente.

Importante: Os Secrets do Kubernetes são codificados em base64, não criptografados por padrão. Isso significa que podem ser facilmente decodificados. Para obter criptografia real em repouso, é necessária uma configuração adicional, como a integração com KMS.

Implantando com Secrets do K8s

Vamos ver um exemplo de como um Secret do Kubernetes é definido e depois consumido em um Pod. Você pode definir segredos em YAML ou criá-los usando comandos kubectl.

Depois de criado, um Pod pode referenciar o segredo para montá-lo como um volume ou injetar seus valores como variáveis de ambiente.

apiVersion: v1
kind: Pod
metadata:
  name: my-secret-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-k8s-secret

Cofres externos de segredos

Para dados altamente confidenciais ou ao gerenciar segredos em vários clusters e ambientes, as ferramentas externas de gerenciamento de segredos oferecem recursos avançados, como:

  • Armazenamento centralizado: Uma única fonte confiável para todos os segredos.
  • Criptografia em repouso e em trânsito: Garantias de segurança mais fortes.
  • Segredos dinâmicos: Credenciais geradas automaticamente e com curta duração.
  • Auditoria e controle de acesso: Permissões detalhadas e registros abrangentes.

Entre as opções populares estão o HashiCorp Vault, o AWS Secrets Manager e o Azure Key Vault.

O que é RBAC?

O controle de acesso baseado em funções (RBAC) é um método de restringir o acesso ao sistema a usuários autorizados. Em vez de atribuir permissões diretamente a usuários individuais, as permissões são agrupadas em “funções” e os usuários são atribuídos a essas funções.

Na orquestração de contêineres, o RBAC garante que usuários, aplicações ou serviços tenham somente as permissões necessárias para interagir com recursos, como Pods, implantações e Secrets.

Blocos básicos do RBAC no K8s

O RBAC do Kubernetes usa alguns tipos importantes de recursos:

  • Role: Define permissões dentro de um namespace específico, por exemplo, “pode visualizar pods” no namespace “dev”.
  • ClusterRole: Define permissões em todo o cluster, por exemplo, “pode visualizar todos os pods” ou “pode gerenciar nós”.
  • RoleBinding: Concede as permissões definidas em uma Role a um usuário, grupo ou conta de serviço dentro de um namespace.
  • ClusterRoleBinding: Concede as permissões definidas em uma ClusterRole a um usuário, grupo ou conta de serviço em todo o cluster.

Exemplo de RBAC: limitando o acesso

Vamos ver um exemplo de como conceder a uma conta de serviço específica a permissão de apenas listar e obter pods em um determinado namespace. Isso impõe o princípio do menor privilégio.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: pod-viewer-sa # Name of the ServiceAccount to bind to
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Verifique sua compreensão

Você aprendeu a proteger dados confidenciais e controlar o acesso. É hora de uma verificação rápida!

Recapitulação: proteja suas aplicações

Parabéns! Nesta lição, você aprendeu sobre dois pilares essenciais da segurança de contêineres:

  • Gerenciamento de segredos: Proteção de dados confidenciais usando Docker Secrets e Secrets do Kubernetes, compreendendo seus pontos fortes e limitações.
  • Controle de acesso baseado em funções (RBAC): Implementação de permissões detalhadas no Kubernetes para garantir o princípio do menor privilégio.

Ao dominar esses conceitos, você está criando aplicações conteinerizadas mais robustas e seguras!

Perguntas Frequentes

A aula “Gerenciamento de Secrets e RBAC” é grátis?

Sim — o texto completo de “Gerenciamento de Secrets e RBAC” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que vou aprender em “Gerenciamento de Secrets e RBAC”?

Aprenda estratégias avançadas para gerenciar dados confidenciais e implementar o controle de acesso baseado em funções (RBAC) em ambientes de contêineres. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar DevOps Bootcamp?

Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Gerenciamento de Secrets e RBAC”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de DevOps Bootcamp?

Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Verificação de segurança de imagens de contêiner
  2. Segurança de contêineres em execução
  3. Gerenciamento de Secrets e RBAC
  4. Políticas de rede e rede com privilégio mínimo
← Voltar para DevOps Bootcamp