M365Con 2027 – כנס אונליין חינמי · 11–22 Jan 2027 · 120 sessions→ m365con.net

בלוג · Mirko Peters

אוטומציה של אופטימיזציה של רישיונות וביקורות ב-Microsoft 365

By ·

ברוכים השבים לבלוג הפודקאסט! אם אי פעם הסתכלתם על החשבונית החודשית של Microsoft 365 ותהיתם מדוע אתם משלמים עבור רישיונות שאף אחד לא נגע בהם…

Automatically translated with AI from the original post. Read the English original

▶ BLOGAutomating LicenseOptimization and Audits…M365.FM
Titelbild: Automating License Optimization and Audits in Microsoft 365

ברוכים הבאים בחזרה לבלוג הפודקאסט! אם אי פעם בהית בחשבונית החודשית של Microsoft 365 ותהית מדוע אתם משלמים עבור מושבים שאף אחד לא נגע בהם חצי שנה, אתם בהחלט לא היחידים. ניהול רישיונות הוא אחד מאותם מדללי משאבים תפעוליים סמויים, שמרוקנים לאט את תקציבי ה-IT ובו בזמן יוצרים כאבי ראש מיותרים בתחומי הציות והאבטחה. למרבה המזל, יש לנו כלי אוטומציה עוצמתיים בהישג יד. במדריך מקיף זה נבחן כיצד לעקוב אחר רישיונות של Microsoft 365, להקצות אותם ולשלול אותם באמצעות PowerShell, כדי לשלוט בעלויות, לייעל תהליכי קליטת עובדים ולהבטיח ציות הדוק בכל הדייר. אם אתם אוהבים להתעמק באסטרטגיות אוטומציה טכניות, כדאי לבדוק את הפרק הקשור שלנו על Run Your Full Stack Locally with .NET Aspire, שם תמצאו תובנות נוספות על תהליכי עבודה וכלים למפתחים.

מבוא לאוטומציה של אופטימיזציה של רישיונות וביקורות

ניהול ידני של דייר Microsoft 365 הוא מתכון בטוח לשחיקה ולטעויות אנוש. ככל שהארגון גדל, עובדים עוזבים, מחלקות משתנות ודרישות התוכנה משתנות בחדות. אם לא נשלוט בכך, מנהלים נוטים לאגור רישיונות, להמשיך לשלם עבור קבלני משנה לשעבר או להשאיר רישיונות E5 יקרים משויכים לחשבונות לא פעילים. כשמכניסים אוטומציה לאסטרטגיית אופטימיזציית הרישיונות, מסירים את הניחושים. PowerShell מאפשר לכם לשאול נתונים מהדייר, לנתח דפוסי שימוש ולשחזר נכסים שאינם בשימוש בצורה programmatic, ובכך הופכים מטלה ניהולית תגובתית לאמצעי הגנה פיננסי יזום.

דרישות מוקדמות והכנת הסביבה

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

מערכות נתמכות

ניתן להריץ את סקריפטי הניהול של Microsoft 365 גם במערכות Windows וגם ב-macOS. רוב מנהלי המערכות מעדיפים את Windows 10 ומעלה, בעוד משתמשי Mac יכולים להסתמך על PowerShell Core. יש לוודא תמיד שמערכת ההפעלה תומכת בחבילות המודולריות העדכניות. אם נתקלתם בשגיאות אינטגרציה של Web Account Manager (WAM) או בהתנגשויות תלויות-רכיבים (assembly) בעת התחברות לשירותים, שימוש בפתרונות זמניים כמו המתג DisableWAM יכול לאפשר לסקריפטים להמשיך לפעול.

הרשאות ותפקידים

אבטחה היא עניין מרכזי. לעולם אל תריצו סקריפטים ניהוליים באמצעות חשבון משתמש רגיל. ודאו שלזהות שמריצה את הסקריפט יש התפקידים המתאימים, כמו Global Administrator, User Administrator או License Administrator. היצמדות לעקרון ההרשאות המינימליות מבטיחה שפרטי הגישה הניהוליים שלכם נושאים רק את ההרשאות המדויקות הנדרשות לביצוע ביקורות והקצאות רישיונות.

רשימת בדיקה להכנת הסביבה

  1. פתחו את Windows PowerShell כמנהל מערכת.
  2. הגדירו את PowerShell Gallery כמאגר מהימן:
    Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
  3. התקינו את ספק NuGet הנדרש אם תתבקשו לעשות זאת.
  4. הגדירו את מדיניות הרצת הסקריפטים שלכם:
    Set-ExecutionPolicy RemoteSigned

התקנת מודולי PowerShell חיוניים של Microsoft 365

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

סקירת המודולים

  • Microsoft.Graph: המודול המאוחד והמודרני שמחליף כלים מדור קודם כמו MSOnline ו-AzureAD.
  • ExchangeOnlineManagement: חיוני לניהול תיבות דואר, להמרת תיבות דואר משותפות ולמעקב אחר זרימת דואר.
  • MicrosoftTeams: חיוני לניהול עומסי עבודה שיתופיים ומדיניות פגישות.

שלבי ההתקנה

ניתן להתקין את המודולים המודרניים המרכזיים על ידי הרצת הפקודות הבאות בשורת PowerShell מוגברת:

Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -Force
Install-Module -Name MicrosoftTeams -Scope CurrentUser -Force

יש לוודא תמיד את ההתקנות באמצעות Get-InstalledModule, כדי להבטיח שגרסאות מתנגשות לא יפריעו לרצי האוטומציה שלכם.

