This recording is the operator-visible version of the Blastwall PoC. It runs from bastion-01, uses eigenstate.ipa to read IdM state before enforcement, deploys the policy to mirror-registry, and proves that the mapped automation session lands in blastwall_u before the AF_ALG probe is blocked.
Purpose
I wanted the demo to show the whole control path without requiring AAP. The important point is not that a single playbook can fail a probe. The important point is that the same information AAP would consume is visible before the mutation step, and the final denial is enforced by the target host SELinux policy.
The observable flow is:
bastion-01runs the Calabi PoC playbooks locally.eigenstate.ipavalidates the IdM SELinux user map, HBAC rule, sudo rule, and candidate host view.mirror-registryreceives the Blastwall policy RPM.- The automation identity logs in with the expected SELinux context.
- The AF_ALG/authencesn probe is blocked for that mapped automation session.
Recording Artifact
- setting:
cloud-usershell onbastion-01.workshop.lan - target host:
mirror-registry.workshop.lan - recorded command:
./scripts/blastwall-poc-demo/run-demo.sh - terminal shape: 272 columns by 54 rows, preserving the operator prompt
Embedded Demo
What The Demo Proves
- The IdM side is not assumed. It is queried before the endpoint enforcement play runs.
- The inventory candidate view includes
mirror-registry.workshop.lanthrough the Blastwall policy objects. - The target host can install or refresh the Blastwall SELinux policy RPM through an ordinary Ansible workflow.
- The mapped automation session reports
blastwall_u:blastwall_r:blastwall_t:s0. - The AF_ALG/authencesn probe reports
BLOCKEDwith errno 13.
Sequence In The Recording
1. Start from the bastion-local PoC tree
cd /opt/openshift/aws-metal-openshift-demo/blastwall/poc-calabi
pwd
The recording starts from the staged repository on bastion-01. That keeps the execution boundary honest: the workstation is not directly driving guest configuration.
2. Run the read-side IdM gate
ansible-playbook 15-validate-idm-with-eigenstate.yml
This is where eigenstate.ipa earns its place in the workflow. The play reads the SELinux map, HBAC rule, sudo rule, and inventory candidate view before the enforcement play touches mirror-registry.
hbac_rule: blastwall-automation-ssh
selinux_map: blastwall-root-local-map
sudo_rule: blastwall-root-local-sudo
target: mirror-registry.workshop.lan
3. Deploy policy and test the mapped session
ansible-playbook 30-deploy-and-test.yml
The target host installs the Blastwall RPM, refreshes local policy state, and then runs the probe through the mapped automation identity.
4. Check the proof line
grep -E 'login_context|sudo_context|probe|BLOCKED|blastwall_u' /tmp/blastwall-poc-proof.log
The proof line is intentionally small. The login context and sudo context are confined, and the probe is denied by host policy.
login_context: blastwall_u:blastwall_r:blastwall_t:s0
probe: BLOCKED: AF_ALG socket creation denied with errno 13
sudo_context: blastwall_u:blastwall_r:blastwall_t:s0
What This Demo Does Not Claim
- It does not replace a kernel fix.
- It does not claim SELinux can inspect the same kernel hook arguments as BPF LSM.
- It does not require AAP to prove the local behavior.
- It does not say host markers are proof by themselves. They are useful only after a local verification workflow writes them.