You've already forked ansible-role-act-runner
3.0 KiB
3.0 KiB
inclusion
| inclusion |
|---|
| always |
Sicherheitsrichtlinien für Act Runner
Grundprinzipien
Least Privilege
- Runner läuft unter dediziertem Benutzer (
act_runner) - Minimale Berechtigungen für Dateien und Verzeichnisse
- Keine Root-Rechte für Runner-Prozess
Isolation
- Container-basierte Job-Ausführung
- Netzwerk-Isolation wo möglich
- Begrenzte Volume-Mounts
Konfigurationssicherheit
Secrets Management
# NIEMALS Secrets in Klartext
act_runner_token: "{{ vault_act_runner_token }}"
# Ansible Vault verwenden
ansible-vault encrypt_string 'secret-token' --name 'vault_act_runner_token'
Sichere Defaults
act_runner_config:
runner:
insecure: false # TLS-Verifikation aktiviert
container:
privileged: false # Kein privilegierter Modus
require_docker: true # Docker-Daemon erforderlich
Container-Sicherheit
Privileged Mode
# Nur wenn unbedingt erforderlich
act_runner_config:
container:
privileged: true
# Dokumentiere WARUM privileged erforderlich ist
Volume Restrictions
act_runner_config:
container:
valid_volumes:
- "/tmp"
- "/var/cache"
# NIEMALS: "/", "/etc", "/var/lib"
Docker Socket
# Vorsicht bei Docker Socket Mount
valid_volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
# Ermöglicht Container-Escape!
Netzwerk-Sicherheit
TLS-Konfiguration
act_runner_config:
runner:
insecure: false # Immer TLS verwenden
fetch_timeout: "5s" # Kurze Timeouts
Firewall-Regeln
- Nur ausgehende Verbindungen zu Gitea-Server
- Keine eingehenden Verbindungen erforderlich
- Docker-Netzwerk isolieren
Dateisystem-Sicherheit
Berechtigungen
# In tasks
- name: Create secure directory
file:
path: "{{ act_runner_lib_dir }}"
owner: "{{ act_runner_unix_user }}"
group: "{{ act_runner_unix_group }}"
mode: "0750" # Keine world-readable
Sensitive Files
- name: Template config with restricted permissions
template:
src: config.yaml.j2
dest: "{{ act_runner_config_file }}"
mode: "0640" # Nur Owner und Group
Monitoring und Logging
Log-Sicherheit
act_runner_config:
log:
level: info # Nicht debug in Production
Audit-Trail
- Alle Runner-Registrierungen loggen
- Service-Status überwachen
- Fehlgeschlagene Jobs protokollieren
Incident Response
Kompromittierung
- Runner-Service stoppen
- Token widerrufen in Gitea
- Logs analysieren
- System neu aufsetzen
- Neuen Token generieren
Verdächtige Aktivitäten
- Unerwartete Container-Images
- Excessive Resource Usage
- Netzwerk-Verbindungen zu unbekannten Hosts
Compliance
Datenverarbeitung
- Keine persistente Speicherung von Job-Daten
- Temporäre Dateien nach Job-Ende löschen
- Logs rotieren und archivieren
Zugriffskontrolle
- Dokumentiere wer Zugriff auf Runner-Token hat
- Regelmäßige Token-Rotation
- Prinzip der minimalen Berechtigung