חיבור PowerShell לדייר Microsoft 365 שלכם

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

אפשרויות אימות

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

התחברות ל-Graph ולשירותים

כדי להתחבר ל-backend של Microsoft Graph לניהול משתמשים ורישיונות, השתמשו ב:

Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All"

עבור עומסי עבודה ייעודיים ל-Exchange והגדרות תיבות דואר, פתחו את הסשן באמצעות:

Connect-ExchangeOnline

כשהסקריפט מסיים את פעולות ה-batch שלו, זכרו לסגור את הסשן על ידי הרצת Disconnect-ExchangeOnline או Disconnect-MgGraph.

ביקורת על מושבים לא בשימוש ומלאי רישיונות

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

בדיקת SKU-ים מנויים

כדי לבדוק את סך מאגר הרישיונות שנרכשו מול הכמויות הזמינות בדייר שלכם, הריצו את הפקודה הבאה:

Get-MgSubscribedSku | Select-Object SkuId, SkuPartNumber, @{Name="Total";Expression={$_.ConsolidatedStatus}}, @{Name="Assigned";Expression={$_.AssignedUnits}}

איתור משתמשים לא פעילים

זיהוי חשבונות שלא אומתו במשך יותר מ-90 יום הוא הדרך המהירה ביותר לצמצם הוצאות ענן מיותרות. אפשר לסנן רשימות משתמשים כדי לאתר חשבונות רדומים:

$Threshold = (Get-Date).AddDays(-90)
Get-MgGet-MgUser -All -Property Id, DisplayName, UserPrincipalName, SignInActivity | Where-Object { $_.SignInActivity.LastSignInDateTime -lt $Threshold }

ייצוא הנתונים לקובץ CSV מאפשר להציג למנהלי ה-IT מדדי חיסכון ברורים לפני ביצוע הסרה המונית של רישיונות.

שימוש ב-Set-MgUserLicense להקצאה ולביטול רישיונות

לאחר שזיהיתם מושבים שאינם מנוצלים במלואם או עובדים חדשים שצריכים הטמעה, ה-cmdlet Set-MgUserLicense הופך לכלי העיקרי שלכם לביצוע השינויים.

הקצאת רישיונות באופן תוכנתי

כדי להקצות SKU מסוים של מוצר למשתמש חדש, בונים אובייקט הקצאת רישיון המכיל את ה-SkuId היעד:

$Params = @{
    AddLicenses = @(
        @{
            SkuId = "your-sku-guid-here"
        }
    )
    RemoveLicenses = @()
}
Set-MgUserLicense -UserId "alex.johnson@contoso.com" -BodyParameter $Params

ביטול רישיונות שאינם בשימוש

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

אוטומציה של תהליכי רישיון להטמעה ולהפרדה מהארגון

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

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

אבטחה ושיטות עבודה מומלצות לפי עיקרון ההרשאה המינימלית

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

  • הרשאות מינימליות: לעולם אל תעניקו הרשאות Global Administrator לחשבונות שירות אוטומטיים. הגבילו את ההרשאות במדויק למה שהסקריפט באמת צריך.
  • אבטחת אישורי גישה: לעולם אל תאחסנו סיסמאות בטקסט פשוט בתוך סקריפטים. השתמשו ב-Azure Key Vault, בזהויות מנוהלות או באימות באמצעות אישור.
  • רישום יומנים מקיף: הטמיעו בלוקים חזקים של try/catch ותעדו את שלבי הרצת הסקריפט ביומנים מקומיים או בענן, לצורך מעקב מלא.

פתרון תקלות נפוצות ברישיונות ובחיבורים

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

  1. שגיאות Permission Denied: ודאו שלחשבון המריץ יש את תפקידי הדירקטוריון הנדרשים ב-Azure AD, ושחיבור ה-Graph שלכם ביקש את היקפי ההסכמה הנכונים.
  2. כשלי הקצאת רישיון: ודאו שלמשתמש היעד מוגדר "Usage Location" (מיקום שימוש). Microsoft 365 ידחה הקצאות רישיון אם שדה המדינה של המשתמש ריק.
  3. התנגשויות מודולים: אם cmdlet-ים נכשלים עקב גרסאות מודול מתנגשות, הסירו לחלוטין מודולים מדור קודם (כמו MSOnline) וקבעו את הסביבה שלכם על ה-Microsoft Graph SDK המודרני.

סיכום

אוטומציה של אופטימיזציית רישיונות וביקורות ב-Microsoft 365 מגשרת על הפער בין ניהול IT יעיל לבין ניהול פיננסי חכם. באמצעות PowerShell ו-cmdlets כמו Set-MgUserLicense, אפשר לבטל הוצאות תוכנה מיותרות, לאכוף תאימות אבטחה הדוקה ולייעל את תהליכי ניהול המשתמשים בכל הארגון. אם אתם רוצים להרחיב עוד יותר את האופקים הטכניים שלכם אל כלים ותשתיות מודרניים, כדאי מאוד לצפות בפרק הקשור שלנו על איך Run Your Full Stack Locally with .NET Aspire. הישארו פרואקטיביים, שמרו על אבטחת הסקריפטים שלכם, והפכו את הדייר שלכם ב-Microsoft 365 למנוע מתוחזק היטב וחסכוני!

Entities in this article

PowerShell Microsoft 365 Least privilege Automation .NET Aspire Global Administrator Compliance Burnout Microsoft Graph NuGet

Related articles

RSS