BeyondTrust/POV

← Back to dashboard

Network Demo Cell

Audience: presenter · Profile: demo · Read this when: you are showing an emergency firewall change that nobody had to be handed a password for.

Preview. The bake has never been run against a live VyOS image: that a Packer shell provisioner configures one at all, and that the baked account is reachable once deployed, are both unobserved. Off by default; turn it on with the Network Demo Cell preview toggle in Settings. Work through the E2E verification checklist on your own image before you put this in front of anyone.

The dashboard can stand up a VyOS router/firewall — a real network OS, with a real configure mode — in a cloud sandbox's private subnet, with no external IP and no inbound rule, and layer the BeyondTrust stack on top. Same provisioning + three layers model as Cloud VMs; the network twist is that the device being demoed is a firewall, so "who may reconfigure it" and "what it permits" are visibly different questions:

GCP only, for now. The OT cell reached three clouds in later phases once its shape had settled, and this feature has a sharper reason to do the same: what a VyOS guest does with each cloud's key injection is the least certain thing about it, and answering that once is cheaper than answering it three times wrong. The whole feature is gated on pra_enabled — a cell without PRA is a device nobody can reach.


There is no cell job, and that is the design

The OT cell has an ot_cell_deploy parent job because it provisions a Web Jump and one protocol tunnel per brokered endpoint once the VM is up; the parent exists to do that wiring and own its teardown.

A network cell wires nothing. The plain gce_deploy path already provisions the Shell Jump, the Password Safe onboarding, the shared-Gateway reference, the expiry stamp and the inventory row — and a firewall needs no more than that. So a cell is an ordinary GCE deploy row carrying a marker, a forced onboarding method and its own preflight refusals.

The consequence is the useful part: Destroy and the auto-delete timer already work. The row they act on is a normal deploy row, so the VM, the Shell Jump and the Password Safe registration are reaped by the paths that reap every other VM, with nothing cell-specific to keep correct.

Before you deploy

The release train is your assertion

VyOS reorganised the firewall tree in 1.4. The commands you are about to type in front of an audience differ by train:

Train Baseline ruleset The demo's rule
1.4 and later set firewall ipv4 name BLOCKLIST … set firewall ipv4 name BLOCKLIST rule 10 action drop
1.3 set firewall name BLOCKLIST … set firewall name BLOCKLIST rule 10 action drop

The form asks which one, the same way the OT cell's form asks what runtime its image was baked with, and for the same reason: nothing in a cloud image's metadata says what a provisioner put inside it, and getting it wrong looks like a typo rather than a version mismatch — which is the worst way for a demo to fail, because you will try to fix the spelling.

What Password Safe does here

The cell is always onboarded with the traditional SSH method, never the cloud-native plugin, and the deploy refuses when the configured functional account is bound to one.

That refusal is the important part. All three cloud-native plugins manage a guest through an agent — Systems Manager on AWS, waagent on Azure, the Google guest agent on GCP — and VyOS runs none of them. Onboarded on the GCP default, the cell would onboard successfully, attach to a platform that can never talk to it, and look healthy until the first rotation — which is long after the demo.

Rotation needs a VyOS platform, and it is yours to build. The credential is vaulted, injected and never seen the moment the cell is onboarded — that is the whole of the "nobody is handed the firewall password" story, and it works today. Rotating it needs a Password Safe platform whose change command runs configure; set system login user … authentication plaintext-password …; commit; save in vbash, because VyOS regenerates ~/.ssh/authorized_keys from configuration and reverts a plain passwd at the next commit of system login. That platform is a Password Safe artifact rather than dashboard code, so it lives outside this repository — see the bake's README for the change command. Until it exists, demo the checkout half and say so; once it does, rotation is ordinary Password Safe behaviour.

The demo, end to end

Roughly fifteen minutes, and the pause in step 4 is the whole point.

  1. Set the scene. Traffic from a subnet has to be blocked now. Ask the room who holds the firewall password today, and how they would get it at 2 a.m.
  2. Request access. Check the cell's credential out in PRA. Nothing is displayed.
  3. Open the Shell Jump and make the change, reading it aloud as you go:

bash configure set firewall ipv4 name BLOCKLIST rule 10 action drop set firewall ipv4 name BLOCKLIST rule 10 source address 198.51.100.0/24 set firewall ipv4 name BLOCKLIST rule 10 description 'Blocked during INC-4471' commit save

Then confirm it is live: run show firewall ipv4 name BLOCKLIST. 4. Stop, and play it back. Open the session recording. Every keystroke, timestamped, with a name against it. This is the moment the demo lands — do not rush past it to the next feature. 5. Let the checkout lapse, and fail to reconnect with the credential you used. (Needs the VyOS platform above; without it the credential stays as issued and this step is a talking point rather than a demo.) 6. Destroy the cell from the Instances tab and show the VM, the Shell Jump and the managed system all go together.

On 1.3, substitute set firewall name BLOCKLIST … throughout.

E2E verification checklist

Troubleshooting

The Shell Jump connects to nothing, or asks for a password you do not have. The most likely cause is an image baked with neither VYOS_ADMIN_PUBKEY nor VYOS_ADMIN_PASSWORD. VyOS does not create users from a cloud's key injection the way a stock Linux image does, so that account has no credential at all. The bake warns about this; re-bake with a key.

set firewall … returns a syntax error. Wrong release train. Check /opt/netcell/IMAGE.txt on the cell — the bake records what it was built for.

The commit succeeds but the rule does nothing. The baseline ruleset was not attached, or the cell's VYOS_RULESET and the deploy form's baseline ruleset disagree. Both must name the same set.

Password Safe onboarding succeeded but rotation fails. Expected — see What Password Safe does here.

The deploy 400s naming the functional account's platform. Working as intended. Point passwordsafe_vm_functional_account_gcp at an SSH-platform account, or deploy with Password Safe onboarding off.