Como Construir uma Simulação Dinâmica de Rede Zero-Trust com Micro-Segmentação Baseada em Grafo, Mecanismo de Política Adaptativo e Detecção de Ameaças Internas
Neste tutorial, construímos uma simulação realista de rede Zero-Trust modelando um ambiente micro-segmentado como um grafo direcionado e forçando cada solicitação a obter acesso através de verificação contínua. Implementamos um mecanismo de política dinâmico que combina permissões no estilo ABAC com postura de dispositivo, MFA, alcançabilidade de caminho, sensibilidade de zona e sinais de risco em tempo real, como anomalias e […] O post
Neste tutorial, construímos uma simulação realista de rede Zero-Trust modelando um ambiente micro-segmentado como um grafo direcionado e forçando cada solicitação a obter acesso através de verificação contínua. Implementamos um mecanismo de política dinâmico que combina permissões no estilo ABAC com postura de dispositivo, MFA, alcançabilidade de caminho, sensibilidade de zona e sinais de risco em tempo real, como anomalias e indicadores de volume de dados. Em seguida, operacionalizamos o modelo através de uma API Flask e executamos tráfego misto, incluindo movimento lateral interno e tentativas de exfiltração, para mostrar como a pontuação de confiança, controles adaptativos e quarentenas automatizadas bloqueiam fluxos maliciosos em tempo real. Copy Code Copied Use a different Browser !pip -q install networkx flask import math import json import time import random import hashlib from dataclasses import dataclass, field from typing import Dict, Any, List, Tuple, Optional import networkx as nx from flask import Flask, request, jsonify import matplotlib.pyplot as plt def _sigmoid(x: float) -> float: return 1.0 / (1.0 + math.exp(-x)) def _clamp(x: float, lo: float = 0.0, hi: float = 1.0) -> float: return max(lo, min(hi, x)) def _now_ts() -> float: return time.time() def _stable_hash(s: str) -> int: h = hashlib.sha256(s.encode("utf-8")).hexdigest() return int(h[:10], 16) def _rand_choice_weighted(items: List[Any], weights: List[float]) -> Any: return random.choices(items, weights=weights, k=1)[0] def _pretty(obj: Any) -> str: return json.dumps(obj, indent=2, sort_keys=False) Configuramos o ambiente instalando as bibliotecas necessárias e importando todas as dependências requeridas para modelagem de grafos, pontuação de risco e manipulação de API. Definimos funções utilitárias para normalização de confiança, hashing, timestamping e amostragem ponderada para suportar simulações determinísticas. Preparamos funções auxiliares que simplificam o registro e a formatação de saída estruturada ao longo do tutorial. Copy Code Copied Use a different Browser ZONES = ["public", "dmz", "app", "data", "admin"] SENSITIVITY = {"public": 0.15, "dmz": 0.35, "app": 0.6, "data": 0.85, "admin": 0.95} ASSETS = { "public": ["cdn", "landing", "status"], "dmz": ["api_gateway", "waf", "vpn"], "app": ["orders_svc", "billing_svc", "ml_inference", "inventory_svc"], "data": ["customer_db", "ledger_db", "feature_store"], "admin": ["iam", "siem", "backup_vault"] } ACTIONS = ["read", "write", "deploy", "admin", "exfiltrate"] ROLES = ["customer", "employee", "a"
