You've already forked ansible-role-act-runner
fix: pass token via cli arg
This commit is contained in:
161
.kiro/steering/security-guidelines.md
Normal file
161
.kiro/steering/security-guidelines.md
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
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
|
||||
|
||||
```yaml
|
||||
# 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
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```yaml
|
||||
# Nur wenn unbedingt erforderlich
|
||||
act_runner_config:
|
||||
container:
|
||||
privileged: true
|
||||
# Dokumentiere WARUM privileged erforderlich ist
|
||||
```
|
||||
|
||||
### Volume Restrictions
|
||||
|
||||
```yaml
|
||||
act_runner_config:
|
||||
container:
|
||||
valid_volumes:
|
||||
- "/tmp"
|
||||
- "/var/cache"
|
||||
# NIEMALS: "/", "/etc", "/var/lib"
|
||||
```
|
||||
|
||||
### Docker Socket
|
||||
|
||||
```yaml
|
||||
# Vorsicht bei Docker Socket Mount
|
||||
valid_volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
# Ermöglicht Container-Escape!
|
||||
```
|
||||
|
||||
## Netzwerk-Sicherheit
|
||||
|
||||
### TLS-Konfiguration
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```yaml
|
||||
# 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
|
||||
|
||||
```yaml
|
||||
- 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
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
1. Runner-Service stoppen
|
||||
2. Token widerrufen in Gitea
|
||||
3. Logs analysieren
|
||||
4. System neu aufsetzen
|
||||
5. 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
|
||||
Reference in New Issue
Block a user