All Work
Case 01 · Ops Lab · Lab Simulation

Windows Access Administration and Troubleshooting

A user could still sign in to the domain but lost access to her department's file share. I narrowed the failure across five diagnostic layers to a missing security-group membership, restored it without touching resource permissions, and confirmed the unrelated Finance share stayed locked.

Azure BastionVNET · 10.0.0.0/24dc0110.0.0.4AD DS · DNS · SMBWindows Server 2022client01Windows 11 EnterpriseDomain joinedoperations.aliceMEMBERSHIP REMOVEDSG_Operations_Access\\dc01\Operations

At a Glance

Scenario
Authorized user denied access to a departmental share
Environment
Azure VNet · Windows Server 2022 DC · Windows 11 Enterprise client
Root Cause
Missing AD security-group membership
Outcome
Access restored; Finance still denied
Skills
AD · SMB/NTFS · PowerShell · Diagnostics

01Environment

EntryAzure BastionNo public IP on either VM
VNet · 10.0.0.0/24
dc0110.0.0.4
Windows Server 2022 · AD DS + DNS · hosts both shares
client01
Windows 11 Enterprise · domain joined · DNS → dc01
Identity Model · northstar.test

Select a box for its role

operations.alice
Operations user. Should reach Operations and be denied Finance.
SG_Operations_Access
Security group that grants the Operations share. Its membership is the only thing the fault changed.
\\dc01\Operations
SMB share on dc01. Share and NTFS permissions name the group, never individual users.
finance.chris
Finance user. The Finance path was configured but not separately tested.
SG_Finance_Access
Security group for the Finance share. Alice is not a member, by design.
\\dc01\Finance
SMB share on dc01, granted only to SG_Finance_Access.

Each share grants its group Read (SMB) and Read & Execute (NTFS). No direct user permissions and no explicit DENY entries. Chris's path was configured but not separately tested.

02Access Matrix

User operations.alice, signed in on client01.

ResourceBaselineFaultAfter fix
\\dc01\OperationsAllowDenyAllow
\\dc01\FinanceDenyNot retestedDeny

Expected and observed matched at baseline and after the fix: Operations allowed, Finance denied.

03Diagnostic Ladder

Checked in order, from account to permissions, before any change was made.

  1. 01Account and authenticationEnabled, not locked, password validOK
    Checked

    Get-ADUser returned Enabled = True, LockedOut = False, PasswordExpired = False. On client01, whoami showed Alice still signed in as northstar\operations.alice.

    If this had failed

    Disabled or locked account, or expired password: reset or unlock per policy.

  2. 02DNS and domain-controller discoveryClient resolves and locates dc01OK
    Checked

    Resolve-DnsName dc01.northstar.test returned 10.0.0.4 from the client.

    If this had failed

    Client not using the DC for DNS, so it can't locate the domain: fix the DNS settings.

  3. 03Network and SMB (TCP 445)dc01 reachable on port 445OK
    Checked

    Test-NetConnection dc01.northstar.test -Port 445 returned TcpTestSucceeded = True.

    If this had failed

    Firewall or server service blocking SMB: check the path and the service.

  4. 04Security-group membershipAlice in SG_Operations_AccessFault
    Checked

    Get-ADGroupMember SG_Operations_Access, filtered for Alice, returned nothing: IsMember = False.

    Finding

    The actual cause: Alice was missing from SG_Operations_Access.

  5. 05Share and NTFS permissionsGroup granted on the share and the ACLOK
    Checked

    Get-SmbShareAccess showed SG_Operations_Access Allow Read, and icacls showed it with Read & Execute. No direct user entries.

    If this had failed

    Group missing from the share or the NTFS ACL: restore the group entry, never a direct user grant.

04Timeline

  1. 1
    Healthy baseline

    Alice opened \\dc01\Operations and was denied \\dc01\Finance, as designed.

  2. 2
    Controlled fault

    I removed Alice from SG_Operations_Access, leaving the account, network, DNS, and permissions unchanged.

  3. 3
    Logon refreshed

    Alice signed out and back in, so her token reflected the change.

  4. 4
    Access denied

    Reading from \\dc01\Operations now returned "Access is denied."

  5. 5
    Five-layer diagnosis

    I checked account, DNS, network, group membership, and permissions in order.

  6. 6
    Root cause found

    Layer 4 failed: Alice was no longer in SG_Operations_Access.

  7. 7
    Membership restored

    I added Alice back to the group and left share and NTFS permissions untouched.

  8. 8
    Sign-out / sign-in

    A fresh logon rebuilt her token with the restored group.

  9. 9
    Retest: Allow + Deny

    Operations opened; Finance was still denied.

  10. 10
    Closed

    I recorded cause, correction, and validation in the incident record.

05Records

Access RequestFulfilledLab simulation
Request
Read access to \\dc01\Operations for operations.alice; Finance stays restricted.
Basis
Departmental access is granted through security groups, not direct user permissions.
Implementation
Added to SG_Operations_Access. The group holds SMB Read and NTFS Read & Execute; no direct grant to the user.
Validation
From client01 as Alice: Operations ALLOW, Finance DENY.
Closure
Implemented and validated; access limited to the intended resource.
Access IncidentClosedLab simulation
Symptom
Alice could authenticate to the domain but could no longer open \\dc01\Operations.
Scope
Alice's access path to the Operations share.
Root Cause
Missing membership in SG_Operations_Access, so her refreshed token no longer held the authorized group.
Correction
Restored the membership. Resource permissions unchanged. Fresh sign-in to rebuild the token.
Validation
Operations ALLOW, Finance DENY.
Closure
Intended access state restored and validated; no open issue or escalation.

06PowerShell Helper

Checks a user's account state and whether they belong to a required group, the first questions in an access-denied ticket. It only reads from Active Directory and changes nothing, so it is safe to run before any fix.

Get-ADUserAccessReport.ps1 · read-only
param(
    [Parameter(Mandatory = $true)]
    [string]$Identity,

    [string]$RequiredGroup = "SG_Operations_Access"
)

try {
    $user = Get-ADUser `
        -Identity $Identity `
        -Properties Enabled, LockedOut, PasswordExpired, MemberOf `
        -ErrorAction Stop

    $groups = @(
        $user.MemberOf |
        ForEach-Object {
            (Get-ADGroup -Identity $_).Name
        } |
        Sort-Object
    )

    $isMember = $groups -contains $RequiredGroup

    [PSCustomObject]@{
        SamAccountName  = $user.SamAccountName
        Enabled         = $user.Enabled
        LockedOut       = $user.LockedOut
        PasswordExpired = $user.PasswordExpired
        RequiredGroup   = $RequiredGroup
        IsMember        = $isMember
        Groups          = if ($groups.Count -gt 0) {
            $groups -join ", "
        }
        else {
            "(none)"
        }
    }
}
catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] {
    Write-Error "Active Directory user '$Identity' was not found."
}
catch {
    Write-Error "Unable to retrieve '$Identity': $($_.Exception.Message)"
}
Validated Checks
  • operations.alice · SG_Operations_AccessIsMember = True
  • operations.alice · SG_Finance_AccessIsMember = False
  • Nonexistent userControlled not-found error

It reads direct memberships only; nested groups are not followed.

07Evidence

Lab baseline · 01–05

Failure, fix and verification · 06–12

Operations CasebookFull write-up, PowerShell script and operational records ↗