RACF Audit Reader V2 â Analyseur sĂ©curitĂ© RACF / ICH / IRR / SAF
Installer, tester et exploiter racf_audit_reader_v2.py, un utilitaire autonome qui analyse des exports RACF, SYSLOG sécurité, messages ICH, IRR, violations SAF, commandes RACF, accÚs datasets, changements de privilÚges et dérives de conformité.
Le bouton principal pointe explicitement vers /static/toolbox/racf_audit_reader_v2.py. DĂ©pose ce script dans static/toolbox/ pour lâexposer depuis IDEO-Lab.
RACF Audit Reader V2 est orientĂ© audit sĂ©curitĂ© et conformitĂ©. Il transforme des logs RACF trĂšs verbeux en timeline, findings, score de risque, dĂ©rives de groupes, commandes sensibles, datasets exposĂ©s et alertes de privilĂšges. Lâoutil ne remplace pas un audit humain, mais il accĂ©lĂšre considĂ©rablement le triage.
Ce que le moteur analyse
| Domaine | Signaux analysés | Diagnostic produit |
|---|---|---|
| Violations RACF | ICH408I, IRR, ACCESS DENIED, INSUFFICIENT ACCESS, S913 | Top users refusĂ©s, ressources sensibles, gravitĂ©, rĂ©pĂ©tition, piste dâincident. |
| Commandes sécurité | ALTUSER, ADDUSER, CONNECT, PERMIT, RDEFINE, RALTER, SETROPTS, RVARY | Changements sensibles, élévation de privilÚges, drift groupe, contrÎle change-management. |
| PrivilĂšges | SPECIAL, OPERATIONS, AUDITOR, CLAUTH, BPX.SUPERUSER, UID(0) | Suspicion dâescalade, utilisateurs trop puissants, revue des habilitations. |
| Datasets sensibles | SYS1, RACF, SECURITY, PAYROLL, HR, FIN, PROD, DB2, CICS | AccÚs refusés ou autorisés sur zones critiques, exposition potentielle. |
| Baseline / drift | Comparaison current vs baseline des users, groups, commands, datasets. | Nouveaux privilĂšges, nouvelles permissions, modifications non attendues. |
--redact avant tout partage externe.Téléchargement des fichiers
Cette page fournit les liens explicites vers le script Python, les samples dâaudit, la policy JSON et le pack complet. Pour IDEO-Lab, les fichiers doivent ĂȘtre dĂ©posĂ©s sous /static/toolbox/.
Script Python autonome, sans dépendance externe, à lancer sur un export RACF/SYSLOG sécurité texte.
Violations, accĂšs dataset, commandes RACF, SETROPTS et privilĂšges.
Référence de comparaison pour identifier les changements et dérives.
Focus SPECIAL, OPERATIONS, AUDITOR, BPX.SUPERUSER, CONNECT sensible.
Focus audit compliance, SETROPTS, UACC, PERMIT et policy drift.
Patterns sensibles, groupes privilégiés, datasets critiques et seuils.
Script, samples, policy, exports et rapports de démonstration.
Arborescence static recommandée
static/
toolbox/
racf_audit_reader_v2.py
racf_audit_reader_v2_pack.zip
sample_racf_v2_mixed.txt
sample_racf_v2_baseline.txt
sample_racf_v2_privilege.txt
sample_racf_v2_compliance.txt
sample_racf_v2_policy.json
racf_audit_reader_v2_guide.htmlInstallation de RACF Audit Reader V2
Le script est autonome. Il suffit dâune version Python moderne et dâun fichier texte exportĂ© depuis SYSLOG, OPERLOG, SMF/RACF converti, ou une extraction sĂ©curitĂ© contenant des messages ICH/IRR/RACF/SAF.
1. Arborescence locale recommandée
racf_audit_lab/
bin/
racf_audit_reader_v2.py
input/
sample_racf_v2_mixed.txt
sample_racf_v2_baseline.txt
sample_racf_v2_privilege.txt
sample_racf_v2_compliance.txt
sample_racf_v2_policy.json
output/
reports/
csv/
json/Ce bouton pointe explicitement vers /static/toolbox/racf_audit_reader_v2.py.
2. Installation Linux / macOS
mkdir -p racf_audit_lab/bin racf_audit_lab/input racf_audit_lab/output/reports racf_audit_lab/output/csv racf_audit_lab/output/json
cp racf_audit_reader_v2.py racf_audit_lab/bin/
cp sample_racf_v2_*.txt racf_audit_lab/input/
cp sample_racf_v2_policy.json racf_audit_lab/input/
cd racf_audit_lab
python3 bin/racf_audit_reader_v2.py --demo mixed3. Installation Windows PowerShell
New-Item -ItemType Directory -Force racf_audit_lab\bin, racf_audit_lab\input, racf_audit_lab\output\reports, racf_audit_lab\output\csv, racf_audit_lab\output\json
Copy-Item .\racf_audit_reader_v2.py .\racf_audit_lab\bin\
Copy-Item .\sample_racf_v2_*.txt .\racf_audit_lab\input\
Copy-Item .\sample_racf_v2_policy.json .\racf_audit_lab\input\
Set-Location .\racf_audit_lab
python .\bin\racf_audit_reader_v2.py --demo mixed4. Test de validation
python bin/racf_audit_reader_v2.py input/sample_racf_v2_mixed.txt \
--baseline input/sample_racf_v2_baseline.txt \
--policy input/sample_racf_v2_policy.json \
--profile security \
--html output/reports/sample_racf_v2_mixed_report.html \
--json output/json/sample_racf_v2_mixed_analysis.json \
--csv-events output/csv/sample_racf_v2_mixed_events.csv \
--csv-findings output/csv/sample_racf_v2_mixed_findings.csv \
--csv-users output/csv/sample_racf_v2_mixed_users.csv \
--csv-datasets output/csv/sample_racf_v2_mixed_datasets.csv \
--csv-groups output/csv/sample_racf_v2_mixed_groups.csv \
--csv-commands output/csv/sample_racf_v2_mixed_commands.csv \
--csv-categories output/csv/sample_racf_v2_mixed_categories.csv \
--csv-compare output/csv/sample_racf_v2_mixed_compare.csvFichiers input attendus
RACF Audit Reader V2 attend un fichier texte brut. Lâextension peut ĂȘtre .txt, .log, .syslog, .operlog, .racf ou .lst. Les lignes peuvent provenir de SYSLOG, OPERLOG, extracts SMF/RACF dĂ©jĂ convertis, ou de traces de commandes sĂ©curitĂ©.
TĂ©lĂ©charger dâabord le script Python, puis lancer lâanalyse sur un export RACF/SYSLOG sĂ©curitĂ©.
1. Sources acceptées
| Source | Contenu typique | Usage |
|---|---|---|
SYSLOG / OPERLOG | Messages ICH/IRR/RACF/SAF, access denied, S913, violations. | Timeline dâincident sĂ©curitĂ© et triage opĂ©rationnel. |
| SMF/RACF converti | ĂvĂ©nements dâaudit, access attempts, allowed/denied, user/group/resource. | Audit compliance, historisation et reporting sĂ©curitĂ©. |
| Commandes RACF | ALTUSER, CONNECT, PERMIT, SETROPTS, RDEFINE, RALTER. | DĂ©tection changements sensibles et drift dâhabilitations. |
| Baseline | Snapshot précédent des événements ou permissions. | Comparaison des nouveaux privilÚges, groupes, datasets, commandes. |
| Policy JSON | Patterns sensibles, groupes privilĂ©giĂ©s, datasets critiques, seuils. | Adaptation aux conventions sĂ©curitĂ© de lâentreprise. |
2. Exemple minimal de trace RACF
08:11:03 ICH408I USER(PAYUSR1) GROUP(PAYROLL) NAME(PAYROLL USER) DATASET(PAYROLL.PROD.MASTER) CL(DATASET)
08:11:03 ICH408I USER(PAYUSR1) INSUFFICIENT ACCESS AUTHORITY ACCESS INTENT(READ) ACCESS ALLOWED(NONE)
08:12:44 RACF COMMAND: ALTUSER PAYADM SPECIAL OPERATIONS BY SECADM1
08:13:02 RACF COMMAND: CONNECT PAYUSR1 GROUP(SYS1ADM) AUTHORITY(JOIN) BY SECADM1
08:14:33 RACF COMMAND: SETROPTS NOAUDIT NOWARNING BY SECADM1
08:15:18 IEF450I PAYJOB01 STEP010 - ABEND=S913 REASON=000000043. Samples disponibles
Violations, privilege escalation, SETROPTS, groups et datasets sensibles.
Référence de comparaison pour drift et changements non attendus.
Cas concentré sur SPECIAL, OPERATIONS, AUDITOR, BPX.SUPERUSER.
Cas orienté audit : UACC, SETROPTS, PERMIT, policy drift.
--redact, puis contrĂŽler manuellement les evidence lines.Utilisation quotidienne
1. Modes démo intégrés
python racf_audit_reader_v2.py --demo mixed
python racf_audit_reader_v2.py --demo privilege
python racf_audit_reader_v2.py --demo compliance2. Analyse simple dâun fichier
python racf_audit_reader_v2.py input/sample_racf_v2_mixed.txt3. Analyse complĂšte avec exports
python racf_audit_reader_v2.py input/sample_racf_v2_mixed.txt \
--baseline input/sample_racf_v2_baseline.txt \
--policy input/sample_racf_v2_policy.json \
--profile security \
--json output/json/racf_analysis.json \
--html output/reports/racf_report.html \
--csv-events output/csv/racf_events.csv \
--csv-findings output/csv/racf_findings.csv \
--csv-users output/csv/racf_users.csv \
--csv-datasets output/csv/racf_datasets.csv \
--csv-groups output/csv/racf_groups.csv \
--csv-commands output/csv/racf_commands.csv \
--csv-categories output/csv/racf_categories.csv \
--csv-compare output/csv/racf_compare.csv4. Mode anonymisé
python racf_audit_reader_v2.py input/production_racf_log.txt \
--policy input/site_security_policy.json \
--profile audit \
--redact \
--html output/reports/production_racf_redacted.html \
--json output/json/production_racf_redacted.json5. Mode batch strict
python racf_audit_reader_v2.py input/nightly_racf_extract.txt \
--profile compliance \
--policy input/site_security_policy.json \
--html output/reports/nightly_racf_report.html \
--csv-findings output/csv/nightly_racf_findings.csv \
--fail-on CRITICALParamĂštres de ligne de commande
1. ParamĂštres dâentrĂ©e et de sortie
| ParamĂštre | Description | Exemple |
|---|---|---|
input_file | Fichier RACF/SYSLOG sécurité texte à analyser. | input/racf_log.txt |
--demo | Lance un sample intégré : mixed, privilege, compliance. | --demo mixed |
--policy | Charge une policy JSON : patterns, groupes, datasets sensibles, seuils. | --policy site_security_policy.json |
--baseline | Compare lâĂ©tat actuel Ă une rĂ©fĂ©rence prĂ©cĂ©dente. | --baseline baseline.txt |
--json | Exporte lâanalyse complĂšte en JSON. | --json output/analysis.json |
--html | GénÚre le rapport HTML. | --html output/report.html |
--csv-events | Exporte les événements normalisés. | --csv-events output/events.csv |
--csv-findings | Exporte les anomalies et recommandations. | --csv-findings output/findings.csv |
--csv-users | Exporte la synthĂšse par user. | --csv-users output/users.csv |
--csv-datasets | Exporte la synthĂšse par dataset. | --csv-datasets output/datasets.csv |
--csv-groups | Exporte la synthĂšse par groupe. | --csv-groups output/groups.csv |
--csv-commands | Exporte les commandes RACF détectées. | --csv-commands output/commands.csv |
--csv-categories | Exporte le scoring par catégorie. | --csv-categories output/categories.csv |
--csv-compare | Exporte les différences baseline/current. | --csv-compare output/compare.csv |
2. ParamĂštres dâanalyse et de gouvernance
| ParamÚtre | Effet | Usage recommandé |
|---|---|---|
--profile | Profil : production, security, compliance, audit, privilege, training, strict. | Ajuster la lecture métier et la sévérité selon le contexte. |
--redact | Masque users, datasets et identifiants sensibles dans les sorties. | Partage externe, support, ticket ou démonstration. |
--fail-on | Retourne un code erreur Ă partir dâune sĂ©vĂ©ritĂ© donnĂ©e. | --fail-on ERROR ou --fail-on CRITICAL. |
3. Exemple profil compliance
python racf_audit_reader_v2.py input/sample_racf_v2_compliance.txt \
--profile compliance \
--policy input/sample_racf_v2_policy.json \
--html output/reports/compliance_report.html \
--csv-findings output/csv/compliance_findings.csv \
--csv-categories output/csv/compliance_categories.csvExemples dâutilisation
ScĂ©nario 1 â Violations dâaccĂšs rĂ©pĂ©tĂ©es
Un user provoque plusieurs refus sur datasets sensibles, avec risque dâusage non autorisĂ© ou rĂŽle mal provisionnĂ©.
python racf_audit_reader_v2.py input/sample_racf_v2_mixed.txt \
--profile security \
--policy input/sample_racf_v2_policy.json \
--html output/reports/denied_access_report.html \
--csv-users output/csv/denied_users.csv \
--csv-datasets output/csv/denied_datasets.csvScĂ©nario 2 â Suspicion dâescalade de privilĂšges
Détection de SPECIAL, OPERATIONS, CONNECT à un groupe sensible, BPX.SUPERUSER ou UID(0).
python racf_audit_reader_v2.py input/sample_racf_v2_privilege.txt \
--profile privilege \
--policy input/sample_racf_v2_policy.json \
--html output/reports/privilege_report.html \
--csv-commands output/csv/privilege_commands.csv \
--csv-groups output/csv/privilege_groups.csvScĂ©nario 3 â Audit compliance nocturne
ContrÎle régulier SETROPTS, UACC, PERMIT dangereux, changements de groupes et dérives baseline.
python racf_audit_reader_v2.py input/nightly_racf_extract.txt \
--baseline input/previous_racf_baseline.txt \
--policy input/site_security_policy.json \
--profile compliance \
--html output/reports/nightly_compliance_report.html \
--json output/json/nightly_compliance_analysis.json \
--csv-findings output/csv/nightly_compliance_findings.csv \
--csv-compare output/csv/nightly_compliance_compare.csv \
--fail-on CRITICALScĂ©nario 4 â Rapport anonymisĂ© pour ticket externe
python racf_audit_reader_v2.py input/security_incident.txt \
--profile audit \
--redact \
--html output/reports/security_incident_redacted.html \
--csv-findings output/csv/security_incident_redacted_findings.csvCompliance, drift et lecture sécurité
La V2 nâest pas seulement un lecteur de messages. Elle doit aider Ă distinguer un incident dâaccĂšs dâun changement de sĂ©curitĂ©, un changement autorisĂ© dâune dĂ©rive, et un warning isolĂ© dâun vrai risque de privilĂšge.
1. Catégories de risques
| Catégorie | Signaux typiques | Lecture opérationnelle |
|---|---|---|
| Access violation | ICH408I, ACCESS DENIED, INSUFFICIENT ACCESS, S913. | AccÚs refusé, rÎle absent, user suspect ou tentative non autorisée. |
| Privilege escalation | SPECIAL, OPERATIONS, AUDITOR, BPX.SUPERUSER, UID(0). | Augmentation de pouvoir Ă justifier par change control. |
| Group drift | CONNECT Ă SYS1ADM, RACFADM, SECURITY, DB2ADM, CICSADM. | Appartenance Ă groupe sensible Ă contrĂŽler. |
| Dangerous policy | SETROPTS NOAUDIT, NOWARNING, NOPROTECTALL, UACC élevé. | Affaiblissement global de posture sécurité. |
| Sensitive dataset | SYS1, RACF, SECURITY, PAYROLL, HR, FIN, PROD, DB2, CICS. | Ressources à haute valeur métier ou systÚme. |
2. Exemple de policy JSON
{
"sensitive_dataset_patterns": ["SYS1", "RACF", "SECURITY", "PAYROLL", "HR", "FIN", "PROD", "DB2", "CICS"],
"privileged_groups": ["SYS1ADM", "RACFADM", "SECURITY", "DB2ADM", "CICSADM"],
"privileged_authorities": ["SPECIAL", "OPERATIONS", "AUDITOR", "CLAUTH", "BPX.SUPERUSER", "UID(0)"],
"dangerous_setropts": ["NOAUDIT", "NOWARNING", "NOPROTECTALL"],
"max_denials_per_user": 3,
"max_denials_per_dataset": 3
}3. Bon rĂ©flexe dâaudit
- Comparer systĂ©matiquement lâextraction actuelle avec une baseline validĂ©e.
- Ne pas classer une violation isolée comme incident majeur sans contexte utilisateur, dataset et horaire.
- Isoler les commandes RACF exĂ©cutĂ©es hors fenĂȘtre de changement.
- Vérifier les groupes privilégiés aprÚs chaque
CONNECT. - Surveiller les modifications globales
SETROPTS, souvent plus critiques quâun simple accĂšs refusĂ©.
Exports et exploitation des résultats
Vue lisible : score, summary, findings, users, datasets, groups, commands, categories et baseline drift.
Format complet pour API, stockage historique, portail compliance ou dashboard sécurité.
Une ligne par événement sécurité normalisé : timestamp, user, dataset, groupe, commande, message.
Une ligne par anomalie : sévérité, catégorie, description, recommandation et evidence.
SynthĂšses par entitĂ© pour prioriser audit, remĂ©diation et revue dâhabilitation.
Différence baseline/current pour détecter les nouvelles permissions, groupes ou commandes sensibles.
Exemple de synthĂšse console
RACF Audit Reader V2
Status : BLOCKED
Highest severity : CRITICAL
Risk score : 100/100
Profile : security
Lines : 15
Events : 15
Findings : 32
Users : 5
Datasets : 5
Groups : 2
Commands : 6Idée de table SQL pour historisation
CREATE TABLE racf_audit_run (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
source_name VARCHAR(255),
profile VARCHAR(32),
status VARCHAR(32),
highest_severity VARCHAR(16),
risk_score INTEGER,
event_count INTEGER,
finding_count INTEGER,
user_count INTEGER,
dataset_count INTEGER,
group_count INTEGER,
command_count INTEGER,
report_path VARCHAR(500),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Dépannage et bonnes pratiques
1. Le script ne dĂ©tecte pas dâĂ©vĂ©nements RACF
| Cause possible | Correction |
|---|---|
| Le fichier nâest pas du texte brut. | Exporter depuis SYSLOG/OPERLOG/outil SMF en texte, pas en PDF image. |
| Les messages ICH/IRR ont été filtrés. | Récupérer une extraction sécurité plus complÚte. |
| Les commandes RACF sont dans un format site-specific. | Adapter la policy ou ajouter des patterns dédiés. |
| Les datasets ou users sont anonymisés en amont. | Conserver un mapping interne sécurisé pour audit réel. |
2. Trop dâalertes remontĂ©es
Certains environnements ont beaucoup de refus normaux. Utiliser une policy JSON précise, isoler les groupes/datasets critiques, et comparer avec une baseline validée pour séparer le bruit des dérives réelles.
python racf_audit_reader_v2.py input/racf_extract.txt \
--profile compliance \
--policy input/site_security_policy.json \
--baseline input/validated_baseline.txt \
--fail-on CRITICAL \
--html output/reports/focused_racf_audit.html3. Check-list avant partage externe
- Utiliser
--redactpour masquer users, datasets, groupes et ressources sensibles. - Anonymiser aussi le nom du sysplex, LPAR, application, environnement et horaires si nécessaire.
- Conserver une copie brute interne pour validation du diagnostic.
- ContrÎler manuellement les evidence lines avant diffusion hors équipe sécurité.
- Ne pas automatiser une remédiation RACF sans validation humaine.
