Zero Trust

Wie die Cloud sicherer als der Rechner hinter der Firewall im eigenen Keller wurde.

Wir hören alle Online-Kurse, Podcasts und Tutorials auf 1.5-facher Geschwindigkeit, oder?

Sicherheit

Wie baue ich Sicherheit?

Broken access Control

An den Eingängen wird nicht gut kontrolliert.

Cryptographic Failures

Es wird Leuten und Dokumenten vertraut, die gar nicht vertrauenswürdig sind.

Injection

Ich habe jemanden im Inneren, der absichtlich oder unabsichtlich etwas für den Angreifer macht.

Insecure DEsign

Man konnte über den Brunnen in die Burg.

Security Missconfiguration

3/4 der Türen waren super bewacht.

Outdated & Vulnerable Components

Die Tür war morsch. Die andere nicht
für den neuen Typ Kanonenkugeln gebaut.

Deshalb machen wir keine Burgen mehr.

Oder?

Gibt es ernsthaft noch jemanden,
der diese Strategien einsetzt?

Text

Text

https://docs.oracle.com/en/operating-systems/oracle-linux/6/security/ol_recdepcfg_sec.html

Broken

BY DESIGN

Wer ist 47 und älter?

 11PRINCIPLES

Open Design

Ich verlasse mich nicht darauf,
dass Dinge geheim sein müssen.

economy of mechanism

Keep It Simple & Stupid in Code & Design

Ich brauche keine komplexe Konfiguration

least common mechanism

Keine pauschalen Zugriffe und Rechte.
"Damit hast Du dann auch
gleich auf alle Tabellen Zugriff."

separation of privilege

Keine pauschalen Rechte für Nutzer, Accounts, Entities, Bereiche, Gruppen etc.

 

"Mit dem Admin-Account kannst Du im Prinzip überall alles machen."

LEast Privilege

Enforce "need to know" and "need to access".

Explizites, temporäres
Whitelisting der Zugriffe.

complete mediation

Check authorization for every access request.

Alle Zugriffe werden geprüft bevor sie passieren.

Wenn Rechte entzogen werden ist es sofort überall wirksam.

Fail-safe DEfaultS

Was nicht explizit erlaubt wird ist verboten.

psychological acceptability

Sicherheit ist nicht umständlich und störend

PerimeteR Security VS
11 Principles

Im Intranet kann man jedem immer trauen!

Einmal authentifiziert ist immer echt.

Und wenn man dem Menschen trauen kann, kann auch seiner IP trauen. Und dem Rechner. Und aller Software darauf.

Besonders dem Admin und seinem Rechner. Der darf an alle Netze. Und auf alle Systeme. Und an alle Daten.

Deshalb sind auch intern
alle Services für alle erreichbar.
Wir vertrauen uns. Und jeder Software, die bei uns läuft. 

Meanwhile, in our Universe ...

20% aller Data Breaches sind Insider Threats

Meanwhile, in our Universe ...

Davor liegen nur Ransomware & Trojaner

"Der Nutzer ist ja authentifiziert und hat McAfee."

Meanwhile, in our Universe ...

Auch wenn sie mit jeder ihrer privaten Devices auf Firmendienste zugreifen dürfen, findet inzwischen vieles im Homeoffice statt.
Oder auf Workation im Hostelwifi auf Zypern.

Warum nur das eigene Passwort verlieren,
wenn man auch die von allen anderen verlieren kann?

Meanwhile, in our Universe ...

Und unsere Software läuft auf fremden Servern. Mit fremder Administration. Und fremder Konfiguration. Die auf fremde Software zugreift. Auf die wir auch zugreifen.

Meanwhile, in our Universe ...

Mit 300 NPM-Packages. 200 Container-Images von Docker-Hub. 10 Helm-Charts von Github. 400 externe Libraries, davon 20 Versionen von log4j und 50 von OpenSSL.

Meanwhile, in our Universe ...

