SpnManager Kerberos SPN auditing and repair for Active Directory

New-SsrsSpnPlan

Business value: This command builds an SPN registration plan for SQL Server Reporting Services (SSRS), ensuring secure authentication with Active Directory...

Business value: This command builds an SPN registration plan for SQL Server Reporting Services (SSRS), ensuring secure authentication with Active Directory. • Used by: IT administrators responsible for managing SSRS instances and their integrations with AD. • Risks: + Insecure SPNs can lead to unauthorized access or data breaches. + Failure to register SPNs can cause SSRS services to fail or behave unexpectedly. • A manager cares when: + An SSRS instance is being deployed or upgraded. + There are concerns about security or authentication with AD.

Day-to-day use: 1. Use Get-SsrsSpnCandidate to identify potential SPNs for an SSRS instance. 2. Pipe the candidate object to New-SsrsSpnPlan. 3. Inspect the generated plan for HTTP SPNs to register. 4. Apply the plan using the execution engine.

# Example usage:
$srsServiceAccount = 'SQLSvcDomain\Instance1'
$candidate = Get-SsrsSpnCandidate -TargetComputer $srsServiceAccount

plan = New-SsrsSpnPlan -Candidate $candidate Write-Host “HTTP SPNs to register: (plan.ProposedSpns)”

Watchpoints: * Ensure the service account exists in AD and has a valid DistinguishedName. * Verify the SSRS instance is configured correctly for authentication with AD.

What it does: This command generates an SPN registration plan for SSRS, which ensures secure communication between the SSRS instance and Active Directory. The plan includes the necessary HTTP SPNs to register.

Step-by-step recipe: 1. Run Get-SsrsSpnCandidate on your service account. 2. Pipe the result to New-SsrsSpnPlan. 3. Review the generated plan for any issues or warnings.

What to do when stuck: * Check the documentation for Get-SsrsSpnCandidate and New-SsrsSpnPlan. * Consult with a colleague or IT administrator for assistance. * Verify that your service account exists in AD and has a valid DistinguishedName.

Field Value
Vendor Detent Point LLC
Product SpnManager 0.4.0
Licence Proprietary - licensed, not sold. See LICENSE.
Operational impact Read-only. Queries Active Directory and reports findings; changes nothing.
Rights required Directory read access. Some providers additionally need rights to read delegation and encryption-type attributes.
Providers covered SQL.SSRS
Approval recommendation Approve for general operational use. It cannot alter directory state.

Licence terms are proprietary and are supplied with the purchase, subscription or evaluation agreement. No open-source licence is granted.

What Why
Windows PowerShell 5.1 or later Declared by the module manifest.
ActiveDirectory 1.0.0.0 Required module. Ships with RSAT; install the Active Directory PowerShell feature.
A reachable domain controller Every provider reads from Active Directory.
An account with directory read access Needed to enumerate accounts and their SPNs.

Data-handling: The command does not store or transmit any sensitive data; it only reads AD records for service accounts. Transit: None, as the command operates within the local machine’s AD environment. At-rest: Data is stored in memory while processing, but none is persisted to disk. Audit trail: Generated plans are not audited by default, but can be logged using external tools or scripts. Compliance requirements: * Ensure service accounts exist in AD and have valid DistinguishedNames. * Register SPNs according to the generated plan to maintain secure authentication with AD.

This is the plan step. It turns a candidate into a plan showing what is missing; nothing is changed. Its output is normally piped into Test-SpnPlan. Providers: SQL.SSRS.

Example 1

Get-SsrsSpnCandidate | New-SsrsSpnPlan

Builds a plan from the locally detected SSRS candidate.

Also uses: Get-SsrsSpnCandidate (Sense).

Example 2

Get-SsrsSpnCandidate -ConfigPath 'D:\SSRS\ReportServer\rsreportserver.config' | New-SsrsSpnPlan

Builds a plan using an explicit config path for SSRS discovery.

Also uses: Get-SsrsSpnCandidate (Sense).

Example 3

New-SsrsSpnPlan -Candidate $candidate | Test-SpnPlan

Validates a single plan without going through the candidate provider.

Also uses: Test-SpnPlan (Test).