MIM User Provision Part 13

MIM AD User Disable yazım MIM User Provision Part 13. yazısıdır. Bu partta sizlere kullanıcıların işten ayrılma durumlarında yani pasif olması gereken durumlarda kullanıcıyı disable etme prosedürü uygulayacağız. Bunun için yine sync rule oluşturup ilerleyeceğiz. HR Database’inden gelen aktif pasiflik durumuna göre kullanıcıyı disable ederek, Disable OU suna taşıyacağız.

MIM AD User Disable SYNC Rule

En başta SYNC Rule create etmekteyiz. External bir sisteme müdahale edeceğimizden Outbound olarak seçmekteyiz.

Sonrasında Resource Type’mız user/person olarak belirleyip. External system AD olarak belirlemekteyiz. Scoping Filter kısmında aslında tüm işlemler olacaktır. AD’de exist olan kullanıcının aktifliği 0 olarak pasif duruma düşmüş olarak düşünebiliriz.

MIM AD User Disable Filter

Devamında Relationship ‘de yine ad tarafında hep yaptığımız gibi accountname = samaccountname eşitliyoruz. Yeni bir obje oluşturmayacağız sadece objeni yerini değiştirip disable edeceğiz. O sebepten “Create resource in external system” seçmemekteyiz.

Kuralımızda Attribute Flow oldukça basittir. Flow;

  • CN=Accountname, DisableOu >dn(Disable ousuna taşımaktayız)
  • 514>User account control ( 514 değeri disable kullanıcıdır)
MIM AD User Disable DN update

Rule oluşturulduktan sonra yine FIM Full Import ve Sync yaparak yeni kuralı metaverse yazıyoruz.

Bonus Bilgi

Kullanıcı Disable olduktan sonra tüm membershiplerini kaldırabileceğiniz powershell script sizlerle paylaşıyorum. MIM de powershell örneklerini MIMWAL dan takip edebilirsiniz. Domain Users haricindeki tüm group membershiplerini kaldırmaktadır.

MIM AD User Disable Group Membership
param
(
	[parameter(mandatory = $true)] $AccountName
)

function InvokeImmediateTermination
{
    $stdOutFile = Join-Path $env:TEMP -ChildPath "StdOut_$AECRequestId.log"
    $stdErrFile = Join-Path $env:TEMP -ChildPath "StdErr_$AECRequestId.log"

    $command = @"
    & {
        if (!(Get-Module -Name "ActiveDirectory"))
        {
            Import-Module ActiveDirectory
        }

        `$ADGroups=Get-ADPrincipalGroupMembership -Identity  $AccountName | where {(`$_.Name) -ne “Domain Users”}

        Remove-ADPrincipalGroupMembership -Identity  $accountname -MemberOf `$ADGroups -Confirm:`$false -verbose

        if (`$Error.Count -eq 0)
        {
            "!!Success!!"
        }
        else
        {
	     # Can't easily use stdErrFile as it comes as CLIXML 
		 # and includes Warning/Verbose/Debug streams as well. 
		 # So we'll simply use stdOutFile
            `$Error
        }
    }
"@

    Write-Debug $command

    $commandBytes = [System.Text.Encoding]::Unicode.GetBytes($command)
    $encodedCommand = [Convert]::ToBase64String($commandBytes)

    Start-Process 'PowerShell.exe' `
        -ArgumentList "-Version 3.0 -NonInteractive -OutputFormat Text -EncodedCommand $encodedCommand" `
        -RedirectStandardOutput $stdOutFile `
        -RedirectStandardError $stdErrFile `
        -Wait

    $statusLine = Get-Content $stdOutFile| Select-Object -Last 2 | ? {
        $_.Contains("!!Success!!") 
    }
        
    if ([string]::IsNullOrEmpty($statusLine))
    {
        # Communicate error back the parent workflow to abort the workflow
        throw $((Get-Content $stdOutFile) -join "`r`n")	
    }
    else
    {
        Write-Debug "Script executed successfully."
    }

    Remove-Item $stdOutFile -Force
    Remove-Item $stdErrFile -Force
}

InvokeImmediateTermination

Sonuç olarak MIM AD User Disable yazımızda sizlere kullanıcı disable işlemlerini anlatmış olduk. Diğer yazılarımı aşağıdaki kategorilerden takip edebilirsiniz. MIM ile ilgili ilerde çok daha spesific yazılar paylaşacağımı bilmenizi isterim.