Greifen nur die berechtigten Services
auf meinen Service zu? Sind sie alle vertrauenswürdig?
In allen Bestandteilen?

Meanwhile, in our Universe ...


"PubSub is used to communicate messages between different system components without these components having to know each other's identity."

In guter Gesellschaft Scheitern

Zero TRUST

Was würde passieren, wenn wir den Kram von 1975
2020 mal ernst nehmen würden?

Verify explicitly

Always authenticate and authorize based on all available data points.

Use least privilege access

Limit user access with Just-In-Time and Just-Enough-Access (JIT/JEA), risk-based adaptive policies, and data protection.

Assume Breach

Minimize blast radius and segment access. Verify end-to-end encryption and use analytics to get visibility, drive threat detection, and improve defenses.

Hmmm...

Klingt ja erst gar nicht

mal so schwer.

  • Verify explicitly
  • Use least privilege access
  • Assume breach

Ich brauche:
Sichere identität

  • Identitäten gesichert für:
    • Personen
    • Devices
    • Services
    • externe Systeme
  • Starke Authentifizierung
  • Erkennen von Anomalien
  • IoT-Devices
  • Smartphones 
  • BYOD
  • On-Premise-Workloads
  • Cloud 

Ich brauche:
Sichere Endpunkte

Ich brauche:
Sichere Applikationen

  • Legacy on Premises & Schatten-IT
  • Lift & Shifted Cloud Workloads
  • Moderne SAAS & Service Applikationen
  • Mobile Applikationen
     
  • Klassische App-Security von Konfiguration und Permissions bis Anomalieerkennung

Ich brauche:
Sichere Daten

  • In Transit 
  • In Rest
  • Backup
  • Access nach least Privilege
    • Apps
    • Infrastruktur
    • Storage

Ich brauche:
Sichere Netze

  • Segmentierung 
  • Micro-Segmentierung
  • End-2-End-Encryption
  • Monitoring und Analytics

OK.

Das ist wohl doch ein wenig anders.

zero Trust
in der Praxis

Case Study: Fintech.

Fallbeispiel

Das problem

Fallbeispiel

Sichere
Architektur

  • Modifizierte agile Variante des SDLC Security Push
  • Identification der kritischen Assets
  • Attacker Klassifizierung
  • Process Flow Diagram
  • Threat Modelling
  • Risk Rating
  • Risk Boundaries & Mitigations
  • Architekturtreiber

Fallbeispiel

IdentitäT im CLIENT

  • Biometrische Freigabe
  • Hardware-Store für Auth-Token
  • Verschlüsselter lokaler Storage
  • Device-Binding
     

Nicht dabei: 

  • Strong Auth (IdNow etc)

Architektur

Fallbeispiel

Identity im Server

  •  Authentifizierung über Device-ID und Passwort in Keycloak, asymmetrisch
  • temporärer JWT mit Refresh aus Keycloak
  • Token für jeden Service und Datenzugriff erforderlich

Architektur

Fallbeispiel

Kommunikation im Server

  • ISTIO als ServiceMesh
  • Traffic Encryption für MITM
  • MTLS und Access Policies
  • Auditing & Observability

Architektur

Fallbeispiel

Security als Teil der Infrastruktur

Fallbeispiel

HANDSHAKES in ISTIO

Architektur

Fallbeispiel

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
 name: httpbin
 namespace: foo
spec:
 selector:
   matchLabels:
     app: httpbin
     version: v1
 action: ALLOW
 rules:
 - from:
   - source:
       principals: ["cluster.local/ns/default/sa/sleep"]
   - source:
       namespaces: ["dev"]
   to:
   - operation:
       methods: ["GET"]
   when:
   - key: request.auth.claims[iss]
     values: ["https://accounts.google.com"]

FINE GRAINED AUTHORISATION

Architektur

Fallbeispiel

Case Study

ISTIO OBSERVABILITY

Architektur

