PowerShell aracılığıyla Azure'a Erişmek için Microsoft Graph API'yi Kullanma
Microsoft Graph API, Azure AD (Microsoft 365) kiracısındaki tüm nesnelere tek bir REST API noktası (
https://graph.microsoft.com). Muhtemelen bunun sadece web geliştiricileri için ilginç olabileceğini düşünebilirsiniz, ancak bunun tam tersidir. Microsoft 365'teki bazı verilere, nesnelere veya kaynak özelliklerine yalnızca Microsoft Graph aracılığıyla erişilebilir. Analitik verileri, istatistikleri veya diğer bilgileri toplamak için bir Azure yöneticisinin Microsoft Graph kullanması gerekir.
Bu makalede, RESTful kullanarak uygulamanızı Azure AD'ye nasıl kaydedeceğinizi, bir kimlik doğrulama belirteci alacağınızı, farklı Microsoft 365 kaynaklarına (Azure AD, Office 365, Intune, SharePoint, Teams, OneNote vb.) nasıl bağlanacağınızı göstereceğiz ve Güç kalkanı
Invoke-RestMethodcmdlet. Azure'da hem veri almak hem de nesneleri yönetmek için Microsoft Graph kullanabilirsiniz.
Microsoft Graph Uygulamasını Azure AD'ye Kaydetme
Azure kiracınızdaki kaynaklara Microsoft Graph kullanarak erişmek için yeni bir Azure AD uygulaması oluşturmanız ve farklı Azure nesnelerine erişmesine izin vermeniz gerekir.
-
https://portal.azure.com/ Azure portalında oturum açın
Azure Active Directory'ye gidin -> Uygulama kaydı;
Yeni bir uygulama oluşturun (Yeni kayıt);
Uygulamanızın adını girin: azGraphPowerShellApp, uygulamayı kimlerin kullanabileceğini seçin:
Accounts in this organizational directory only (tenantname only - Single tenant)ve Kaydol'u tıklayın;
Ardından, uygulamanızın hangi Azure kaynaklarına erişmesine izin verildiğini seçin. API izinleri bölümüne gidin;
Varsayılan olarak, bir uygulamanın yalnızca geçerli bir AzureAD kullanıcısı hakkındaki verileri okumasına izin verilir (
User.Read). Microsoft 365 kullanıcılarının ve gruplarının tüm özelliklerinde okuma izinleri vereceğiz;
-
İzin ekle'yi tıklayın, Microsoft Graph'ı seçin;
Microsoft Graph'ta iki temel izin türü vardır (Temsilci izni - bir uygulamayı çalıştıran kullanıcı adına bir şey yapıldığında ve Uygulama İzni - bir uygulama tarafından çağrıldığında) harici bir komut dosyası). Uygulama İzni'ni seçin;
Açılan listede Azure kaynaklarına ve nesnelerine erişmek için uygulamanıza hangi izinleri atayacağınızı seçebilirsiniz. Örneğimde Grup -> ekledim
Group.Read.All, Grup Üyesi ->
GroupMember.Read.All, Kullanıcı ->
User.Read.All(uygulamanızın kiracınızdaki tüm verileri okumasını istiyorsanız,
Directory.Read.All);
Yönetici adına erişim izni vermek için Yönetici izni ver'i tıklayın.
Bir uygulamada kimlik doğrulaması yapmak için bir sertifika veya sır kullanabilirsiniz. Sır, otomatik olarak oluşturulan bir paroladır. Kullanıcı adı bir uygulama kimliğidir. Uygulamanız için bir sır oluşturalım.
Sertifikalar ve sırlar -> Yeni müşteri sırları'nı açın;
Anahtar adını girin ve geçerlilik süresini ayarlayın(12 ay belirttim);
Değer alanındaki değeri kopyalayın (uygulamanın şifresidir). Uygulamadan çıktıktan sonra parola değeri gizleneceği için parolayı Azure Key Vault'a veya parola yöneticinize kaydedin (sırrı yeniden oluşturmanız gerekecek);
Ardından, uygulama kimliğinizi (Uygulama istemci kimliği) ve Azure kiracı kimliğinizi (Dizin kiracı kimliği) kopyalayın.
Değerlerinizi PowerShell değişkenlerine yapıştırın:
$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"PowerShell Kullanarak Azure Microsoft Graph API'ye Bağlanma
PowerShell'den Microsoft Graph API'yi kullanmak için herhangi bir ayrı PowerShell modülü (Azure AD gibi) kurmanız gerekmez. Yerleşik kullanarak onunla etkileşim kurabilirsiniz.
Invoke-RestMethodcmdlet.
Graph API'ye bağlanmak için bir erişim belirteci edinmeniz gerekir. Aşağıdaki PowerShell betiği, uygulamanızda kimlik doğrulaması yapmanıza ve bir Microsoft Graph API erişim belirteci almanıza olanak tanır.
Bu örnekte, komut dosyasında düz metin olarak bir sır (parola) kullanıyoruz. Gerçek hayatta yapılması tavsiye edilmez. Etkileşimli olarak bir sır istemeniz veya onu gizli bir kasadan çıkarmanız daha iyi olur (SecretManagement PowerShell modülü bunu yapmanıza yardımcı olabilir). Ayrıca, PowerShell betiklerinizi Git'te saklıyorsanız sırlarınıza dikkat edin.
$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"
$Body = @{
Grant_Type = "client_credentials"
Scope = "https://graph.microsoft.com/.default"
client_Id = $ApplicationID
Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
$token = $ConnectGraph.access_tokenBelirteci kullanarak, GraphAPI kullanarak Azure kiracınıza karşı farklı sorgular çalıştırabilirsiniz.
Örneğin, aşağıdaki betik, Azure AD'nizdeki grupların bir listesini görüntüler:
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value.displayNameBir Azure AD grubunun oluşturulduğu tarihi görüntüleyebilirsiniz:
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
$Groups=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value
$Groups | select displayName,createdDateTimeBir kullanıcı adını, UPN'yi ve e-posta adresini göstermek için:
$GrapUserUrl = 'https://graph.microsoft.com/v1.0/users'
$users=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapUserUrl -Method Get).value
$users | select displayName,userprincipalname,mailUygulamanıza Azure AD nesnelerine erişim izni vermediyseniz, Invoke-RestMethod'u çalıştırmaya çalışırken aşağıdaki hata görünecektir:
The remote server returned an error: (403) Forbidden.Yukarıdaki örneklerde, GET yöntemini kullanarak yalnızca Azure AD'den veri okuruz. Ancak değişiklik yapmak için POST, PUT, PATCH veya DELETE yöntemlerini de kullanabilirsiniz. Örneğin, Azure AD'de bir kullanıcı oluşturabilir, bir parolayı sıfırlayabilir, bir açıklamayı değiştirebilirsiniz vb.
Kullanılabilir Microsoft Graph API özelliklerini veya yöntemlerini tarayıcınızda görüntülemek için Graph Explorer'ı (https://developer.microsoft.com/en-us/graph/graph-explorer) kullanabilirsiniz.
Microsoft ayrıca, Microsoft Graph (
Install-Module Microsoft.Graph). Ancak Microsoft Graph'a doğrudan PowerShell'den erişebileceğinizi gösterdik.











