A project with a supervisor and a central daemon.
Project description
25FS_IMVS14: System zur feingranularen Ressourcen-Zugriffskontrolle unter Linux
IP6 Bachelorarbeit
Problematik
Linux bietet verschiedene Mechanismen zur Kontrolle des Zugriffs auf Systemressourcen wie Dateien oder Netzwerkverbindungen (z. B. AppArmor, SELinux). Diese Mechanismen weisen jedoch folgende Schwächen auf:
- Ungenauigkeit: Die Regeln sind oft zu allgemein und erlauben keine feingranulare Zugriffskontrolle.
- Komplexität: Die Konfiguration erfordert spezialisiertes Wissen und ist statisch, d. h., sie passt sich nicht dynamisch an.
- Mangelnde Benutzerinteraktion: Benutzer werden nicht aktiv über Zugriffsversuche informiert und können diese nicht situativ erlauben oder verweigern.
Lösung
Linux Access Control ist ein benutzerfreundliches Werkzeug, das die Steuerung des Zugriffs von Programmen auf Ressourcen unter Linux ermöglicht. Es bietet:
- Überwachung: Überwachung von Systemaufrufen, die Programme nutzen, um auf kritische Dateien zuzugreifen.
- Benutzerkontrolle: Interaktive Abfragen, ob ein Zugriff erlaubt oder dauerhaft blockiert werden soll.
- Verständliche Kommunikation: Übersetzung von Systemaufrufen und Parametern in leicht verständliche Fragen, um fundierte Entscheidungen zu ermöglichen.
Benutzung
Schnellstart (als geklonte Repository)
# Build-Prozess
make create # Erstellt eine Python-Umgebung und kompiliert den C-Code
# In zwei separaten Terminals ausführen:
make ut # Startet das User-Tool und wartet auf Anfragen über ZMQ
make run # Startet den Supervisor mit einer Demo für Datei-Zugriffe
Verfügbare Make-Befehle
# Setup und Verwaltung
make create # Erstellt virtuelle Umgebung und kompiliert Demo-Programme
make delete # Löscht die virtuelle Umgebung und alle temporären Dateien
make build # Erstellt ein Python-Paket zur Veröffentlichung
# Anwendungsausführung
make ut # Startet das User-Tool im normalen Modus
make utv # Startet das User-Tool im Debug-Modus mit ausführlicher Protokollierung
make run # Führt die Communication-Demo mit dem Supervisor aus
make run2 # Führt die Datei-Operationen-Demo mit dem Supervisor aus
make run3 # Führt die Child-Process-Demo mit dem Supervisor aus
make runv # Führt die Demo im Debug-Modus aus (auch run2v, run3v verfügbar)
# Tests und Qualitätssicherung
make test # Führt alle Tests mit Coverage-Bericht aus
make pylint # Führt Pylint-Codeanalyse aus
# Benchmarking
make plots # Generiert Plots aus Benchmark-Ergebnissen
make setup-plot-env # Installiert Abhängigkeiten für die Plot-Generierung
Schnellstart (als python Installation)
# Installieren Sie das Paket in einer Python-Umgebung
pip install ip6-access-control
# In zwei separaten Terminals ausführen:
user-tool # Startet das User-Tool und wartet auf Anfragen über ZMQ
supervisor ls # Startet den Supervisor mit dem absoluten Pfad des Programms (z. B. "ls")
Benchmarking
Das Projekt enthält Tools zur Leistungsmessung des Access Control Systems. Benchmarks werden verwendet, um die Performance-Auswirkungen der Zugriffskontrolle zu messen und verschiedene Szenarien zu vergleichen.
Remote Benchmarks mit Ansible
Für konsistentere Ergebnisse wurden Benchmarks auf 2 Remote-Maschinen ausgeführt:
cd benchmark/ansible
# Vorbereitung der Remote-Umgebungen
ansible-playbook -i inventory.yml prepare-environment.yml
# Ausführen der Benchmarks auf allen Remote-Maschinen
ansible-playbook -i inventory.yml run_benchmark.yml
# Generieren von Plots aus den Ergebnissen
cd ..
make plots
Ergebnisanalyse
Die Benchmark-Ergebnisse werden in der results/ Verzeichnis gespeichert und mit Matplotlib visualisiert:
- Histogramme: Zeigen die Verteilung der Ausführungszeiten
- Liniendiagramme: Zeigen Trends und potenzielle Performance-Abnahmen über mehrere Ausführungen
- Box-Plots: Vergleichen die Leistung zwischen verschiedenen Szenarien und Umgebungen
Die durchschnittlichen Ausführungszeiten werden in der Datei average_times.log protokolliert und können als schneller Vergleichspunkt verwendet werden.
# Anzeigen der durchschnittlichen Zeiten
cat benchmark/results/*/average_times.log
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ip6_access_control-1.0.0.post4.tar.gz.
File metadata
- Download URL: ip6_access_control-1.0.0.post4.tar.gz
- Upload date:
- Size: 51.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
212382203c1f48794e9764888e7f6c79e10edc7216953612831c3314a033d103
|
|
| MD5 |
5a6217bedd28edd011d622598d8da399
|
|
| BLAKE2b-256 |
b9ed8d5cf92a5847ddb0ef852fc019ccd988fe2281484b3df54248ba80b04686
|
Provenance
The following attestation bundles were made for ip6_access_control-1.0.0.post4.tar.gz:
Publisher:
build-upload.yml on Soldatstar/ip6-access-control
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ip6_access_control-1.0.0.post4.tar.gz -
Subject digest:
212382203c1f48794e9764888e7f6c79e10edc7216953612831c3314a033d103 - Sigstore transparency entry: 267543624
- Sigstore integration time:
-
Permalink:
Soldatstar/ip6-access-control@afa3ec4ed690495ab11a0bef4e97404444a526f6 -
Branch / Tag:
refs/tags/1.0.0post4 - Owner: https://github.com/Soldatstar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-upload.yml@afa3ec4ed690495ab11a0bef4e97404444a526f6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ip6_access_control-1.0.0.post4-py3-none-any.whl.
File metadata
- Download URL: ip6_access_control-1.0.0.post4-py3-none-any.whl
- Upload date:
- Size: 44.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18718c6bac4aba64b573c355444edcf259ce325cf014a31a6201d14058bc4fa1
|
|
| MD5 |
1a6c10caade6af9bb3aa32021f488d6f
|
|
| BLAKE2b-256 |
ec4bec07e39817ea9622862ba490ab234567961096f4b457f424916127d4871b
|
Provenance
The following attestation bundles were made for ip6_access_control-1.0.0.post4-py3-none-any.whl:
Publisher:
build-upload.yml on Soldatstar/ip6-access-control
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ip6_access_control-1.0.0.post4-py3-none-any.whl -
Subject digest:
18718c6bac4aba64b573c355444edcf259ce325cf014a31a6201d14058bc4fa1 - Sigstore transparency entry: 267543628
- Sigstore integration time:
-
Permalink:
Soldatstar/ip6-access-control@afa3ec4ed690495ab11a0bef4e97404444a526f6 -
Branch / Tag:
refs/tags/1.0.0post4 - Owner: https://github.com/Soldatstar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-upload.yml@afa3ec4ed690495ab11a0bef4e97404444a526f6 -
Trigger Event:
release
-
Statement type: