What it does: Measures every VCF 9.1 component against a chosen security benchmark, then corrects the settings that fall short of it.
Depends on: a deployed VCF 9.1 fleet where VCF Operations already collects from vCenter, NSX and vSAN, plus an agreed target baseline signed off by whoever owns risk.
- Hardening is optional. Run it when a baseline such as the VCF Security Configuration and Hardening Guide, PCI DSS, or a DoD STIG applies to your fleet.
- Two paths exist. VCF Operations Security Posture Management assesses and remediates inside the console, while the STIG Readiness Guide uses InSpec, Ansible and PowerCLI for DoD grade control.
- Security Posture Management ships three benchmarks out of the box: the Security Configuration and Hardening Guide (SCG), PCI DSS v4.0.1 for VCF, and VCF 9 General Controls.
- It assesses ESX, vCenter, NSX, NSX Edge, SDDC Manager, VCF Operations, the VCF managed service and virtual machines.
- The rhythm is assess, review, tailor, remediate, reassess. Add site values such as DNS servers and a login banner before you remediate.
- Validate every control in a non production fleet first. Some controls, such as smart card authentication, can lock users out when the supporting infrastructure is absent.
This part shows you how to harden a VCF 9.1 fleet against a security baseline and prove it. You will choose a baseline, grant the right permissions, enable a benchmark, run an assessment, tailor rules to your environment, remediate the objects that fail, and export evidence. For fleets that answer to the Department of Defense, a second path applies the STIG Readiness Guide with InSpec, Ansible and PowerCLI. Each step names the exact console so you always know where you are working.
Treat hardening as a repeating loop rather than a one time project. A baseline drifts as people change settings and as new components join, so you assess, fix, and assess again on a schedule. VCF Operations owns fleet wide compliance in VCF 9.1 through Security Posture Management, which is where most of this work happens. For the operating model behind these tasks, see the Day-2 operations overview, and for the health signals that sit next to compliance, see how to monitor fleet health with VCF Operations.
Prerequisites
| Requirement | Detail |
|---|---|
| Target baseline | A named standard the fleet must meet, such as the SCG, PCI DSS v4.0.1, or a DoD STIG, agreed with your security owner. |
| VCF Operations role | A role with the Assess and Remediate permission for Security Posture Management, reached from the fleet single sign on. |
| Data collection | vCenter, NSX and vSAN adapters already collecting, so assessments have current inventory to measure. |
| Test fleet | A non production environment that mirrors production, where you validate controls before applying them widely. |
| STIG toolchain | For DoD work only, a control host with Ansible 2.16, InSpec or Cinc Auditor, PowerCLI and SAF CLI installed. |
| Rollback plan | A documented way to revert each change, since some controls affect authentication and service availability. |
Step 1, Choose the baseline and hardening path
Pick the standard first, then the tool that fits it. Most fleets start with the in product path and reach for the STIG Readiness Guide only when a DoD accreditation demands it.
| Baseline | Who it suits | Where you run it |
|---|---|---|
| Security Configuration and Hardening Guide (SCG) | Any enterprise wanting a sensible default posture | Security Posture Management |
| PCI DSS v4.0.1 for VCF | Fleets that process card holder data | Security Posture Management |
| VCF 9 General Controls | Teams needing a broad platform check | Security Posture Management |
| STIG Readiness Guide | DoD and high assurance environments | InSpec, Ansible and PowerCLI |
- Confirm the standard your fleet must meet with the team that owns risk, and record any controls that will be waived.
- Choose the in product path with Security Posture Management for the SCG, PCI DSS or General Controls benchmarks.
- Choose the STIG Readiness Guide path for DoD accreditation, and read Step 8 before you begin.
- Note that the two paths can coexist, with Security Posture Management for continuous checks and the STIG content for formal evidence.
A baseline is a decision, not just a scan. Applying every control without judgement can break functions your fleet relies on, so evaluate each control against how you operate and document the exceptions.
Step 2, Grant Security Posture Management permissions
Compliance work needs an explicit permission, so grant it to a role before anyone runs an assessment. This happens in VCF Operations.
- In the VCF Operations navigation bar, click Operate.
- In the left navigation pane, click Administration, then Control Panel.
- In the Access Control tile, click the Roles tab.
- Select the role that your compliance operators use, or add a new one.
- Grant the Assess and Remediate permission for Security Posture Management, or Assess Only for staff who should not change settings.
- Click Update to save the role, then confirm the assigned users inherit it.
Separate the two permissions on purpose. Auditors and reviewers can hold Assess Only so they see the posture without the ability to change it, while a smaller group holds Assess and Remediate for the actual fixes.
Step 3, Enable a benchmark and set the assessment schedule
A benchmark measures a set of objects that a policy defines, so you enable the benchmark by binding it to a policy. Then you set how often it reruns.
- In VCF Operations, open Security Posture Management.
- Select the benchmark you chose in Step 1, such as the Security Configuration and Hardening Guide.
- Bind the benchmark to the policy that covers the objects you want assessed, so the scope matches your intent.
- Open Global Settings and locate the Compliance Assessment Schedule.
- Set an interval that fits your change rate, for example daily for a busy fleet or weekly for a stable one.
- Click Save to store the schedule.
Scope through policy keeps the noise down. Bind a strict benchmark to the management domain and a lighter one to a lab so a test cluster does not flood your results with findings you will never act on.
Step 4, Run an assessment and read the results
An assessment scores every in scope object against the benchmark and sorts each control into compliant, non compliant or unknown. Read it before you change anything.
- In Security Posture Management, start the assessment for the enabled benchmark, or wait for the scheduled run.
- Open the View Results tab to see the data grid of controls and their status.
- Filter to Non Compliant so the failing controls sit together.
- Click a control to read its description, the affected objects and the current values that produced the result.
- Note any control marked Unknown, which usually means an object could not be evaluated and needs a manual check.
An unknown result is not a pass. It signals that the assessment could not read a value, often because a component was unreachable, so treat it as work to investigate rather than a control you can ignore.
Step 5, Tailor benchmark rules for your environment
Several rules need a value that only you know, such as your DNS servers or your login banner text. Supply those before you remediate, or the fix cannot apply the right setting.
- In Security Posture Management, open the Benchmarks view and select your benchmark.
- Browse the rules and open one that expects a site specific value, for example the approved DNS server rule.
- Enter the value your environment uses, such as your NTP servers, DNS resolvers or banner text.
- Preview the rule to confirm the tailored value reads correctly.
- Save the tailored rule so the next assessment and any remediation use your value.
Tailoring is where a generic baseline becomes yours. Record every value you set in the same place you keep your exceptions, so a future operator can see why a rule expects a particular server or banner.
Step 6, Remediate noncompliant objects
Remediation applies the benchmark setting to the objects that failed. Start narrow, confirm nothing breaks, then widen the scope.
- In the View Results tab, select the rules that offer remediation, since not every control can be fixed automatically.
- For a first pass, select a single object or a small group rather than the whole fleet.
- Click Remediate to apply the setting to the selected objects.
- Watch the task to completion, then confirm the target components stay reachable.
- Once a small batch is clean, repeat the remediation across the rest of the non compliant objects.
Some controls touch credentials and certificates. Where a finding points at an expiring certificate or a weak password policy, hand it to the task that owns that change, namely Part 6 for password and credential rotation, rather than forcing it from the compliance grid.
Step 7, Export results and generate a compliance report
Evidence is the point of the exercise. Export the results so an auditor or a customer can see the posture without logging in.
- In the View Results tab, apply the filters that define the scope you want to report.
- Click Export and choose CSV to pull the raw results for archival or further analysis.
- Generate a compliance report that summarizes compliant and non compliant items at the control level.
- Store the export with a timestamp so you keep a dated trail of each assessment.
A dated export answers the question every reviewer asks, which is how the fleet looked at a point in time. Keep each one, because a series of exports shows the posture improving rather than a single snapshot.
Step 8, Apply the STIG Readiness Guide for DoD environments
DoD accreditation needs the STIG Readiness Guide content, which runs a scan, remediate and verify loop from a control host. The content in the vmware dod compliance repository is validated for VCF 9.1.0.0 only, so match the version exactly. Audit first to set a baseline.
# audit a vCenter appliance with InSpec or Cinc Auditor
inspec exec . -t ssh://root@vcenter-mgmt.example.local \
--input-file inputs-vcenter.yml \
--reporter cli json:vcenter-results.json
Install the Ansible requirements, then remediate the appliances. A single consolidated playbook covers the whole platform since VCF 9.0, and vCenter application settings are handled by a PowerCLI script rather than Ansible.
# install roles, then remediate appliance rules over SSH
ansible-galaxy role install -r requirements.yml
ansible-playbook -i inventory_vcf.yml playbook.yml \
-l vcenter --ask-vault-pass -e @vault_vcf.yml
- Clone the VCF 9.x content and confirm the version in the repository README matches your fleet.
- Populate the InSpec input file with your approved NTP servers, DNS resolvers and cipher suites.
- Run the InSpec audit to record which controls pass and fail as your baseline.
- Encrypt the vault with ansible-vault, then run the playbook against a limited inventory group first.
- Run the vCenter PowerCLI script for the application rules the Ansible playbook does not cover.
- Rerun the InSpec audit to verify, then convert the output for the reviewers.
# convert InSpec JSON into a STIG checklist for the DISA STIG Viewer
saf convert hdf2ckl -i vcenter-results.json -o vcenter.ckl
Handle the SDDC Manager appliance with care in this path. The remediation requires you to temporarily allow root over SSH, so set PermitRootLogin back to no and restart sshd once the run completes.
How to verify hardening
Confirm the fixes held and that your evidence is captured before you close the task.
- Rerun the assessment in Security Posture Management and confirm the previously failing controls now read compliant.
- Confirm no new Unknown results appeared, which would signal a component the assessment can no longer reach.
- For the DoD path, confirm the second InSpec audit shows the remediated controls passing.
- Open your exported report and confirm it reflects the improved score with a current timestamp.
- Confirm every remediated component is still reachable and serving, especially anything behind an authentication change.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Users locked out after remediation | A control such as smart card authentication assumes infrastructure the fleet does not have. | Revert the control, waive it with a documented exception, and validate authentication changes in the test fleet first. |
| Many controls report Unknown | A component was unreachable or an adapter stopped collecting during the assessment. | Reconnect the data source, confirm its credentials, then rerun the assessment. |
| Remediation applied the wrong value | A site specific rule was not tailored before the fix ran. | Set the rule value in the Benchmarks view, then remediate the affected objects again. |
| Ansible playbook fails on SDDC Manager | Root SSH is disabled, which the appliance rules require during the run. | Set PermitRootLogin to yes, restart sshd, run the playbook, then set it back to no afterward. |
Common questions
Do I have to harden a VCF 9.1 fleet? No. Hardening is optional and applies when a baseline or a regulation requires it. A fleet with no such requirement can run without it.
Which benchmarks come with VCF Operations? Three ship out of the box, the Security Configuration and Hardening Guide, PCI DSS v4.0.1 for VCF, and VCF 9 General Controls.
When do I need the STIG Readiness Guide instead? Reach for it when a DoD accreditation demands STIG evidence. It uses InSpec, Ansible and PowerCLI and produces a checklist for the DISA STIG Viewer.
Can a control break my environment? Yes. Controls that change authentication or disable services can lock users out, which is why you validate in a test fleet and keep a rollback plan.
References
- Broadcom TechDocs, Compliance Assessment and Reporting using Security Posture Management (VCF 9.1)
- Broadcom TechDocs, Running an Assessment with Security Posture Management (VCF 9.1)
- VCF Blog, Securing the Foundation, VMware Cloud Foundation 9.1 STIG Compliance
- Broadcom TechDocs, VCF 9.x Ansible Playbook Overview (STIG)

