Most engineers think…
Most engineers think auto-rotation is dangerous because “the vault might overwrite a password mid-change and lock everyone out” — so they keep rotation off and change service-account passwords by hand twice a year.
Backwards on both counts. Password Safe commits the new secret to the vault only after the target accepts and verifies it — a failed change leaves the old password valid and simply retries. The real danger is the opposite: rotation succeeds, but the services, scheduled tasks and IIS app pools still running on the old password start failing and lock the account out. The fix is not avoiding rotation — it is propagation actions, configured before you switch auto-rotate on.
① Password policies — length, complexity & the four rotation triggers
Every rotation starts with a question: what should the new secret look like? The answer is a password policy. You build one at Configuration > Privileged Access Management Policies > Password Policies > Create New Password Policy. The form gives you Minimum Length and Maximum Length (anywhere from 4 to 255 characters), four character classes — Uppercase, Lowercase, Numeric and Non-Alphanumeric — each with a permit/deny toggle and a minimum count, plus a First Character Value dropdown and an Allow use for Secrets Safe checkbox.
Here is the part the form will not warn you about: the policy must respect the platform. Old Cisco gear truncates long passwords, some databases choke on certain symbols, and several platforms reject a special character in the first position — that is exactly what First Character Value exists for. Meera at Infosys learned this when her 32-character everything-policy met a network device that silently truncated at 25: the device stored the first 25 characters, the vault stored all 32, and every login after that rotation failed. One policy per platform family is the grown-up pattern.
Now, when does a change fire? Four triggers, four different screens. (1) Scheduled: with Enable Automatic Password Management on, the account rotates at its ChangeTime — default 23:30 UTC — at a frequency of first (first day of month), last (last day) or xdays (every X days). (2) On release: Change Password After Release re-keys the secret the moment a checkout is returned — anything a human saw is treated as burned. (3) Manual / API: an on-demand change from the Managed Accounts grid, or POST ManagedAccounts/{id}/Credentials/Change from a script. (4) Mismatch reset: Reset Password on Mismatch — with the giant caveat that mismatch is only detected when a password test runs. All four land in the same place: the Password Change Agent queue.
The four triggers — tap to lock them in
Each card front is the trigger; the back is where it lives and the gotcha.
ChangeTime (default 23:30 UTC) + first/last/xdays frequency. Stagger it across estates or you build a rotation storm.
Change Password After Release. The bank re-keys the locker after every visit — a seen password is a dead password.
Grid action or POST …/Credentials/Change. Use after an admin leaves the team or a secret leaks.
Reset Password on Mismatch fires only AFTER a password test detects drift — it is not real-time. Pair it with Check Password.
The account was onboarded by a Smart Rule whose Manage Account Settings action carries its own rotation settings — and docs are explicit that the Smart Rule overrides what you configure on the system or account, re-applying on every reprocess. Edit the setting inside the Smart Rule (Smart Rules > your rule > Actions), or your change quietly reverts every time the rule runs.
Pause & Predict
Predict: your CISO demands 32-character passwords everywhere. You set Minimum Length 32 and attach the policy to a platform whose devices cap passwords at 25 characters. What happens at the next scheduled rotation? Type your guess.
POST https://bi.icicilab.in/BeyondTrust/api/public/v3/ManagedAccounts/482/Credentials/Change
Authorization: PS-Auth key=PS_API_KEY_128CHARS; runas=icici\rahul.verma;
Content-Type: application/json
{ "Queue": true }HTTP/1.1 204 No Content → change queued for the Password Change Agent → Managed Accounts grid: Last Change Date updates once the agent completes → a failed attempt lands in the retry queue (see ②)
Karthik at TCS checks in his 2-hour RDP release at 4:00 PM. The account has Change Password After Release enabled and ChangeTime is the default. When does the password actually change?
② Anatomy of one rotation — connect, change, verify, commit
One rotation is four moves. Generate: the vault builds a candidate secret from the password policy — held in memory, not yet committed. Connect: the functional account signs in to the target — think of the society watchman who holds the master key used to change every flat’s lock, but never lives in any flat. Change + verify: the new secret is set on the target, then Password Safe authenticates with it to prove the target really took it. Commit: only now does the vault store the new secret and stamp the account’s Last Change Date.
▶ One rotation, four moves — and the moment it breaks
Follow svc_corebank’s password change from policy to vault commit. Press Play for the healthy path, then Break it to see the failure.
That commit-after-verify ordering is the design decision worth repeating in interviews: a failed rotation cannot strand you. If the change or verify step fails, the vault keeps the last known-good secret and the job sits in the Password Change Agent’s retry queue — tuned at Configuration > Privileged Access Management Agents > Password Change Agent via Retry failed changes after (minutes), Maximum retries, and Unlimited Retries. The flip side: with Unlimited Retries, a misconfigured account fails forever, silently. The failed queue is a dashboard you must watch, not a bin you ignore.
Pause & Predict
Predict: a rotation to a Linux box fails at the change step. The next engineer checks out that account from the vault. Do they get the new (never-applied) password or the old one — and does it work? Type your guess.
Rahul at ICICI faces this
A forced rotation on a freshly onboarded domain account fails instantly. The log reads: “Password change failed. Error: Value cannot be null. (Parameter ‘identityValue’)”.
Password Safe cannot resolve the account’s SID in the directory — the account was renamed after onboarding, so the stored identity points at nothing. This exact string is a known field error for unresolvable SIDs.
Run a directory query from BeyondInsight for that account and compare the distinguished name with what the managed account record shows. A rename, a deletion, or an unsynced domain will surface immediately.
BeyondInsight > Managed Accounts > svc_corebank > Advanced DetailsRe-onboard the account from the correct directory path (or undo the rename), then queue the change again with POST …/Credentials/Change.
POST ManagedAccounts/{id}/Credentials/Test returns Success: true, and the grid’s Last Change Date updates after the agent run.
$h = @{ Authorization = 'PS-Auth key=PS_API_KEY_128CHARS; runas=icici\svc_psapi; pwd=[S3cure#Pass];' }
$base = 'https://bi.icicilab.in/BeyondTrust/api/public/v3'
Invoke-RestMethod "$base/Auth/SignAppin" -Method Post -Headers $h -SessionVariable ps
Invoke-RestMethod "$base/ManagedAccounts/482/Credentials/Test" -Method Post -WebSession $psUserName : svc_psapi ← SignAppIn 200, session held in $ps Success ------- True ← vault password matches the target (False = mismatch — run the triage ladder in Fig 5)
Someone “helpfully” onboarded the functional account itself as a managed account, and Password Safe rotated its password while in-flight change jobs still held the old one. BeyondTrust’s own guidance: functional accounts have built-in management capabilities and must not be managed as managed accounts — passwords can fail to synchronise. The watchman’s own key got changed and nobody told him: now no lock in the building can be re-keyed. Monitor functional-account health separately and never vault-manage it.
Last piece: drift detection. Check Password plus the Password Test Agent periodically prove the vaulted secret still works. When a test fails and Reset Password on Mismatch is on, Password Safe re-asserts control by rotating. But understand the timing: like the milkman who only discovers the gate lock changed on his next delivery, mismatch is found at the next test, not at the moment of drift. A real community thread exists precisely because an admin expected reset-on-mismatch to be real-time. It is not.
Mid-rotation, the target rejects the functional account’s connection. What does the vault serve to the next requester checking out this account?
③ Propagation actions — the 2 AM breakage insurance
A human checks a password out of the vault. A service account’s password is different: it is burned into places that never ask the vault — a Windows service’s Log On As entry, a scheduled task’s stored credential, an IIS application pool identity, a COM+ application. Rotate the account and every one of those copies is instantly wrong. They do not fail at 23:30 when you rotate; they fail at the next restart, recycle or task run — which is why this class of outage so reliably detonates at 2 AM, when nightly jobs wake up.
The Indian-household version: you changed your flat’s main-door lock but forgot that the maid, the milkman and your neighbour all hold duplicate keys. Tomorrow morning, three people rattle the door with dead keys. On Windows the rattling is worse than annoyance: each dependent retries its old password, the domain controller counts every failure, and at the lockout threshold AD locks the account — at which point even the NEW, correct password stops working. The rotation did not break production; the forgotten copies did, and then the lockout took out everything including the vault’s own secret.
Password Safe ships nine built-in propagation actions: Update Services, Update and Restart Services, Update Scheduled Tasks, Update IIS Application Pools, Update and Restart IIS Application Pools, Update Windows Auto Logon, Update COM+ Applications, Update DCOM Applications and Update SCOM RunAs Identities. You attach them per managed account: open the account’s Advanced Details > Propagation Actions pane and click Assign Propagation Action, choosing both the action and a Propagation Set — Latest Discovery Data (every system where discovery found this account in use) or a Managed System-Based Smart Rule. The action then runs on each system in the set after every successful rotation. Plumbing requirements: the functional account needs ADMIN$ share access, targets need .NET Framework 4.7.2+, and the network path must allow TCP 445 and UDP 137/138/139.
Pause & Predict
Predict: Sneha enables auto-rotate on svc_backup — used as the logon identity by a Windows service on 14 servers — with no propagation actions assigned. What happens inside the next 24 hours? Type your guess.
Sneha at Flipkart faces this
Saturday’s 23:30 rotation of svc_pay went green. Monday 02:00, the payment-reconciliation scheduled task fails across 14 servers; by 02:20 svc_pay is locked out in AD and on-call is paged.
No propagation actions were assigned. The scheduled task and two Windows services on each server still presented the old password; the combined retry spray crossed the AD lockout threshold, which then blocked the new password too.
On the DC, filter Security log for event 4625 with svc_pay as the target account — every source host is one that runs svc_pay as a service or task identity. Compare that host list against the account’s propagation set (it was empty).
Managed Accounts > svc_pay > Advanced Details > Propagation ActionsAssign Update and Restart Services + Update Scheduled Tasks with Propagation Set = Latest Discovery Data, unlock svc_pay in AD, then queue a fresh rotation so every dependent picks up the new secret together.
After the rotation: no new 4625s for svc_pay on the DC, each service shows Running with the new Log On credential, and the task’s Last Run Result is 0x0.
When the dependent is not one of the nine built-ins — say your app reads a password from a config file — build a custom action at Configuration > Privileged Access Management > Propagation Actions > + Create Propagation Action. You choose a script type (PowerShell, Windows Command or Unix Shell), give the full script path, and pass parameters with substitution variables: %u account name, %p password, %h host, %i IP, %j system name, %k system IP. One sharp edge from the docs: %p must be enclosed in quotes when passed on a command line — generated passwords contain characters your shell will happily mangle.
# Script type : Unix Shell # Full path : /opt/bt/update-app-conf.sh # Parameters : %u "%p" %h ← %p MUST be quoted #!/bin/sh # $1=account $2=new password $3=host sed -i "s|^db_pass=.*|db_pass=$2|" /etc/payapp/app.conf systemctl restart payapp echo "payapp.conf updated for $1 on $3"
payapp.conf updated for svc_pay on 192.168.40.17 ● payapp.service — active (running) since 23:31:42 UTC exit 0 → propagation recorded as success against the rotation
Before fleet-wide rollout, rotate one account on one server and check three things: the service in services.msc shows Running and a fresh start time (the restart happened), the scheduled task’s Last Run Result is 0x0 on its next trigger, and the DC shows zero new 4625 events for that account. Only then widen the propagation set. Dependency mapping first, auto-rotate second — in that order, always.
A rotated account is the identity of an IIS website. Which built-in propagation action both fixes the stored credential AND forces the workers to pick it up immediately?
④ SSH keys, DSS rotation & monitoring rotation health
On Linux estates, the privileged credential is often not a password at all — it is an SSH key. Password Safe’s docs and API still call this DSS authentication, and the policy engine lives at Configuration > Privileged Access Management Policies > SSH Key Policies. A policy sets the Key Type (RSA or DSA), the bit size (default 2048), and optionally Encryption Enabled — which protects the private key with a passphrase generated from a password policy you pick. The built-in default policy is RSA 2048 with an auto-managed passphrase. Supported platforms: Linux, AIX, HP-iLO, HP-UX, DRAC, macOS, Solaris, Juniper and RACF; uploads are accepted in OpenSSH format including Ed25519 — though policy-driven generation offers RSA/DSA, so pick RSA and skip DSA (modern OpenSSH disables it).
Rotation mechanics differ from passwords in one beautiful way. Enable Auto-Managed SSH Key on the account and key rotation rides the same schedule as password changing — same ChangeTime, same triggers. At rotation, Password Safe generates a fresh keypair, and on the target it removes the old public key from authorized_keys and appends the new one. Think of the bank updating your signature card in their register: the new signature goes in, the old one is struck off, and yesterday’s forged copy is worthless. The private key plus passphrase live only in the vault — nothing secret sits on the target. And for redundancy, the account can fail over to a managed password if key auth ever breaks.
sudo grep -c '^ssh-rsa' /home/svc_deploy/.ssh/authorized_keys sudo tail -1 /home/svc_deploy/.ssh/authorized_keys | cut -c1-44 ssh -i ~/old_svc_deploy_key svc_deploy@192.168.40.17 hostname
1 ← exactly one managed key: old entry removed
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDk9w2q
svc_deploy@192.168.40.17: Permission denied (publickey).
↑ the captured/old key is now worthlessPause & Predict
Predict: an auto-managed SSH key rotates tonight. Name exactly what Password Safe changes ON the target box — and what it deliberately never writes there. Type your guess.
Now zoom out: rotation is a machine, and machines need gauges. Three you should watch weekly. (1) The failed-change queue: the Password Change Agent retries on its schedule, but with Unlimited Retries a broken account fails forever without a human ever noticing — review failures in the console and get them into your SIEM or ticket queue. (2) Password age: the Managed Accounts grid shows Last Change Date; accounts whose age exceeds their frequency are stuck — that is your earliest signal of a dead functional account or a directory problem. (3) Test results: scheduled Password Test Agent runs catching mismatches tell you about out-of-band changes before a 2 AM incident does. BeyondInsight’s Analytics & Reporting menu carries the account activity reporting you will hang these reviews on.
In the December 2024 BeyondTrust incident (the US Treasury case), attackers with a stolen Remote Support SaaS API key did not steal passwords — they reset local application passwords to get in. Resetting a credential is an attack action, and your rotation machinery is Tier-0 infrastructure. Alert on rotation activity outside expected windows, on spikes in manual/API-initiated changes, and on failed-queue growth. Scope and rotate the API keys that can drive rotation, exactly as you rotate the passwords themselves.
During an auto-managed SSH key rotation, what does Password Safe do on the target system?
🤖 Ask the AI Tutor
Tap any question — instant, scoped to this lesson. No login, no waiting.
Pre-curated from BeyondTrust docs + community Q&A, scoped to this lesson. For a live prod issue, paste your export into chat.techclick.in.
📝 Wrap-up assessment — six more
You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.
🧠 In your own words
Type one line: A teammate says: “We’ll enable auto-rotation on all 300 service accounts tonight — the change agent retries will absorb any failures.” In 3–4 sentences, what do you correct? Then compare to the expert version.
🗣 Teach a friend
Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.
📖 Glossary
- Password policy
- The recipe for generated secrets: length 4–255, character classes with minimum counts, First Character Value.
- Functional account
- The vault’s worker account that signs in and changes other accounts’ secrets; never checked out, never itself managed.
- Password Change Agent
- Appliance/broker service that executes queued rotations and retries failures (retry minutes, max retries, unlimited).
- Password Test Agent
- Scheduled service that authenticates with the vaulted secret to prove it still matches the target.
- ChangeTime
- Per-account scheduled rotation time; API default 23:30 UTC, frequency first / last / xdays.
- Change Password After Release
- Trigger that rotates the secret the moment a checkout is checked back in.
- Reset Password on Mismatch
- Forces a rotation when a password test finds vault ≠ target — fires only after a test, never real-time.
- Propagation action
- Post-rotation step that pushes the new secret into dependents: services, scheduled tasks, IIS app pools, COM+/DCOM, auto-logon, SCOM.
- Propagation set
- The systems a propagation action runs on: Latest Discovery Data or a Managed System-Based Smart Rule.
- DSS key
- Legacy BeyondTrust label for vaulted SSH keys; survives in SSH Key Policies docs and the DSSKeyRules API.
- authorized_keys
- File on the target listing public keys allowed to log in; rotation removes the old entry and appends the new one.
- Ed25519
- Modern SSH key type; accepted by Password Safe on upload (OpenSSH format), while generation policies offer RSA/DSA.
📚 Sources
- BeyondTrust Password Safe Admin Guide — Create password policies (Configuration > Privileged Access Management Policies > Password Policies; length 4–255, character classes, First Character Value). docs.beyondtrust.com/bips/docs/ps-create-password-policies
- BeyondTrust docs — Windows components & propagation actions in Password Safe (the nine built-in actions, Assign Propagation Action, propagation sets, %u/%p/%h variables, ADMIN$ + TCP 445 / UDP 137–139 requirements). docs.beyondtrust.com/bips/docs/ps-add-windows-components
- BeyondTrust docs — SSH Key authentication with Password Safe (SSH Key Policies: RSA/DSA, 2048-bit default, Encryption Enabled; Auto-Managed SSH Key; authorized_keys swap; platform list). docs.beyondtrust.com/bips/docs/ps-dss-authentication
- BeyondInsight & Password Safe API guide — ManagedAccounts Credentials/Change and Credentials/Test, DSSKeyRules, PS-Auth header, defaults (ChangeTime 23:30 UTC, release 120/525600 min). docs.beyondtrust.com/bips/v24.3/docs/password-safe-api
- BeyondTrust docs — Password Change Agent & Password Test Agent (Configuration > Privileged Access Management Agents; retry minutes, maximum retries, Unlimited Retries). docs.beyondtrust.com/bips/docs/configure-password-safe-agents
- BeyondTrust Beekeepers community — rotation failure war stories: “Value cannot be null (Parameter identityValue)” SID resolution thread; functional-account rights threads; reset-on-mismatch timing thread. beekeepers.beyondtrust.com
- NVD / The Hacker News — CVE-2024-12356 and the December 2024 stolen Remote Support SaaS API key incident, where attackers reset local application passwords (US Treasury). nvd.nist.gov/vuln/detail/cve-2024-12356
- PeerSpot — BeyondTrust Password Safe reviews: practitioner pros/cons on rotation, upgrades and error reporting. peerspot.com/products/beyondtrust-password-safe-pros-and-cons
What's next?
The secret now rotates itself — but who is allowed to take it out, who approves, and for how long? Next we wire up requests, approvers, ISA instant access and just-in-time elevation.