Powershell ile önbelleğe alınmış kimlik bilgilerini yönetme


Modern bilgi işlem ile ilgili en sinir bozucu şeylerden biri, bir kullanıcının eriştiği neredeyse her kaynağın bir şifre gerektirmesi ve ideal olarak (en azından güvenlik açısından) kullanıcıların her kaynak için farklı bir şifre kullanması gerektiğidir. Windows 10 Credential Manager son kullanıcılar için biraz daha kolay bir hayat kılmayı sağlamak için geliştirilmiştir. Credential Manager, kullanıcıların hem Windows parolalarını hem de web şifrelerini önbelleğe almasını sağlar. Bu şekilde, kullanıcılar bir kaynağa eriştiklerinde her seferinde parolalarını girmek zorunda kalmazlar. Elbette, bir sistem yöneticisinin Credential Manager üzerinde kontrol sahibi olmak istemesinin birkaç nedeni bulunur. Örneğin, kullanıcıların belirli bir kaynakla ilişkili kimlik bilgilerini önbelleğe almasını engellemek isteyebilir. Bu makalade kullanıcı kimlik bilgilerini Powershell kullanarak nasıl yöneteceğinize değineceğiz.

PowerShell, belki de Credential Manager’ı düzenlemek için en iyi araçtır. Resmi olarak ne yazık ki Windows 10, Credential Manager ile ilgili herhangi bir PowerShell cmdlet’i içermez. Neyse ki, bir geliştirici Credential Manager için bir PowerShell modülü oluşturdu ve modülü PowerShell galerisi üzerinden kullanılabilir hale getirdi. Buraya tıklayarak ilgili modülü indirebilirsiniz.

Credential Manager PowerShell modülünü kullanma

Bu modülü kullanmak için, PowerShell penceresi açın ve ardından aşağıdaki komutu girin.

Install-Module -Name Credential Manager

Bu komut, hiçbir şeyi manuel olarak indirmenize gerek kalmadan Credential Manager modülünü yükler. İşlemin nasıl göründüğünü aşağıdaki ekran görüntüsünde görebilirsiniz.

Ne yazık ki, Credential Manager modülüyle birlikte gelen çok sayıda döküman yok. Buna rağmen, modülün kullanımı nispeten kolaydır. Credential Manager modülü üç cmdlet’ten oluşuyor.

  • Get-StoredCredential
  • New-StoredCredential
  • Remove-StoredCredential

Bu cmdlet’leri aşağıdaki ekran görüntüsünde görebilirsiniz.

Diğer PowerShell cmdlet’lerinde olduğu gibi, bu cmdlet’lerden herhangi birinin syntax’ını PowerShell’in Get-Help cmdlet’ini kullanarak görüntüleyebilirsiniz. Tek yapmanız gereken Get-Help yazıp ardından yardıma ihtiyacınız olan cmdlet’in adını yazmaktır. Örneğin, Get-StoredCredential cmdlet’inin syntax’ını görmek istiyorsanız aşağıdaki komutu yazmalısınız.

Get-Help Get-StoredCredential

Çıktının nasıl göründüğünü aşağıdaki ekran görüntüsünde görebilirsiniz.

Depolanmış kimlik bilgilerini oluşturun, alın ve kaldırın

Tüm bu öğrendiklerimizden sonra, depolanan bir kimlik bilgisinin nasıl oluşturulacağına, alınacağına ve kaldırılacağına bakabiliriz.

Bir bilgiyi saklamanın birkaç farklı yolu vardır. Birinci yöntem, clear text olarak bir şifre girmeyi içerir. Diğer yöntem, bir kullanıcıdan bir şifre girmesini istemeyi ve ardından bu şifreyi doğrudan credential manager’a yazmayı içerir. Önce clear text yöntemine bakalım.

Bir anlığına Contoso adlı bir sunucu için bir şifre depolamak istediğimi varsayalım. Ayrıca şifremin “password” olduğunu ve kullanıcı adımın User1 olduğunu varsayalım. Bu bilgileri Credential Manager’a girmek için kullanacağım komut aşağıdaki gibi olmalıdır.

New-StoredCredential -Target Contoso -Username User1 -Password Password

Bir sonraki ekran görüntüsünde işlemin neye benzediğini görebilirsiniz.

Öte yandan, User2 kullanıcısının Contoso sunucusu için kendi şifresinin sorulmasını istemeniz durumunda, komut şöyle görünecektir.

Get-Credential -Username User2 -Message “Please enter your password:” | New-StoredCredential -Target Contoso

Bu komutu çalıştırdığınızda, kullanıcı aşağıdaki ekran görüntüsünde gösterilene benzer bir şifre penceresi görür. Parola girildikten sonra, ekran görüntüsünün sol tarafında gösterilen çıktı görüntülenir. Şifre istemi ve sol tarafta bulunan çıktı aslında aynı anda ekranda görünmüyor. Sadece referans amacıyla aynı ekran görüntüsüne dahil ettim.

Buraya kadar yazılanlar size kimlik bilgilerinizi Credential Manager’a nasıl gireceğinizi gösterir. Şimdi ise kimlik bilgilerinin nasıl alınacağına bir göz atalım. Contoso için User2’nin kimlik bilgilerini almak için aşağıdaki komutu kullanıyorum.

Get-StoredCredential -Target Contoso

Şifre, aşağıdaki ekran görüntüsünde gösterildiği gibi güvenli bir string olarak döndürülür. Bu şekilde görünmesinin güzel bir özellik olduğunu söyleyebilirim. İlk olarak, şifre ekranda görünmüyor. İkinci olarak, parola bir PowerShell betiğinin kullanabileceği bir biçimdedir. Aslında, komutu şöyle bir değişkene yazarak başka bir değişkenle eşleştirebilirim.

$Cred = Get-StoredCredential -Target Contoso

Aşağıdaki ekran görüntüsünde gösterilen her iki tekniği de görebilirsiniz.

Şimdi, Contoso sunucusunun kimlik bilgilerini artık önbelleğe almak istemediğimizi farz edelim. Kimlik bilgilerini Credential Manager’den temizlemek için PowerShell’i kolayca kullanabiliriz. Bunu yapmak için, Remove-StoredCredential cmdlet’ini girin. Ardından Target switch’i ve hedef sunucunun adını girin. Gerekirse, kimlik bilgisi türünü belirtmek için Type switch’i de kullanabilirsiniz. (örneğin: -Type Generic) Contoso sunucusu için önbelleğe alınmış kimlik bilgilerini kaldırmak için kullanılabilecek komut şöyledir.

Remove-StoredCredential -Target Contoso

Bu komutu kullandığınızda, PowerShell herhangi bir görünür çıktı üretmez. Buna rağmen, daha önce gösterdiğim Get-StoredCredential cmdlet’ini kullanarak işlemin başarılı olduğunu doğrulayabilirsiniz. Bu durumda, örneğin Get-StoredCredential yazın, ardından Target switch’i ve target’ın adını (Contoso) yazın. İşte komut;

Get-StoredCredential -Target Contoso

Komut çıktısının nasıl göründüğünü aşağıdaki ekran görüntüsünde görebilirsiniz.

KAYNAKPOWESHELL