Powershell ve PowerCLI İçerisinde Şifre Saklamak
Eğer orchestrator(system center veya vmware) kullanıyorsanız mutlaka bir çok işinizi otomatikleştirmek için script yazmanız gerekmiştir. Doğal olarak bir çok scriptin çalışması için uzakta ki bir sunucuya giriş yapması gerekmektedir ve bunun için gerekli bilgileri script içerisinde kullanmamız gerekiyor. Powershell ve PowerCLI şifrelerin saklanması ve tekrar tekrar kullanılması için yöntemler sunmaktadırlar.
Uyarı: Her iki yöntemde gerçek anlamda bir koruma sağlamamakta, şifrelerin saklandığı dosyaya erişebilirse şifrelerinizi .
Powershell:
Öncelikle şifremizi saklayacağımız bir dosya oluşturmamız gerekmektedir
$cred = Get-Credential #Popup çıkartır ve kullanıcı adı ve şifremizi yazabiliriz
$cred.password |ConvertFrom-SecureString |Set-Content c:\secretfile.txt #Şifrenizi kriptolar ve secretfile.txt’e yazar
Artık istediğimiz zaman şifremizi tekrar tekrar kullanabiliriz. Mesela uzaktaki bir sunucuya bağlanmak istediğimizi varsayalım.
#şifremizi dosyadan okuyoruz
$p = Get-Content c:\secretfile.txt | ConvertTo-SecureString
#Kullanıcı adı ve şifreyi kullanarak bir adet obje oluşturuyoruz
$c = new-object -typename System.Management.Automation.PSCredential -argumentlist “Domain\User”,$password
#yarattığımız objeyi kullanarak giriş uzaktaki sunucuya giriş yapıyoruz
$s = new-pssession -computername <uzaksunucuadı> -credential $cred
Alternatif olarak obje yaratmak için
$c = New-Object System.Management.Automation.PSCredential(“Domain\user”,$password)
Parantezleri kapatmayı hep unuttuğum için bunu pek kullanmıyorum 🙂
Peki aynı şekilde vCenter’ınıza bağlanıp belli aralıklarla bazı scriptleri çalıştırmak istiyorsunuz? Bunun için öncelikle PowerCLI kurmanız gerekmektedir.
#Powercli modülünü powershell’e tanımlıyoruz. PowerCLI’ı Vmware’in sitesinden indirebilirsiniz.
Add-PSSnapin “VMware.VimAutomation.Core”
#Kullanıcı ve şifremizi kullarak vmSecretfile.xml isimli
New-VICredentialStoreItem -Host <vcenterhostname> -User <admin kullanıcısı> -Password “Şifreniz” -File C:\vmSecretfile.xml
Oluşturduğumuz dosyayı bir script içerisinde kullanmak içinse
$Cred = Get-VICredentialStoreItem -Host <vcenterhostname> -File C:\vmSecretfile.xml
Connect-VIServer <vcenterhostname> -User $Cred.User -Password $Cred.Password
Powercli’ın bir artısı tek bir dosya içerisinde farklı hostname ve kullanıcıları tutabilmesidir. Böylelikle farklı scriptler veya host’lar için tek bir dosyadan gereken bilgileri alabilirsiniz. Eğer file parametresi vermezseniz kullanıcı profili içerisine bir adet dosya yaratır. Bunun pratikliğine gelirsek
“Connect-VIServer <vcenterhostname>” yazdığınız zaman otomatik olarak profil içerisinde ki dosyadan direk okur ve giriş yapmanıza olanak verir.