שימוש ב- API של Microsoft Graph כדי לגשת ל- Azure דרך PowerShell


Microsoft Graph API מאפשר לך לגשת לכל אובייקט בדייר Azure AD (Microsoft 365) באמצעות נקודת API יחידה של REST (

https://graph.microsoft.com

). סביר להניח שאתה חושב שזה עשוי להיות מעניין מפתחי אינטרנט בלבד, אבל זה בדיוק הפוך. ניתן לגשת לנתונים, אובייקטים או מאפייני משאבים מסוימים ב- Microsoft 365 רק דרך Microsoft Graph. כדי לאסוף נתונים אנליטיים, סטטיסטיקה או מידע אחר, מנהל מערכת של Azure צריך להשתמש ב- Microsoft Graph.

במאמר זה, נראה לך כיצד לרשום את האפליקציה שלך ב- Azure AD, לקבל אסימון אימות, להתחבר למשאבים שונים של Microsoft 365 (Azure AD, Office 365, Intune, SharePoint, Teams, OneNote וכן הלאה) באמצעות RESTful ו- PowerShell

Invoke-RestMethod

cmdlet. באפשרותך להשתמש ב- Microsoft Graph הן כדי לקבל נתונים והן כדי לנהל אובייקטים ב- Azure.

רישום יישום Microsoft Graph ב- Azure AD

כדי לגשת למשאבים בדייר Azure שלך באמצעות Microsoft Graph, עליך ליצור יישום Azure AD חדש ולאפשר לו לגשת לאובייקטים שונים של Azure.

  1. כניסה לפורטל Azure https://portal.azure.com/

  2. עבור אל Azure Active Directory -> רישום יישום;

  3. יצירת אפליקציה חדשה (רישום חדש);

  4. הזן את שם האפליקציה שלך: azGraphPowerShellApp, בחר מי יוכל להשתמש ביישום:

    Accounts in this organizational directory only (tenantname only - Single tenant)

    ולחץ על הירשם;

  5. לאחר מכן בחר לאילו משאבי Azure היישום שלך מורשה לגשת. עבור אל המקטע הרשאות API;

  6. כברירת מחדל, אפליקציה מורשית לקרוא נתונים אודות משתמש Azure AD נוכחי בלבד (

    User.Read

    ). אנו נעניק לו הרשאות קריאה בכל המאפיינים של המשתמשים והקבוצות של Microsoft 365;

  7. לחץ על הוסף הרשאה, בחר Microsoft Graph;

  8. קיימים שני סוגי הרשאות בסיסיים ב- Microsoft Graph (הרשאה מוקצית - כאשר משהו נעשה בשם משתמש שמפעיל יישום והרשאת יישום - כאשר יישום נקרא על-ידי קובץ Script חיצוני). בחר הרשאת יישום;

  9. ברשימה שמופיעה, באפשרותך לבחור אילו הרשאות תקצה ליישום שלך כדי לגשת למשאבים ולאובייקטים של Azure. בדוגמה שלי, הוספתי קבוצה ->

    Group.Read.All

    GroupMember ->,

    GroupMember.Read.All

    משתמש ->,

     User.Read.All

    (אם ברצונך שהאפליקציה שלך תקרא נתונים כלשהם בדייר שלך, בחר

    Directory.Read.All

    );

  10. לחץ על הענק הסכמת מנהל מערכת כדי להעניק גישה בשם מנהל המערכת.

כדי לבצע אימות באפליקציה, ניתן להשתמש באישור או בסוד. סוד הוא סיסמה שנוצרה באופן אוטומטי. שם המשתמש הוא מזהה אפליקציה. בוא ניצור סוד עבור האפליקציה שלך.

  1. תעודות פתוחות וסודות -> סודות לקוח חדש;

  2. הזן את שם המפתח והגדר את זמן תוקפו (ציינתי 12 חודשים);

  3. העתק את הערך מהשדה ערך (זוהי הסיסמה עבור האפליקציה). שמור את הסיסמה בכספת המפתחות של Azure או במנהל הסיסמאות שלך, מכיוון שלאחר שתצא מהאפליקציה, ערך הסיסמה יוסתר (יהיה עליך ליצור את הסוד שוב);

  4. לאחר מכן העתק את מזהה היישום (מזהה לקוח יישום) ואת מזהה הדייר של Azure (מזהה דייר מדריך כתובות).

הדבק את הערכים שלך במשתני PowerShell:

$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"

התחברות ל- API של Microsoft Graph תכלת הרקיע באמצעות PowerShell

כדי להשתמש ב- API של Microsoft Graph מ- PowerShell, אינך צריך להתקין מודולים נפרדים של PowerShell (כגון Azure AD). אתה יכול לקיים אינטראקציה עם זה באמצעות מובנה

Invoke-RestMethod

פקודה.

כדי להתחבר ל- Graph API, עליך לקבל אסימון גישה. קובץ ה- script הבא של PowerShell מאפשר לך לבצע אימות ביישום שלך ולקבל אסימון גישה של Microsoft Graph API.

בדוגמה זו אנו משתמשים בסוד (סיסמה) כטקסט רגיל בסקריפט. בחיים האמיתיים, לא מומלץ לעשות את זה. מוטב לבקש סוד באופן אינטראקטיבי או לחלץ אותו מכספת סודית (מודול PowerShell SecretManagement יכול לעזור לך לעשות זאת). כמו כן, שמור על הסודות שלך אם אתה מאחסן את קבצי ה- Script של PowerShell ב- Git.

$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_token

באמצעות האסימון, באפשרותך להפעיל שאילתות שונות נגד דייר Azure שלך באמצעות GraphAPI.

לדוגמה, קובץ ה- Script שלהלן מציג רשימה של קבוצות ב- Azure AD שלך:

$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value.displayName

באפשרותך להציג את התאריך שבו נוצרה קבוצת Azure AD:

$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
$Groups=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value
$Groups | select displayName,createdDateTime

כדי להציג שם משתמש, UPN וכתובת דואר אלקטרוני:

$GrapUserUrl = 'https://graph.microsoft.com/v1.0/users'
$users=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapUserUrl -Method Get).value
$users | select displayName,userprincipalname,mail

אם לא הענקת הרשאות גישה לאובייקטי Azure AD ליישום שלך, השגיאה הבאה תופיע בעת ניסיון להפעיל את Invoke-RestMethod:

The remote server returned an error: (403) Forbidden.

בדוגמאות לעיל, אנו קוראים נתונים מ- Azure AD רק באמצעות פעולת השירות GET. אך באפשרותך גם להשתמש בשיטות POST, PUT, PATCH או DELETE כדי לבצע שינויים. לדוגמה, אתה יכול ליצור משתמש ב- Azure AD, לאפס סיסמה, לשנות תיאור וכו '.

כדי להציג מאפיינים או שיטות זמינים של Microsoft Graph API בדפדפן שלך, באפשרותך להשתמש בסייר הגרף (https://developer.microsoft.com/en-us/graph/graph-explorer).

למיקרוסופט יש גם SDK מיוחד של Microsoft Graph PowerShell לאינטראקציה עם Microsoft Graph (

Install-Module Microsoft.Graph

). אך הראינו שבאפשרותך לגשת ל- Microsoft Graph ישירות מ- PowerShell.