◇ OpenCyber Academy
Graduação · Capítulo 25 · Português

Capítulo 25 — Laboratório I

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 25 — Laboratório I

Mapa da aula

Aula 25 publicada. Mapa, exemplo, EX073.

flowchart TD
  N0["25.1 A tarefa"]
  N1["Laboratório — Encontrar permissões além das necessid"]
  N2["25.2 Resultados"]
  N3["25.3 Limitações"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX073"]

Desenho lógico

flowchart LR
  N0["25.1 A tarefa"]
  N1["Laboratório — Encontrar permissões além das necessid"]
  N2["25.2 Resultados"]
  N3["25.3 Limitações"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX073"]
[25.1 A tarefa]
    |
    v
[Laboratório — Encontrar permissões além das necessid]
    |
    v
[25.2 Resultados]
    |
    v
[25.3 Limitações]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX073]

Objetivos de aprendizagem

Você vai (1) construir um pequeno verificador de controle de acesso; (2) testar o menor privilégio sobre dados sintéticos de papéis; (3) relatar os resultados com suas limitações.

25.1 A tarefa

O Dr. Bellini propõe um exercício de laboratório: escrever um programa em Python que leia as definições sintéticas de papéis e as atribuições de usuários da Fernway e encontre os usuários cujas permissões excedem as necessidades da sua função. Lucas define do que cada função deve precisar, como a equipe de caixa precisar de vendas, mas não de mudanças de preço, e compara isso com o que cada usuário de fato tem. O programa roda offline sobre dados sintéticos, para que possa ser compartilhado com os colegas sem expor contas reais. O objetivo é praticar a transformação de um princípio, o menor privilégio, numa verificação repetível.

Laboratório — Encontrar permissões além das necessidades da função

# Find permissions beyond job needs (synthetic roles and users).
need = {"till": {"sales"}, "store-manager": {"sales", "rota", "refunds"},
        "warehouse": {"picking", "stock-read"}, "buyer": {"stock-read", "price-change"}}
users = {"u01": ("till", {"sales"}), "u02": ("till", {"sales", "price-change"}),
         "u03": ("till", {"sales", "price-change"}), "u04": ("store-manager", {"sales", "rota", "refunds"}),
         "u05": ("warehouse", {"picking", "stock-read", "db-owner"}), "u06": ("buyer", {"stock-read", "price-change"}),
         "u07": ("warehouse", {"picking", "stock-read"})}
found = 0
for u, (job, has) in sorted(users.items()):
    extra = has - need[job]
    if extra: found += 1; print(f"{u} ({job}) excess: {', '.join(sorted(extra))}")
print(f"{found} of {len(users)} users exceed job needs")

Execute com python3 lab_excess.py. Saída verificada:

u02 (till) excess: price-change
u03 (till) excess: price-change
u05 (warehouse) excess: db-owner
3 of 7 users exceed job needs

25.2 Resultados

O laboratório encontra três usuários com permissões em excesso. Dois funcionários de loja têm direitos de mudança de preço que sobraram de um projeto temporário de promoção, e um usuário do armazém tem direitos de dono do banco de dados concedidos durante uma correção urgente. Lucas confirma com Hannah que as definições das funções estão certas antes de chamar isso de achados, porque uma definição incorreta produziria alarmes falsos. Hannah remove os direitos da promoção na mesma semana e abre um ticket de mudança para substituir o direito de dono do banco por um papel mais restrito, depois que o desenvolvedor confirmar do que a tarefa do armazém precisa.

25.3 Limitações

Lucas lista os limites do seu verificador. Ele só conhece as permissões registradas na exportação, e não as que existem dentro de aplicações com listas de usuários próprias. As definições das funções são simplificadas e podem deixar de fora exceções legítimas. Ele encontra excessos, e não uso indevido. Ele sugere rodá-lo todo mês e acrescentar um campo para exceções aprovadas com datas de expiração, para que os direitos temporários fiquem visíveis em vez de esquecidos. O Dr. Bellini elogia a seção honesta de limitações, observando que os revisores confiam mais nas ferramentas quando seus autores dizem com clareza o que elas não conseguem fazer.

Exemplo resolvido

Lucas escreve um verificador offline de menor privilégio, encontra três permissões em excesso, confirma as definições com Hannah e lista os limites do verificador.

Caso sintético. Os papéis e os usuários são sintéticos.

Erros e limites

As permissões internas das aplicações são invisíveis para o verificador. As exceções precisam de expiração para continuarem honestas.

Exercícios

Síntese

Um verificador simples transforma o menor privilégio em um teste mensal repetível, desde que seus limites sejam declarados.

Continue estudando — aula 25 (capítulo 25 de 40)

← Capítulo 24 · Índice das aulas · Capítulo 26 →

Continue para a próxima aula já escrita.