Zero Trust at REST

  • Alle PII-Daten per-user-verschlüsselt
  • Zum Entschlüsseln braucht es API-Auth + User-Secret aus Device
  • Data-Tagging: PII-Relevante Datensätze in Transit markieren
  • Impliziter Audit-Log

Architektur

Fallbeispiel

DSGVO for FREE

  • Crypto Shredding: löschen auch in allen Backups
     
  • Data Tagging:
    • Welche Daten haben wir  gespeichert?
    • Wohin wurden sie transferiert?
    • Wo wurden sie geändert?

Architektur

Fallbeispiel

Zero trust CODE

  • "Shift Left"
  • DevSecOps

Konkret:

  • Security als Architekturtreiber mit Fitness-Funktionen
  • Github Dependency Security
  • Sonarcloud SAST
  • TRIVY Container & Image Security 

Was fehlte?

  • Infrastruktur: tfsec, awssec, kubesec
  • Blackbox-Scanning
  • API-Fuzzing

 

 

Case Study

Update 2022
Supply Chain Risk

Distroless oder Containerless?

  • Wer nutzt Syft für die Software Bill of Materials in den Containern?
     
  • Distroless: Containers nur mit den Files, die wir wirklich brauchen
     
  • Von Google, aber mühsam - https://github.com/GoogleContainerTools/distroless
     
  • Containerless: WASM statt ContainerD

Cosign & SigStore

sigstore.dev

Supply Chain Security:

  • Signieren
  • Verifizieren
  • Key Management mit
    OpenIDConnect/Keyless
  • Monitoring

Rahmen:

  • Who is who der relevanten Firmen
  • Starke OpenSource-Community
  • Für Opensource schon oft im Einsatz

Cosign & SigStore

  • Cosign: Container signing, verification and storage - mit Hardware, KMS und PKI-Support
  • Gitsign: Keyless signing für Commits
  • Fulcio: root certificate authority für Code Signing, keyless mit OpenID Connect
  • Rekor: transparency & timestamping service
  • Policy Controller: was ist in Kubernetes erlaubt, was nicht?

sigstore.dev

Signing

  • Container
  • Registries
    • Github, Google, Microsoft, AWS ...
  • Signing
    • Gitlab und Github
  • Blobs und Files
  • Software Bill of Materials
  • CUE in-toto Validations​​​​​​​​​​​​​​

sigstore.dev

Verification

  • Kyverno
  • Policy Controller
  • CLI, Webhooks

sigstore.dev

sigstore.dev

SPIFFE & SPIRE

SPIFFE - "Secure Production Identity Framework For Everyone"

  • "HTTPS für Dienste, mit Rechten dran" auf X.509
  • Node Attestation: Authentifizierung, Vertraulichkeit, Integrität, Autorisierung
  • SPIRE als Implementierung
  • Server: Attestion, Storage, Key Management, Workload Registration
  • Agent: Authentication, lokale Attestation

spiffe.io

Node Attestation

spiffe.io

Support

  • Support für Istio und CodeSign
  • "Secretless" bzw. "Keyless Deployments"
    • Keine Secrets, API-Keys, Token, Passwörter mehr.
  • Workload Attestation für Unix, Kubernetes und Docker Workloads.

spiffe.io

Dapr.IO

"APIs for building portable and reliable MicroServices"

  •  

dapr.io

Dapr.IO

One Sidecar to rule them all.

 

dapr.io

Dapr.IO

Kein Zero Trust, aber ein paar Features:

  • mTLS mit Zertifikaten
  • OAuth Endpoint authorization
  • Scoping für APIs and PubSub
  • Security Policies im Sidecar
  • State Store Encryption
  • Observability mit impliziten Tracing zu Prometheus, Zipkin, FluentD etc., inkl. Metrics, Logs, Health Checks etc

dapr.io

Dapr.IO

  • Default auf Deny in Public
  • App1 Default auf Deny
  • Aber: 
    • von public im namespace Default darf für diesen Service /op1 mit POST & PUT
    • von myDomain im NameSpace "n1" auf /op2 generell zugreifen

dapr.io


apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  accessControl:
    defaultAction: deny
    trustDomain: "public"
    policies:
    - appId: app1
      defaultAction: deny
      trustDomain: 'public'
      namespace: "default"
      operations:
      - name: /op1
        httpVerb: ['POST', 'PUT']
        action: allow
    - appId: app2
      defaultAction: deny
      trustDomain: 'myDomain'
      namespace: "ns1"
      operations:
      - name: /op2
        action: allow

Things to come

WebAssembly Capabilities:
Wasm Interface Type (WIT)  Worlds:

Runtime-Level
Access-Control in beide Richtungen

Ok, cool

Aber kommt man dahin? Und will ich das überhaupt?

Links

  • Microsoft Zero Trust
    https://www.microsoft.com/de/security/business/zero-trust
  • Google BeyondProd
    https://cloud.google.com/docs/security/beyondprod
  • Istio
    https://istio.io/latest/
  • SPIFFE & SPIRE
    https://spiffe.io/pdf/Solving-the-bottom-turtle-SPIFFE-SPIRE-Book.pdf
  • Cosign, Sigstore, Rekor, Fulcio
    https://sigstore.dev/

Machen!

  • ISTIO, Dapr & Co zum selbstprobieren
    https://microk8s.io/
    https://github.com/mayflower/microk8s-addons

     
  • Mal reden
    https://calendly.com/johann-peter-hartmann

 

Oder hier :-) 

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
Perimeterbasierte Sicherheit (d. h. Firewall), wobei die interne Kommunikation als vertrauenswürdig eingestuft wird Zero-Trust-Sicherheit mit verifizierter Dienst-zu-Dienst-Kommunikation und ohne implizites Vertrauen für Dienste in der Umgebung

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
Feste IP-Adressen und Hardware für bestimmte Anwendungen Umfassendere Auslastung, Wiederverwendung und gemeinsame Nutzung von Ressourcen, einschließlich IP-Adressen und Hardware

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
IP-Adressen-basierte Identität Dienstbasierte Identität

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
An einem bekannten, erwarteten Ort ausgeführte Dienste Dienste können überall in der Umgebung ausgeführt werden, auch in hybriden Bereitstellungen in der öffentlichen Cloud und privaten Rechenzentren

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
Sicherheitsspezifische Anforderungen, die in jede Anwendung integriert sind und separat erzwungen werden Gemeinsame Sicherheitsanforderungen, die in Dienststacks gemäß einer zentralisierten Erzwingungsrichtlinie eingebunden sind

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
Humanoide und dokumentationsgetriebene Überwachung von Sicherheitskomponenten Kontinuierliche und zentrale Ansicht der Sicherheitsrichtlinien und Einhaltung der Richtlinien

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
Spezialisierte und seltene Rollouts Standardisierter Erstellungs- und Rollout-Prozess mit häufigen, unkoordinierten Rollouts vieler Services.

Was ändert sich?

Herkömmliche Sicherheit Cloud Native / Zero Trust
Arbeitslasten werden in der Regel als VMs oder auf physischen Hosts bereitgestellt und verwenden für die Isolation physische Maschinen oder Hypervisoren. Arbeitslasten aus Containern und ihre Prozesse werden in einem gemeinsam genutzten Betriebssystem ausgeführt, das einen Mechanismus zum Isolieren der Workloads erfordert

Zero Trust

By Johann-Peter Hartmann

Zero Trust

In Deutschland haben Cloud-Technologien immer noch ein Vertrauensproblem. Die gefühlte Sicherheit ist kleiner, wenn der Server nicht im eigenen Rechenzentrum steht, und behält die kritischen Daten lieber bei sich. Dabei bietet moderne Cloud-Technologien wie ZeroTrust, CryptoShredding, Data Tagging und der Shift Left viel mehr Sicherheit, Auditfähigkeit und Vertrauenswürdigkeit als es altbackene Firewall-Zonen, Serverschränke und Penetration-Tests bieten könnten.

  • 328