Microsoft Cloud and Datacenter Management MVP (Microsoft Valuable Professional) unvanına sahip olan Fırat Yaşar ile birlikte Infrastracture as Code yaklaşımını Terraform ile uygulayarak değerlendirdiğimiz ikinci içeriğimize videomuzdan ulaşabilirsiniz. Konunun devamı için Fırat Yaşar ile hazırladığımız diğer videomuza kanalımızdan ulaşabilirsiniz.
14 posts tagged with "IAC"
View All TagsPowershell ile Microsoft Graph API Kullanımı – Bölüm 1
Bildiğiniz gibi artık API kullanımının meşhur olduğu bir dünyada yaşıyoruz. Hemen hemen her incelediğim projede bir yerinde bir ucunda API ile iletişim haline geçip iş yapmaya çalışıyoruz. Bu yazı içerisinde biraz eğlenceli ve tuhaf ama keyifli bir konuyu aktarmak istiyorum. Microsoft Graph API bizlere Azure Active Directory, Office 365 Bileşenleri, Intune, Planner etc, içerisindeki istediğimiz kullanıcının özniteliklerine ulaşmayı ve bunları alarak raporlar oluşturmamıza olanak sağlanıyor. Bunu sadece kullanıcı bazında sınırlamamak lazım, Intune, Mobile Device Report gibi genişletebiliriz. Her türlü raporları bu API sorgular yaparak alma şansınız var. Office 365 tarafı ile ilgilinen arkadaşlar için, şimdilerde Powershell Module geçişleri yapıyorlar, ya da daha önceki yazdıkları kod bloklarını dönüştürmeleri lazım. Bunun başında, MSOnline adındaki module artık, AzureAD adındaki olan ve arka tarafta Microsoft Graph API v2.0 ( Beta ) olarak kullanılan sürüme dâhil edilerek geliştirilmiştir. Bu yüzden iki farklı Powershell Modulunu kullandığınız zaman farklı öznitelikler(propertyler) görebilirsiniz.
Powershell ile Microsoft Graph API kullanırken yukarıda bahsettiğim sadece belirli bir objeleri değerlerini getirmek ve raporlamak için değil daha farklı yöntemler içinde kullanabilirsiniz. Microsoft Graph API en basit haliyle REST API olarak Azure Active Directory erişim sağlayabilirsiniz. Bu sayede Azure Active Directory içerisindeki Applicationlar ( App Registrations) verdiğiniz izinlere göre, Azure Active Directory içerisindeki verileri okur, nesneler oluşturur, onların değerlini okur ve güncelleme ve silme işlemlerini gerçekleştirmek tamamiyle Azure AD Graph API'sini kullanabilir. Örneğin, Microsoft Graph API'na sorgu yaparak bir kullanıcı nesnesi için aşağıdaki değerleri döndürebilirsiniz; Bunları bir süreç olarak düşenebilirsiniz.
- User oluşturma, lisans ve manager atama, mobile device provision etmek,
- Assign to Office 365 Groups or Assign to Azure Active Directory Groups etc.
Özetle bu API sayesinde bir süreç haline getirip hayatımızı kolaylaştırabilirsiniz. Microsoft Graph API ile erişebileceğiniz servislerin hepsini özetlemek gerekir ise,
- Azure Active Directory
- Office 365 services
- SharePoint, OneDrive, Outlook/Exchange, Microsoft Teams, OneNote, Planner, Excel
- Enterprise Mobility and Security services
- Identity Manager, Intune, Advanced Threat Analytics, Advanced Threat Protection
- Windows 10 services
- Activities, Devices
- Education
Daha farklı bir senaryo ise, siz Software as a Service veren bir firma olarak bu API müşterleriniz için kullanarak onların süreçleri için değişik uygulamalar geliştirme şansınız var. Daha önce farklı isimler ile duymuş olabilirsiniz, yada yukarıdaki tüm servislere farklı şekilde API sorgulamaları yapmış olabilirsiniz, artık Microsoft Graph API' olarak geliştirmeye devam edecek. Yavaştan nasıl bağlanacağımızı Powershell ile REST API sorgular yaparak neler yapabildiğimizi görelim, öncelikle bir adet Service Principal ihtiyacımız var. Bunu oluşturmak için, Azure Active Directory içerisinde, App Registration sekmesine giderek oluşturabilirsiniz, Aslında bu yaratacağımız Application ile Microosft Graph API RestFull istekler yaparak istediğimiz oluşturma, silme, güncelleme gibi talepleri gönderiyor olacağız.
Yukarıdaki resimde adımları anlatmak için bir ekran görüntüsü paylaşıyorum, yeni bir adet Application Registration oluşturmak çok zor bir süreç değil. Sadece oluşturduktan sonra gereken yetkileri vermeniz gerekiyor. Dilerseniz şu makaleyi takip ederek yapabilirsiniz. Link : Microsoft Graph API Started. Benim hali hazırda oluşturduğum kendi Azure Active Directory için bir adet Application Registration bilgilerim var ve bu Application için Azure Active Directory üzerinde Graph API ve diğer servisler için gereken yetkilendirmeleri yaptım. Şimdi Powershell tarafında ilk başta nasıl bir değişkenlere ihtiyacımız var hızlıca tanıyalım.
$tennantid = 'tenantId' ## Tenant bilginiz
$ApplicationID = 'AppClientdId' ## Application Id ( App Registration )
$ApplicationKey = 'AppClientSecret' ## Application Secret
$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tennantid
$ARMResource = "https://graph.microsoft.com"
Yukarıdaki değişkenleri oluşturduktan sonra karşınıza gerekli değerleri girmeniz gerekmektedir. Çünkü bu değerlerin hepsini Powershell içerisinden Rest API istek yaparken kullanıyor olacağız. Aşağıdaki örnek içerisinde nasıl bir değerler geldiğini anlayabilirsiniz.
Aslında bu tarz istekleri yapmadan önce PostMan veya HttpMaster kullanarak test etme şansınız var. Ayrıca Microsoft bu kısımda devreye giriyor ve bize Microsoft Graph API Explorer sunuyor. Bu sayede yapacağınız sorguları daha öncesinden anlamanıza yardımcı olur ve nasıl parametreler kullanamanız gerektiğine karar verebilirsiniz. Aşağıdaki sayfaya giderek yukaıdaki belirttiğimiz tüm servisler için sorgulamalar yapma şansınız var. Eğer Microsoft Idniz ile oturum açarsanız ve izin verdikten sonra çok daha farklı deneyimler yaşabilirsiniz. Burası işin tamamen kendinizi bu API kullanımında ne tür bilgiler ve aksiyonlar alabileceğiniz için sizlere yol göstermesi için hizmet vermektedir.
Powershell tarafında kaldığımız yerden devam edelim, Application Id ve Application Secret bilgilerini aldıktan sonra artık API içerisine authorization/authentication olmak için gereken değerlerimizi gönderelim. Bu işlemleri hepsi tamamen token alıp Microsoft Graph API erişmeye devam etmek olacak.
$tennantid = 'tenantId' ## Tenant bilginiz
$ApplicationID = 'AppClientdId' ## Application Id ( App Registration )
$ApplicationKey = 'AppClientSecret' ## Application Secret
$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tennantid
$ARMResource = "https://graph.microsoft.com"
#request Body for Microsoft API
$Body = @{
'resource'= $ARMResource
'client\_id' = $ApplicationID
'grant\_type' = 'client\_credentials'
'client\_secret' = $ApplicationKey
}
Yukarıdaki kod bloğundan sonra aşağıdakileri yazıp artık REST API üzerinende gereken token alma işlemizi tamamlayalım.
$tennantid = 'tenantId' ## Tenant bilginiz
$ApplicationID = 'AppClientdId' ## Application Id ( App Registration )
$ApplicationKey = 'AppClientSecret' ## Application Secret
$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tennantid
$ARMResource = "https://graph.microsoft.com"
#request Body for Microsoft API
$Body = @{
'resource'= $ARMResource
'client\_id' = $ApplicationID
'grant\_type' = 'client\_credentials'
'client\_secret' = $ApplicationKey
}
$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{'accept'='application/json'}
Body = $Body
Method = 'Post'
URI = $TokenEndpoint
}
$token = Invoke-RestMethod @params
Yukarıdaki Powershell satırları sayesinde Microsoft Graph API istek yaptığınız zaman token almış olacaksınız. Bu token yine gördüğünüz gibi '$token' değişkenine atanmış olacak. Şimdi ise artık bu token alıp başına authorization sürecini bitirmek için, Header ekleyip Rest API tarafına göndereceğiz. Bu sayede artık sorgulamak istediğimiz herşeye sahip olacağız.
$headers = @{}
$headers.Add("authorization","Bearer $($token.access\_token)")
Neredeyse API tarafında istek yapabilir konumdayız. Serimizin bir sonraki bölümünde birkaç sorgular ve istekler ile Microsoft Graph API kullanımı örnekler ile genişletmeye çalışalım.
Powershell ile Microsoft Graph API Kullanımı – Bölüm 2
İlk bölümünüzde Powershell ile Microsoft Graph API üzerinde nasıl auhentication olacağımızı ve tüm ön gereksinimleri inceledik. Artık ilk isteğimizi gerçekleştirelim ve nasıl bir mantığı olduğuna bakalım.
Çalıştırdığımız Invoke-RestMethod cmdlet çıktısını 'responsUser' adındaki değişkene atamasını gerçekleştirdim. Fakat bunun öncesinde, ne tür parametler gönderdik ona bakalım. Microsoft Graph API URI kısmına dikkat çekmek istiyorum. Bu kısım aşağıdaki şekilde iki farklı bölüme ayrılıyor.
İki farklı versiyon bulunuyor şuan, v1 çok eski kaldı diyebilirim. Beta olan v2 olarakda duyabilirsiniz ama hala beta olarak devam ediyor. Bu yüzden v1 ve v2 iki arasında sorgulamalar yaptığınız zaman farklı sonuçlar dönecektir. V2 karşımıza gelen sonuçlar yukarıda görebilirsiniz. İlgili Graph URI içerisinde '/users/userNameorPrincipalName' olarak gönderdiğiniz zaman kullanıcı, authenticate olduğunuz App Registrations yetkisi dâhilinde tüm nitelikleri görebilirsiniz. Bu yaptığımız sadece Invoke-RestMehod içerisine, Method olarak Get gönderip sadece birşeyleri getirmemiz, faydalanmamız için belirttik. Daha farklı methodlar bilebileceğiniz gibi var, ( POST, PATCH, GET, DELETE) şeklinde görebilirsiniz.
Hemen farklı bir örnek yapalım bu kullanıcının tüm özeliklerini listeledik. Bunları belirtiğimiz gibi güncelleme, silme hakkına sahibimiz, Rest API yapacağınız isteklere ve ihtiyacınız göre değişkenlik gösterir. Farklı bir örnek ile devam edelim, bu sefer sorguladığımız kullanıcının memberOf tarafına istek yapacağım ve üye olduğu groupları beraber görelim.
$responsUser = Invoke-RestMethod -Headers $headers -Method Get
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com" `
-ContentType "application/json"
$responsUserGroup = Invoke-RestMethod -Headers $headers -Method Get
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com/memberOf" `
-ContentType "application/json"
Bu yaptığımız son örnekte ise belirttiğimiz gibi kullanıcının üye olduğu groupları listeledik. Powershell ile Microsoft Graph API Kullanımının tadını çıkarmak için aşağıdaki birkaç örnek daha sizler için bırakıyorum. Bunları sizde test ederek, hayal gücünüzün ötesine gidebilirsiniz.
$getUserInfo = Invoke-RestMethod -Headers $headers -Method Get
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com" `
-ContentType "application/json"
$getUserPhoto = Invoke-RestMethod -Headers $headers -Method Get
-Uri "https://graph.microsoft.com/beta/users cloudshell@hasanguralhotmail515.onmicrosoft.com/photo/$value" `
-ContentType "application/json"
$updateUserPhoto = Invoke-RestMethod -Headers $headers -Method PUT
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com/photo/$value" `
-ContentType "application/json"
BahçeŞehir University – Microsoft Genel Bulut Çözümleri
MSHOWTO olarak 2017 senesinin ilk Üniversite etkinliğini Bahçeşehir Üniversitesinin Yazılım Bilişim Kulübünün organizasyonu ile gerçekleştirdik. Konuşmacı olarak yer aldığım seminerde gün boyunca Microsoft Cloud Vision konularından bahsettik. Keyifli bir organizasyon oldu. Katılım gösteren öğrenci arkadaşlarımıza teşekkür ediyorum.
]