Polycrate API für Teams: Zentrales Monitoring und Remote-Triggering
TL;DR Die Polycrate API macht aus einzelnen Workspaces eine Team-Plattform: alle Workspaces, Action …
Diese Serie zeigt Schritt für Schritt, wie Ansible mit Polycrate zu einer strukturierten, teilbaren und compliance-fähigen Automatisierungsplattform wird – von den Grundlagen bis zu Enterprise-Szenarien.
Sowohl NIS‑2 als auch DSGVO verschärfen den Druck auf nachvollziehbares, dokumentiertes IT-Betriebsverhalten:
Orientierung zu regulatorischen Rahmenbedingungen und ihrer Operationalisierung bietet die Landingpage Compliance Compass.
In Sicherheitsvorfällen taucht praktisch immer als eine der ersten Fragen auf:
Wer hat wann per SSH auf welchen Server zugegriffen?
Mit klassischem Werkzeugmix – ein bisschen Ansible, ein bisschen manuelles SSH, lokale ~/.bash_history, verstreute Syslog-Einträge – ist diese Frage oft nur mit großem Aufwand zu beantworten, manchmal gar nicht.
Polycrate setzt genau dort an: Es macht Ansible, SSH-Zugriffe und Workspace-Synchronisation auditierbar – ohne dass Ihr Team zusätzliche Agenten oder Spezialtools auf allen Servern ausrollen muss. Alles läuft über die Polycrate CLI und die Polycrate API, siehe API-Dokumentation und SSH-Integration.
Bevor wir in die Details des Audit-Trails einsteigen, kurz zur Einordnung, was Polycrate generell bringt:
kubectl, Helm & Co. laufen in einem Container, den Polycrate steuert. Sie müssen lokal kein Ansible installieren, keine Python-Versionen jonglieren und haben weniger Supply-Chain-Risiken. Jeder im Team arbeitet mit derselben, reproduzierbaren Toolchain – ein Kernprinzip von gutem Platform Engineering.Auf dieser Basis setzt Polycrate eine zusätzliche Schicht: einen zentralen Audit-Trail für alle Betriebsaktionen, abrufbar und integrierbar über die Polycrate API.
In vielen Teams sieht der Alltag heute so aus:
git pull aktualisiert oder per Copy/Paste verteilt.Mit plain Ansible haben Sie bestenfalls:
Polycrate schließt diese Lücken:
So entsteht eine vollständige Operations-Historie, in der automatisierte und manuelle Eingriffe gleichwertig aufscheinen.
SSH ist der Klassiker für Incident-Response-Fragen – und einer der größten blinden Flecken in vielen Umgebungen.
Mit Polycrate läuft eine SSH-Session typischerweise so:
polycrate ssh server01.acme-corp.comDie Details zur SSH-Funktion finden Sie in der SSH-Dokumentation.
Wenn Sie SSH über Polycrate verwenden, passiert im Hintergrund:
Typischer Datensatz in der API (vereinfachtes Beispiel):
{
"type": "ssh_session",
"id": "c5f4411d-641a-4b0a-8ee6-291d1c725c20",
"workspace": "acme-corp-automation",
"user": "alice",
"cli_instance_id": "cli-8f3891b2",
"host": {
"inventory_name": "server01.acme-corp.com",
"ansible_host": "10.0.12.34",
"hostname_reported": "srv-web-01"
},
"started_at": "2026-03-24T10:12:03Z",
"ended_at": "2026-03-24T10:27:45Z",
"duration_seconds": 942,
"exit_code": 0
}Damit können Sie in einem Vorfall gezielt fragen:
server01.acme-corp.com im Zeitraum X–Y?Wichtig:
Die SSH-Verbindung selbst läuft weiterhin per SSH-Client, nicht über einen API-Tunnel. Polycrate nutzt die API nur für das Audit-Event – keine zusätzliche Agenteninstallation auf den Zielsystemen.
Im Vergleich dazu müssten Sie mit plain Ansible:
Mit Polycrate reicht ein konsistenter Einstiegspunkt (polycrate ssh) – der Rest passiert automatisch.
Polycrate-Workspaces sind die Einheit, in der Sie Blöcke, Inventories und Konfiguration verwalten, siehe Workspaces-Dokumentation.
Typischer Workflow:
polycrate workspace syncDahinter verbirgt sich meist ein Git-Pull/Push oder ein Sync gegen ein zentrales Repository. Polycrate protokolliert dazu über die API u.a.:
Beispiel eines API-Eintrags:
{
"type": "workspace_sync",
"id": "0c19e60f-9d4f-4f3b-b9fb-909cb7ab2f37",
"workspace": "acme-corp-automation",
"user": "bob",
"git": {
"branch": "main",
"before_sha": "dc3a1f7",
"after_sha": "a42b9e1"
},
"encryption": {
"enabled": true,
"key_id": "age1qg4...",
"status": "ok"
},
"result": "success",
"timestamp": "2026-03-24T08:02:11Z"
}Das ist Gold wert für Compliance und Revisionssicherheit:
Mit plain Ansible müssten Sie dafür externe Git-Logs, CI-Logs und manuelle Dokumentation korrelieren.
Eine häufig unterschätzte Frage in Audits lautet:
Welche Version der Operations-Tools ist im Einsatz – und wo?
Polycrate beantwortet das, indem jede CLI-Instanz sich regelmäßig bei der API meldet, z.B. beim Start einer Action, eines Syncs oder einer SSH-Session. Ein Datensatz enthält u.a.:
cli_instance_idcli_version)Beispiel:
{
"type": "cli_instance",
"id": "cli-8f3891b2",
"user": "alice",
"cli_version": "0.8.4",
"os": "linux",
"arch": "amd64",
"hostname": "alice-laptop",
"first_seen": "2026-03-22T09:00:00Z",
"last_seen": "2026-03-24T10:27:45Z"
}Damit können Sie:
Polycrate verschlüsselt Workspace-Secrets mit age, siehe Workspace-Verschlüsselung. Statt jeden Workspace einzeln zu managen, können Sie über die API:
In NIS‑2- und DSGVO-Kontexten ist das entscheidend:
Um das greifbar zu machen, schauen wir uns einen kleinen, aber vollständigen Workflow an:
acme-corp-automationlinux-patch, der ein Ansible-Playbook ausführtinventory.yml)# workspace.poly
name: acme-corp-automation
organization: acme
config:
api_base_url: "https://polycrate-api.acme-corp.com"
blocks:
- name: linux-patch
from: linux-patch
config:
target_hosts: "all"Weitere Details zu Workspaces finden Sie in der Workspaces-Dokumentation und zu Best Practices in den Polycrate-Best Practices.
# blocks/linux-patch/block.poly
name: linux-patch
version: 0.1.0
kind: generic
config:
target_hosts: "all"
actions:
- name: patch
description: "Installiere Security-Updates auf Linux-Servern"
type: ansible
playbook: patch.ymlDer Block liegt lokal im Workspace (./blocks/linux-patch). In echten Setups könnten Sie diesen Block z.B. auch aus einer Registry oder von PolyHub beziehen – immer mit expliziter Version, siehe Registry-Dokumentation.
# inventory.yml (Workspace-Root)
all:
hosts:
server01.acme-corp.com:
ansible_host: 10.0.12.34
ansible_user: ubuntu
server02.acme-corp.com:
ansible_host: 10.0.12.35
ansible_user: ubuntuPolycrate setzt ANSIBLE_INVENTORY automatisch auf dieses YAML-Inventory, siehe Ansible-Integration.
Wichtig: Wir verwenden nicht hosts: localhost mit connection: local, weil das nur im Polycrate-Container wirken würde.
# blocks/linux-patch/patch.yml
- name: Security-Patches installieren
hosts: "{{ block.config.target_hosts }}"
become: true
gather_facts: false
tasks:
- name: Paketlisten aktualisieren (APT)
ansible.builtin.apt:
update_cache: true
when: ansible_facts.os_family == "Debian"
- name: Security-Updates installieren (APT)
ansible.builtin.apt:
upgrade: dist
when: ansible_facts.os_family == "Debian"
- name: Alle Pakete aktualisieren (YUM/DNF)
ansible.builtin.yum:
name: "*"
state: latest
when: ansible_facts.os_family in ["RedHat", "Rocky", "AlmaLinux"]Die Variable block.config.target_hosts kommt direkt aus der block.poly und wird von Polycrate in den Ansible-Context injiziert, siehe Actions-Dokumentation.
Der Patch-Lauf wird so gestartet:
polycrate run linux-patch patchWas passiert dabei aus Audit-Sicht?
Wenn der Admin nun zusätzlich per SSH auf server01.acme-corp.com geht:
polycrate ssh server01.acme-corp.com…entstehen zusätzliche SSH-Session-Events, die Sie später mit dem Patch-Lauf und dem Commit-SHA aus dem letzten polycrate workspace sync korrelieren können.
Im Polycrate-API-Backend entsteht damit ein zusammenhängendes Bild:
linux-patch/patch → ausgerollte ÄnderungMehr zum Zusammenspiel von Blocks, Workflows und Actions finden Sie in der Blocks-Dokumentation und den Workflows.
Polycrate hilft Ihnen, zentrale Anforderungen aus NIS‑2 und DSGVO abzubilden:
Wichtig ist aber auch, klar zu benennen, was der Scope nicht umfasst:
ssh-Aufruf direkt aus einem Terminal, ohne Polycrate-Wrapper).In der Praxis ist Polycrate damit ein wichtiger Baustein in einem umfassenden Audit- und Monitoring-Stack, der in SIEM- oder GRC-Systeme integriert wird.
Mit plain Ansible könnten Sie einiges davon nachbauen:
ansible-playbook Timestamps loggen.Das ist alles machbar – erfordert aber:
Polycrate bringt diese Fähigkeiten integriert mit:
Sie müssen keine zusätzliche Infrastruktur bauen – nur Ihre bestehenden Workflows konsequent über Polycrate laufen lassen.
Polycrate erfasst alle SSH-Sessions, die über Polycrate gestartet werden (z.B. polycrate ssh host). Wenn ein Admin direkt ssh host im Terminal nutzt, ohne Polycrate, sieht die API diese Session nicht.
In der Praxis etabliert man daher einen Prozess:
So wird Polycrate zum natürlichen Einstiegspunkt für Operations – und der Audit-Trail wird vollständig.
Die Polycrate API bietet strukturierte JSON-Events für Action Runs, SSH-Sessions, Workspace-Syncs und mehr, siehe API-Dokumentation. Übliche Integrationswege sind:
Durch die klare Struktur lässt sich Polycrate gut in bestehende Use-Cases wie „Privileged Access Monitoring“ oder „Change Tracking“ einbinden.
Die Polycrate API speichert u.a. Usernamen, Hostnamen und CLI-Versionsinformationen, um Auditierbarkeit sicherzustellen. Wie stark diese Daten als personenbezogen gelten, hängt vom Kontext ab (z.B. Zuordnung zu realen Personen).
Für DSGVO-konforme Nutzung empfehlen wir:
ayedo unterstützt Sie dabei, Polycrate so zu konfigurieren und zu integrieren, dass die Anforderungen Ihrer Datenschutzbeauftragten erfüllt werden.
Weitere Fragen? Siehe unsere FAQ
Mit Polycrate und der dazugehörigen API erhalten Sie mehr als „nur“ ein Automatisierungs-Tool: Sie bekommen einen Operations-Layer, der technische Exzellenz mit Auditierbarkeit verbindet.
In diesem Beitrag haben Sie gesehen:
ayedo begleitet Teams genau an dieser Schnittstelle zwischen Automatisierung und Compliance: von der Gestaltung Ihres Platform-Engineering-Ansatzes über die Einführung von Polycrate bis hin zur Integration der Polycrate API in Ihre bestehenden SIEM- und GRC-Systeme.
Wenn Sie sehen möchten, wie der Audit-Trail in Ihrer Umgebung konkret aussehen kann, sind gute nächste Schritte:
TL;DR Die Polycrate API macht aus einzelnen Workspaces eine Team-Plattform: alle Workspaces, Action …
TL;DR Das Model Context Protocol (MCP) ist ein offener Standard: KI-Clients sprechen per JSON-RPC …
TL;DR Du baust einen wiederverwendbaren Polycrate-Block, der Nginx und Let’s Encrypt (via …