Merhaba arkadaşlar bildiğiniz gibi sharepoint online tarafında bazı scheluder çalışmalar için powershell kodlarını kullanmamız gerekiyor ve bu powershell kodlarının içerisine kullanıcı adı ve şifresini açık olarak yazmamız gerektiği için bir yandan da bu bize bir güvenlik açığı oluşturmaktaydı. Özellikle talent admin kullanıcı gerektiren script çalıştırmalarında şirketiniz tüm denetimini yönetecek kullanıcı şifresini bir dosyada tutmak zorunda kalıyor olacaksınız.
Bunu önlemek için powershell üzerinden sharepoint online erişimi sağlamanıza yarayacak bir Azure Application ID oluşturarak bunu kullanabiliriz.
Bunun için ilk olarak https://aad.portal.azure.com/ adresine girip login oluyoruz.
Burada gelen ana sayfada bulunan sol menüde ki “Azure Active Directory” tıklayarak orada gelen ekranda ortada yer alan “Manage” başlığı altındaki “App registrations” tıklıyoruz. Burada var ise kendi applerinizi görebilirsiniz. Biz yeni bir tane oluşturmak için “New registration” tıklayarak yeni app registerımızı oluşturma adımına gidebiliriz.Yeni oluşturma ekranında benim uygulamamın adına yapacağım işe uygun olması amaçlı “SharePoint Online PowerShell App” olarak verip sadece kenti talentim için erişim olacağını seçerek altta yer alan “Register” butonu ile oluşturuyoruz.
Oluşturma işlemi tamamlandıktan sonra bizi oluşturduğumuz app registerımızın ana sayfasına yönlendirecektir. Burada üst tarafta yer alan “Application (client) ID” bilgisini not alıyoruz ve sonraki aşamalarda bunu kullanmamız gerekecektir.
Şimdi oluşturduğumuz app register için yetki ayarlamamız yapmamız gerekiyor. Bunun için yine ortada gelen menüde “Manage” altında yer alan “API permissions” kısmına tıklıyoruz. Gelen ekranda yetki vermek için “Add a permission” tıklayarak yetki seçmek ekranını açıyoruz.
Gelen “Request API permissions” sağ popup ta gelen seçenekler içinde “SharePoint” bularak seçiyoruz.
Yine aynı sağ popup kısmında sharepoint başlığı altında yer alan yetki seçeneklerinde “Application permissions” seçeneğini seçerek hemen altında gelen kısımda da “Sites.FullControl.All” seçeneğini seçerek alttan “Add permissions” ile yetki tanımımızı veriyoruz.
Bu yetki işlemi için birde eksta olarak yönetici onayı gerekmektedir. Eğer siz admin kullanıcısı ile giriş yapmışsanız üst kısımda “Grant admin consent for ..” butonu aktif gelecektir ve bunu tıklayarak yetki verme işlemini onaylayarak tamamlamanız gerekmektedir. Bu kısımda eğer size aktif gelmiyorsa siz global admin olmadığınız için ve vereceğiniz yetki kritik bir yetki olduğu için yönetici kontrolünde verilmesi gerekeceğinden yönetiniz ile iletişime geçerek bu kısımdan onay vermesini istemeniz gerekmektedir.
Bu onay kısımlarını tamamladıktan sonra bir sertifika oluşturup bu sertifikayı yüklememiz ve bağlanırken bunu kullanmamız gerekmektedir.
1 2 3 4 5 6 7 8 9 10 |
$CertificateName = "SharePoint Online PowerShell Certificate" $CertificatePassword = "Password1" $DocumentsFolder = [Environment]::GetFolderPath("MyDocuments") $Certificate = New-SelfSignedCertificate -Subject $CertificateName -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 Export-Certificate -Cert $Certificate -FilePath $DocumentsFolder\$CertificateName.cer Export-PfxCertificate -Cert $Certificate -FilePath "$DocumentsFolder\$CertificateName.pfx" -Password (ConvertTo-SecureString -String $CertificatePassword -Force -AsPlainText) |
Yukarıdaki powershell scriptini “SharePoint Online Management Shell” uygulamasını yönetici olarak çalıştırıp orada yazıyoruz.
Powershell kodlarını sorunsuz bir şekilde çalıştırdığımız zaman yukarıdak işaretlediğim konumlarda sertifika dosyalarımızın oluştuğunu görebilirsiniz.
Verdiğimiz isimde “.cer” ve “.pfx” uzantılı sertifikalarımız oluştuğunu görüyoruz.
Oluşturmuş olduğumuz app register tarafında yine orta menüde yer alan “Manage” başlığı altındaki “Certificates & secrets” seçeneğine tıklayarak gelen tablı menüde “Certificates” tabına gelerek “Upload certificate” butonu ile yükleme ekranını açıyoruz.
Açılan sağ popup içinde “.cer” uzantılı sertifikamızı seçerek “Add” butonu ile sertifikamızı yüklüyoruz.
Sertifikamız yüklendikten sonra bu sertifikamıza özel üretilen “Thumbprint” id bilgisini de not ediyoruz ve bunu da bağlanırken kullanıyor olacağız.
Şimdi bu yaptığımız ayarlamaları ve bilgileri kullanarak powershell ile sharepoint sitemize bağlanmayı deniyoruz.
1 2 3 4 5 6 7 8 |
$SiteURL = "https://yunusemrearac.sharepoint.com/" $ClientID = "cff6452c-ab1e-44f1-8791-418d670f5706" $ThumbPrint = "73ECA2807230DCBC589214C1143FD8EE182D2AF6" $Tenant = "yunusemrearac.onmicrosoft.com" Connect-PnPOnline -Url $SiteURL -ClientId $ClientID -Thumbprint $ThumbPrint -Tenant $Tenant Get-PnPSite |
Yukarıdaki örnek powershell kodunda “$SiteURL” parametresi yerine kendi bağlanacağınız sharepoint adresini, “$ClientID” parametresi yerine app register olulşturduğumuz zaman bize verilen application (client) id bilgisini, “$ThumbPrint” parametresi yerine de sertifikamızı yüklediğimiz zaman aldığımız parametre değerini ve son olarakta “$Tanent” kısmına da bağlantı saylayacağınız tanent bilgisini yazıyorsunuz.
Yukarıdaki ayarlamaları sorunsuz bir şekilde yapıp powershell kodunuzdaki parametreleri eksiksiz girdiğiniz zaman herhangi bir kullanıcı adı ve şifreye gerek duymadan yukarıdaki gibi sharepoint sitenize bağlantı sağlayabilir ve işlemlerinizi gerçekleştirebilirsiniz.
İlk Yorumu Siz Yapın