Security Copilot versteht Fragen wie „Welche Benutzer haben sich heute von unbekannten Standorten angemeldet?" und übersetzt diese in Graph-API-Abfragen und KQL-Queries — ohne manuelle Programmierung. Security Copilot understands questions like "Which users signed in from unknown locations today?" and translates them into Graph API queries and KQL queries — without manual programming.
Der Copilot-Assistent ist direkt im Entra Admin Center verfügbar — als Seitenleiste in Identity Protection, Conditional Access, Benutzeransichten und Anmeldeprotokollen. The Copilot assistant is available directly in the Entra Admin Center — as a sidebar in Identity Protection, Conditional Access, user views, and sign-in logs.
Copilot verfügt über dedizierte „Skills" für Entra: Get User Risk Details, Summarize Sign-In Logs, Analyze Conditional Access Policy, List Risky Users und mehr — jede Skill greift direkt auf die Entra-API zu. Copilot has dedicated "Skills" for Entra: Get User Risk Details, Summarize Sign-In Logs, Analyze Conditional Access Policy, List Risky Users, and more — each skill directly calls the Entra API.
Security Copilot erfordert Security Compute Units (SCU) und die Integration mit Entra ID. Für volle Identity-Protection- und Governance-Funktionalität wird Entra ID P2 benötigt. Security Copilot requires Security Compute Units (SCU) and integration with Entra ID. For full Identity Protection and Governance functionality, Entra ID P2 is required.
Was ist Security Copilot + Microsoft Entra? What is Security Copilot + Microsoft Entra?
Microsoft Security Copilot ist ein KI-gestützter Sicherheitsassistent, der auf dem GPT-4-Modell von OpenAI und den Sicherheitsdaten und -signalen von Microsoft aufbaut. In Kombination mit Microsoft Entra ermöglicht er Sicherheitsanalysten, Administratoren und SOC-Teams die effiziente Untersuchung von Identitätsrisiken, Diagnose von Anmeldefehlern und Analyse von Conditional-Access-Richtlinien — alles in natürlicher Sprache (Deutsch und Englisch). Microsoft Security Copilot is an AI-powered security assistant built on OpenAI's GPT-4 model and Microsoft's security data and signals. In combination with Microsoft Entra, it enables security analysts, administrators, and SOC teams to efficiently investigate identity risks, diagnose sign-in failures, and analyze Conditional Access policies — all in natural language (German and English).
Security Copilot ist in zwei Modi verfügbar: Security Copilot is available in two modes:
| ModusMode | ZugangAccess | BesonderheitenCharacteristics |
|---|---|---|
| Standalone PortalStandalone Portal | securitycopilot.microsoft.comsecuritycopilot.microsoft.com | Vollständige Promptbook-Unterstützung, Session-übergreifende Analysen, Integration mit Defender XDR, Sentinel, Purview, Intune und EntraFull Promptbook support, cross-session analysis, integration with Defender XDR, Sentinel, Purview, Intune, and Entra |
| Eingebettet (Embedded)Embedded | Entra Admin Center, Defender Portal, IntuneEntra Admin Center, Defender Portal, Intune | Kontextbewusste Vorschläge direkt in der Admin-Oberfläche; fokussiert auf aktuell geöffnetes Objekt (Benutzer, Policy, Risikoevent)Context-aware suggestions directly in the admin interface; focused on currently open object (user, policy, risk event) |
Die Entra-Funktionen in Security Copilot sind ein Plugin/Skill-Set innerhalb von Security Copilot. Es gibt kein separates „Entra Copilot"-Produkt — die Entra-Skills sind standardmäßig aktiviert, wenn Security Copilot lizenziert und der Entra-Plugin aktiviert ist. The Entra features in Security Copilot are a plugin/skill set within Security Copilot. There is no separate "Entra Copilot" product — the Entra Skills are enabled by default when Security Copilot is licensed and the Entra plugin is activated.
Identity Risk Investigation Identity Risk Investigation
Eines der leistungsstärksten Einsatzgebiete von Security Copilot + Entra ist die Untersuchung von Identitätsrisiken. Copilot kann riskante Benutzer identifizieren, Risikodetails zusammenfassen, kontextbezogene Informationen aus Audit-Logs hinzufügen und automatisierte Empfehlungen zur Risikominimierung liefern. One of the most powerful use cases for Security Copilot + Entra is investigating identity risks. Copilot can identify risky users, summarize risk details, add contextual information from audit logs, and provide automated recommendations for risk mitigation.
Riskante Benutzer untersuchen Investigating Risky Users
Entra Identity Protection klassifiziert Benutzer nach Risikoniveau (Hoch, Mittel, Niedrig). Security Copilot kann diese Daten aggregieren, analysieren und in verständlichem Format darstellen. Entra Identity Protection classifies users by risk level (High, Medium, Low). Security Copilot can aggregate, analyze, and present this data in an understandable format.
| RisikoniveauRisk Level | Typische UrsachenTypical Causes | Empfohlene AktionRecommended Action |
|---|---|---|
| Hoch (High)High | Leaked Credentials, Malware-verknüpfte IP, verdächtige Inbox-Manipulation, Token TheftLeaked credentials, malware-linked IP, suspicious inbox manipulation, token theft | Sofortiger Block, Passwort-Reset erzwingen, alle Sessions widerrufen, Forensik-ReviewImmediate block, force password reset, revoke all sessions, forensics review |
| Mittel (Medium)Medium | Anomale Token, ungewöhnliche Anmeldeorte, mögliche Passwort-Spray-VersucheAnomalous tokens, unusual sign-in locations, possible password spray attempts | MFA erzwingen, Sign-in-Logs analysieren, Benutzer befragenEnforce MFA, analyze sign-in logs, interview user |
| Niedrig (Low)Low | Ungewöhnliche Reiseaktivität, anonymisierte IPUnusual travel activity, anonymized IP | Überwachen, bei Häufung eskalierenMonitor, escalate if recurring |
Deutsch: German:
- „Zeige mir alle Benutzer mit hohem Risikoniveau in den letzten 7 Tagen.""Zeige mir alle Benutzer mit hohem Risikoniveau in den letzten 7 Tagen."
- „Welche Risikoerkennungen wurden für den Benutzer max.mustermann@contoso.com gefunden?""Welche Risikoerkennungen wurden für den Benutzer max.mustermann@contoso.com gefunden?"
- „Erkläre mir, warum dieser Benutzer als riskant eingestuft wurde, und nenne mögliche Gegenmaßnahmen.""Erkläre mir, warum dieser Benutzer als riskant eingestuft wurde, und nenne mögliche Gegenmaßnahmen."
Englisch: English:
- "Show me all high-risk users in the last 7 days.""Show me all high-risk users in the last 7 days."
- "What risk detections were found for user john.doe@contoso.com?""What risk detections were found for user john.doe@contoso.com?"
- "Explain why this user was flagged as risky and suggest remediation steps.""Explain why this user was flagged as risky and suggest remediation steps."
# Riskante Benutzer via Microsoft Graph abrufen (Copilot-Äquivalent)
# Get risky users via Microsoft Graph (Copilot equivalent)
Connect-MgGraph -Scopes "IdentityRiskEvent.Read.All", "IdentityRiskyUser.ReadWrite.All"
# Alle Hochrisikobenutzer
# All high-risk users
Get-MgRiskyUser -Filter "riskLevel eq 'high'" | `
Select-Object UserDisplayName, UserPrincipalName, RiskLevel, RiskState, RiskLastUpdatedDateTime
# Risikoerkennungen für spezifischen Benutzer
# Risk detections for specific user
Get-MgRiskDetection -Filter "userPrincipalName eq 'user@contoso.com'" | `
Select-Object DetectionTimingType, RiskEventType, RiskLevel, Activity, IpAddress | Format-List
# Benutzerrisiko zurücksetzen (nach Untersuchung)
# Dismiss user risk (after investigation)
Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/v1.0/identityProtection/riskyUsers/dismiss" `
-Body (@{ userIds = @("user-objectid-here") } | ConvertTo-Json) `
-ContentType "application/json"
# Benutzerrisiko bestätigen als kompromittiert
# Confirm user is compromised
Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/v1.0/identityProtection/riskyUsers/confirmCompromised" `
-Body (@{ userIds = @("user-objectid-here") } | ConvertTo-Json) `
-ContentType "application/json"Anmeldung-Fehlerbehebung Sign-In Troubleshooting
Security Copilot kann Anmeldefehler analysieren, indem es Sign-In Logs mit natürlichsprachigen Abfragen auswertet. Es kann Fehlercodes erklären, Conditional-Access-Auswertungen zusammenfassen und Lösungsvorschläge machen — alles ohne manuelle KQL-Abfragen. Security Copilot can analyze sign-in failures by evaluating Sign-In Logs with natural language queries. It can explain error codes, summarize Conditional Access evaluations, and make solution suggestions — all without manual KQL queries.
Conditional Access Auswertungsanalyse Conditional Access Evaluation Analysis
Jeder Anmeldevorgang enthält eine detaillierte CA-Auswertung. Copilot kann diese Auswertung in verständliche Aussagen übersetzen: Welche Policies wurden angewendet? Welche wurden nicht erfüllt? Was hat zur Blockierung oder MFA-Anforderung geführt? Every sign-in event contains a detailed CA evaluation. Copilot can translate this evaluation into understandable statements: Which policies were applied? Which were not satisfied? What led to the block or MFA requirement?
- „Warum konnte sich max.mustermann@contoso.com heute Morgen um 09:30 nicht anmelden?""Why couldn't max.mustermann@contoso.com sign in this morning at 09:30?"
- „Erkläre den Fehlercode AADSTS50076 und wie er behoben werden kann.""Explain error code AADSTS50076 and how it can be resolved."
- „Welche Conditional-Access-Policy hat die Anmeldung dieses Benutzers blockiert?""Which Conditional Access policy blocked this user's sign-in?"
- „Zeige mir alle fehlgeschlagenen Anmeldungen der letzten 24 Stunden für externe Benutzer.""Show me all failed sign-ins in the last 24 hours for external users."
- „Was war der Auth-Kontext bei der letzten erfolgreichen Anmeldung des Benutzers?""What was the authentication context at the last successful sign-in of this user?"
| Häufiger FehlercodeCommon Error Code | BedeutungMeaning | Typische LösungTypical Resolution |
|---|---|---|
| AADSTS50076AADSTS50076 | MFA erforderlich aber nicht abgeschlossenMFA required but not completed | MFA-Registrierung prüfen; Authenticator-App-Status; CA-Policy-Ausnahme prüfenCheck MFA registration; Authenticator app status; verify CA policy exception |
| AADSTS50105AADSTS50105 | Benutzer nicht der App zugewiesenUser not assigned to the app | Enterprise Application → Benutzer und Gruppen → Zuweisung hinzufügenEnterprise Application → Users and Groups → Add assignment |
| AADSTS53003AADSTS53003 | Zugriff durch Conditional Access blockiertAccess blocked by Conditional Access | CA-Policy-ID aus den Logs ermitteln, Policy-Bedingungen prüfenIdentify CA policy ID from logs, check policy conditions |
| AADSTS70011AADSTS70011 | Ungültiger Scope/RessourceInvalid scope/resource | App-Registrierung prüfen; API-Berechtigungen validierenCheck app registration; validate API permissions |
| AADSTS90072AADSTS90072 | Externes Konto meldet sich am Home-Tenant anExternal account signing into home tenant | Cross-Tenant Access Settings und B2B-Konfiguration prüfenCheck Cross-Tenant Access Settings and B2B configuration |
| AADSTS135011AADSTS135011 | Gerät nicht Entra-registriert oder nicht konformDevice not Entra-registered or not compliant | Gerätestatus in Entra ID prüfen; Intune-Compliance-Status validierenCheck device status in Entra ID; validate Intune compliance status |
// KQL: Fehlgeschlagene Anmeldungen der letzten 24 Stunden analysieren
// KQL: Analyze failed sign-ins from the last 24 hours
SigninLogs
| where TimeGenerated > ago(24h)
| where ResultType != 0
| summarize
FailureCount = count(),
Users = make_set(UserPrincipalName),
ErrorCodes = make_set(ResultType),
Countries = make_set(Location)
by ResultDescription, AppDisplayName
| sort by FailureCount desc
| take 20
// KQL: Conditional Access Policy Details pro Anmeldung
// KQL: Conditional Access Policy Details per sign-in
SigninLogs
| where TimeGenerated > ago(7d)
| where UserPrincipalName == "user@contoso.com"
| mv-expand ConditionalAccessPolicies
| extend
PolicyName = tostring(ConditionalAccessPolicies.displayName),
PolicyResult = tostring(ConditionalAccessPolicies.result),
PolicyId = tostring(ConditionalAccessPolicies.id)
| where PolicyResult in ("failure", "reportOnlyFailure")
| project TimeGenerated, PolicyName, PolicyResult, AppDisplayName, ResultDescriptionConditional-Access-Policy-Analyse Conditional Access Policy Analysis
Security Copilot kann bestehende Conditional-Access-Policies analysieren, Lücken identifizieren, Konflikte erkennen und What-If-Szenarien durchspielen. Diese Funktionalität ergänzt das eingebaute What-If-Tool im Entra Admin Center erheblich, da Copilot komplexe Policy-Kombinationen in natürlicher Sprache erklären kann. Security Copilot can analyze existing Conditional Access policies, identify gaps, detect conflicts, and simulate What-If scenarios. This functionality significantly complements the built-in What-If tool in the Entra Admin Center, as Copilot can explain complex policy combinations in natural language.
Policy-Lückenanalyse Policy Gap Analysis
- „Analysiere meine Conditional-Access-Policies auf Lücken. Welche Szenarien sind nicht abgedeckt?""Analyze my Conditional Access policies for gaps. Which scenarios are not covered?"
- „Gibt es Konflikte zwischen meinen CA-Policies, die dazu führen könnten, dass Benutzer unbeabsichtigt blockiert werden?""Are there conflicts between my CA policies that could cause users to be unintentionally blocked?"
- „Welche Policies gelten für den Benutzer max.mustermann@contoso.com, wenn er sich von einem nicht verwalteten Gerät aus einem Café anmeldet?""Which policies apply to user max.mustermann@contoso.com when signing in from an unmanaged device at a café?"
- „Zeige mir alle CA-Policies, die MFA für externe Benutzer nicht erzwingen.""Show me all CA policies that don't enforce MFA for external users."
- „Welche Dienst-Principals (Non-User-Accounts) sind von meinen CA-Policies ausgenommen?""Which service principals (non-user accounts) are excluded from my CA policies?"
# Alle CA-Policies als JSON abrufen (für Copilot-Import oder eigene Analyse)
# Retrieve all CA policies as JSON (for Copilot import or own analysis)
Connect-MgGraph -Scopes "Policy.Read.All"
$policies = Get-MgIdentityConditionalAccessPolicy -All
$policies | Select-Object DisplayName, State, CreatedDateTime | Format-Table -AutoSize
# Detaillierte Policy-Analyse: Alle Ausschlüsse anzeigen
# Detailed policy analysis: Show all exclusions
foreach ($policy in $policies) {
if ($policy.Conditions.Users.ExcludeUsers -or $policy.Conditions.Users.ExcludeGroups) {
Write-Host "`nPolicy: $($policy.DisplayName)" -ForegroundColor Yellow
Write-Host " Excluded Users: $($policy.Conditions.Users.ExcludeUsers -join ', ')"
Write-Host " Excluded Groups: $($policy.Conditions.Users.ExcludeGroups -join ', ')"
}
}
# CA What-If Simulation via Graph API
# CA What-If Simulation via Graph API
$whatIfBody = @{
conditionalAccessWhatIfSubject = @{
"@odata.type" = "#microsoft.graph.conditionalAccessWhatIfUser"
userId = "user-object-id"
}
conditionalAccessContext = @{
"@odata.type" = "#microsoft.graph.conditionalAccessContext"
servicePrincipalId = "app-object-id"
ipAddress = "203.0.113.42"
country = "DE"
devicePlatform = "windows"
clientAppType = "browser"
}
} | ConvertTo-Json -Depth 5
Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/identity/conditionalAccess/evaluate" `
-Body $whatIfBody -ContentType "application/json"Benutzer- und Gruppen-Insights User and Group Insights
Security Copilot kann auf einfache Fragen zu Benutzern und Gruppen umfassende Antworten liefern, die normalerweise mehrere Graph-API-Abfragen und manuelle Zusammenführung erfordern würden. Dies spart SOC-Teams und Administratoren erheblich Zeit bei der Erstuntersuchung. Security Copilot can provide comprehensive answers to simple questions about users and groups that would normally require multiple Graph API queries and manual aggregation. This saves SOC teams and administrators significant time during initial investigation.
- „Zeige mir alle Entra ID-Rollen und Lizenzen, die max.mustermann@contoso.com zugewiesen sind.""Show me all Entra ID roles and licenses assigned to max.mustermann@contoso.com."
- „Wer ist Mitglied der Gruppe 'IT-Administratoren' und seit wann?""Who is a member of the group 'IT-Administrators' and since when?"
- „Welche privilegierten Rollen hat max.mustermann@contoso.com direkt oder über Gruppen?""Which privileged roles does max.mustermann@contoso.com have directly or via groups?"
- „Zeige mir alle Benutzer, die seit mehr als 90 Tagen inaktiv sind.""Show me all users who have been inactive for more than 90 days."
- „Welche Gastbenutzer haben Zugriff auf SharePoint und haben sich in den letzten 30 Tagen nicht angemeldet?""Which guest users have access to SharePoint and haven't signed in in the last 30 days?"
# Vollständiges Benutzerprofil abrufen (alle relevanten Sicherheitsinformationen)
# Get complete user profile (all relevant security information)
Connect-MgGraph -Scopes "User.Read.All","Directory.Read.All","AuditLog.Read.All"
$upn = "max.mustermann@contoso.com"
$user = Get-MgUser -UserId $upn -Property `
"id,displayName,userPrincipalName,accountEnabled,assignedLicenses,
assignedRoles,signInActivity,onPremisesSyncEnabled,lastPasswordChangeDateTime,
createdDateTime,userType"
# Rollenzuweisungen
# Role assignments
$roles = Get-MgUserMemberOf -UserId $user.Id | `
Where-Object { $_."@odata.type" -eq "#microsoft.graph.directoryRole" } | `
Select-Object DisplayName
# Gruppenmigtliedschaft
# Group membership
$groups = Get-MgUserMemberOf -UserId $user.Id | `
Where-Object { $_."@odata.type" -eq "#microsoft.graph.group" } | `
Select-Object DisplayName, Id
# Letzte Anmeldung
# Last sign-in
$signInActivity = $user.SignInActivity
Write-Host "Letzter interaktiver Sign-In / Last interactive sign-in: $($signInActivity.LastSignInDateTime)"
Write-Host "Letzte non-interaktive Aktivität / Last non-interactive: $($signInActivity.LastNonInteractiveSignInDateTime)"
# Lizenzstatus
# License status
$licenses = Get-MgUserLicenseDetail -UserId $user.Id | Select-Object SkuPartNumber, ServicePlansIdentity Governance mit Copilot Identity Governance with Copilot
Security Copilot kann bei Identity-Governance-Aufgaben unterstützen: Access Reviews prüfen, Entitlement-Management-Pakete analysieren, Lifecycle-Workflow-Ausführungen nachverfolgen und PIM-Aktivierungshistorie untersuchen. Security Copilot can assist with Identity Governance tasks: review access reviews, analyze entitlement management packages, track lifecycle workflow executions, and investigate PIM activation history.
| Governance-BereichGovernance Area | Copilot-FähigkeitCopilot Capability | Graph API EndpointGraph API Endpoint |
|---|---|---|
| Access ReviewsAccess Reviews | Offene Reviews anzeigen, nicht reviewte Mitglieder identifizieren, Abschlussrate berechnenShow open reviews, identify un-reviewed members, calculate completion rate | /identityGovernance/accessReviews/identityGovernance/accessReviews |
| Entitlement ManagementEntitlement Management | Zugriffspakete und ihre Zuweisungen analysieren, ablaufende Zuweisungen identifizierenAnalyze access packages and their assignments, identify expiring assignments | /identityGovernance/entitlementManagement/identityGovernance/entitlementManagement |
| Lifecycle WorkflowsLifecycle Workflows | Workflow-Ausführungshistorie anzeigen, fehlgeschlagene Workflow-Aufgaben identifizierenView workflow execution history, identify failed workflow tasks | /identityGovernance/lifecycleWorkflows/identityGovernance/lifecycleWorkflows |
| PIM AktivierungenPIM Activations | PIM-Aktivierungshistorie für Benutzer und Rollen anzeigen, ungewöhnliche Aktivierungen erkennenView PIM activation history for users and roles, detect unusual activations | /roleManagement/directory/roleAssignmentScheduleInstances/roleManagement/directory/roleAssignmentScheduleInstances |
# PIM Aktivierungshistorie der letzten 30 Tage
# PIM activation history for the last 30 days
Connect-MgGraph -Scopes "RoleManagement.Read.Directory", "AuditLog.Read.All"
$activations = Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?`$filter=loggedByService eq 'PIM' and activityDateTime ge $((Get-Date).AddDays(-30).ToString('yyyy-MM-ddTHH:mm:ssZ'))&`$top=100"
$activations.value | ForEach-Object {
[PSCustomObject]@{
ActivityDateTime = $_.activityDateTime
Activity = $_.activityDisplayName
Initiator = $_.initiatedBy.user.userPrincipalName
TargetRole = ($_.targetResources | Where-Object type -eq "Role").displayName
Result = $_.result
}
} | Format-Table -AutoSize
# Access Reviews Status
# Access Review Status
$reviews = Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions?`$filter=status eq 'InProgress'"
$reviews.value | Select-Object displayName, status, startDateTime, endDateTime | Format-Table -AutoSizeAudit-Log-Analyse mit Copilot Audit Log Analysis with Copilot
Die Analyse von Audit-Logs ist ohne KI-Unterstützung aufwändig — tausende von Einträgen müssen gefiltert und kontextualisiert werden. Security Copilot kann Audit-Logs in natürlicher Sprache abfragen und wichtige Aktivitäten hervorheben, z. B. ungewöhnliche Admin-Aktionen, App-Consent-Ereignisse und Verzeichnisänderungen. Analyzing audit logs without AI support is time-consuming — thousands of entries need to be filtered and contextualized. Security Copilot can query audit logs in natural language and highlight important activities, e.g., unusual admin actions, app consent events, and directory changes.
- „Welche administrativen Aktionen hat max.mustermann@contoso.com in den letzten 24 Stunden durchgeführt?""What administrative actions did max.mustermann@contoso.com perform in the last 24 hours?"
- „Zeige mir alle App-Consent-Grants der letzten Woche. Gibt es Anomalien?""Show me all app consent grants from the last week. Are there any anomalies?"
- „Wer hat in den letzten 7 Tagen Benutzer zu Administratorrollen hinzugefügt?""Who added users to administrator roles in the last 7 days?"
- „Wurden in den letzten 30 Tagen Conditional-Access-Policies deaktiviert oder gelöscht?""Were any Conditional Access policies disabled or deleted in the last 30 days?"
- „Zeige mir alle Verzeichnisänderungen am vergangenen Freitag zwischen 18:00 und 23:59 Uhr.""Show me all directory changes last Friday between 6 PM and 11:59 PM."
// KQL: Verdächtige App-Consent-Grants erkennen
// KQL: Detect suspicious app consent grants
AuditLogs
| where TimeGenerated > ago(7d)
| where OperationName in ("Consent to application", "Add delegated permission grant")
| extend
ConsentedBy = tostring(InitiatedBy.user.userPrincipalName),
AppName = tostring(TargetResources[0].displayName),
GrantedScopes = tostring(AdditionalDetails)
| project TimeGenerated, ConsentedBy, AppName, GrantedScopes, Result
| sort by TimeGenerated desc
// KQL: Rollenzuweisungsänderungen der letzten 24 Stunden
// KQL: Role assignment changes in the last 24 hours
AuditLogs
| where TimeGenerated > ago(24h)
| where Category == "RoleManagement"
| where OperationName in ("Add member to role", "Remove member from role")
| extend
Actor = tostring(InitiatedBy.user.userPrincipalName),
TargetUser = tostring(TargetResources[0].displayName),
RoleName = tostring(TargetResources[1].displayName)
| project TimeGenerated, Actor, OperationName, TargetUser, RoleName
| sort by TimeGenerated desc
// KQL: CA-Policy-Änderungen erkennen
// KQL: Detect CA policy changes
AuditLogs
| where TimeGenerated > ago(30d)
| where Category == "Policy"
| where OperationName startswith "Update conditional access policy"
or OperationName startswith "Delete conditional access policy"
| extend
Actor = tostring(InitiatedBy.user.userPrincipalName),
PolicyName = tostring(TargetResources[0].displayName)
| project TimeGenerated, Actor, OperationName, PolicyName, ResultCopilot Skills für Microsoft Entra Copilot Skills for Microsoft Entra
Security Copilot stellt für Microsoft Entra vordefinierte „Skills" zur Verfügung. Jede Skill ist eine spezialisierte Fähigkeit, die bestimmte Daten aus Entra ID abruft und verarbeitet. Benutzer können Skills direkt über natürliche Sprache aufrufen oder explizit in Prompts referenzieren. Security Copilot provides predefined "Skills" for Microsoft Entra. Each skill is a specialized capability that retrieves and processes specific data from Entra ID. Users can invoke skills directly through natural language or reference them explicitly in prompts.
| Skill-KategorieSkill Category | Skill-NameSkill Name | BeschreibungDescription |
|---|---|---|
| BenutzerUsers | Get User DetailsGet User Details | Vollständige Benutzerinformationen inkl. Rollen, Gruppen, Lizenzen, letzter AnmeldungComplete user information including roles, groups, licenses, last sign-in |
| BenutzerUsers | List Inactive UsersList Inactive Users | Benutzer nach Inaktivitätszeitraum filternFilter users by inactivity period |
| GruppenGroups | Get Group MembersGet Group Members | Alle Mitglieder einer Gruppe mit deren Rollen und BerechtigungenAll members of a group with their roles and permissions |
| RollenRoles | List Role AssignmentsList Role Assignments | Alle aktiven Rollenzuweisungen mit Typ (direkt/über Gruppe/PIM berechtigt)All active role assignments with type (direct/via group/PIM eligible) |
| AnmeldungenSign-ins | Summarize Sign-in LogsSummarize Sign-in Logs | Sign-in-Protokolle für Benutzer oder Zeitraum zusammenfassenSummarize sign-in logs for a user or time period |
| AnmeldungenSign-ins | Diagnose Sign-in FailureDiagnose Sign-in Failure | Fehlgeschlagene Anmeldung erklären und Lösungsschritte vorschlagenExplain failed sign-in and suggest remediation steps |
| RisikenRisks | Get User Risk DetailsGet User Risk Details | Alle Risikodetails für Benutzer inkl. Erkennungstypen und EmpfehlungenAll risk details for user including detection types and recommendations |
| RisikenRisks | List Risky UsersList Risky Users | Alle riskanten Benutzer nach Level und Status filternFilter all risky users by level and status |
| RichtlinienPolicies | Analyze CA PolicyAnalyze CA Policy | Bestehende CA-Policy analysieren, Lücken und Ausschlüsse identifizierenAnalyze existing CA policy, identify gaps and exclusions |
| RichtlinienPolicies | CA Policy What-IfCA Policy What-If | What-If-Simulation für spezifisches Benutzer/App/Geräte-SzenarioWhat-If simulation for specific user/app/device scenario |
Prompt Engineering für Entra-Abfragen Prompt Engineering for Entra Queries
Effektives Prompt Engineering maximiert die Qualität der Copilot-Antworten. Folgende Prinzipien gelten für Entra-Abfragen: Effective prompt engineering maximizes the quality of Copilot responses. The following principles apply to Entra queries:
| PrinzipPrinciple | Schlechtes BeispielPoor Example | Gutes BeispielGood Example |
|---|---|---|
| Kontext angebenProvide context | „Zeige Benutzerrisiken""Show user risks" | „Zeige alle Entra-Benutzer mit Risikoniveau Hoch aus den letzten 48 Stunden inkl. Erkennungstyp""Show all Entra users with High risk level from the last 48 hours including detection type" |
| Ausgabeformat angebenSpecify output format | „Analysiere die CA-Policy""Analyze the CA policy" | „Analysiere die CA-Policy 'Block Legacy Auth' und liste alle Ausnahmen als Tabelle mit Begründung""Analyze the CA policy 'Block Legacy Auth' and list all exceptions as a table with justification" |
| Schrittweise vorgehenWork step-by-step | „Finde und behebe alle Sicherheitsprobleme""Find and fix all security issues" | „Schritt 1: Liste alle riskanten Benutzer. Schritt 2: Für den Benutzer mit höchstem Risiko: erkläre alle Risikoerkennungen.""Step 1: List all risky users. Step 2: For the highest-risk user: explain all risk detections." |
| Zeitraum angebenSpecify time period | „Zeige Admin-Aktivitäten""Show admin activities" | „Zeige alle Admin-Aktivitäten vom Global Administrator-Konto in den letzten 7 Tagen""Show all admin activities from the Global Administrator account in the last 7 days" |
Integration mit Defender, Purview und Intune Integration with Defender, Purview, and Intune
Security Copilot kann Entra-Daten mit Signalen aus anderen Microsoft-Security-Produkten kombinieren. Dies ermöglicht eine ganzheitliche Sicherheitsanalyse, die Identitäts-, Gerät- und Datenperspektiven vereint. Security Copilot can combine Entra data with signals from other Microsoft security products. This enables holistic security analysis that unifies identity, device, and data perspectives.
DE: „Untersuche den Benutzer max.mustermann@contoso.com. Prüfe sein Entra-Risikoprofil, seine letzten Anmeldungen, und ob sein Gerät in Intune als konform gilt. Falls Defender for Identity Alarme vorhanden sind, zeige diese ebenfalls." EN: "Investigate user john.doe@contoso.com. Check his Entra risk profile, his recent sign-ins, and whether his device is compliant in Intune. If Defender for Identity alerts exist, show those as well."
Einrichtung und Konfiguration Setup and Configuration
Vor der Nutzung von Security Copilot für Entra-Szenarien sind folgende Voraussetzungen zu erfüllen: Before using Security Copilot for Entra scenarios, the following prerequisites must be met:
Lizenzierung: SCU + Entra Licensing: SCU + Entra
| Lizenz/ProduktLicense/Product | Erforderlich fürRequired for | HinweisNote |
|---|---|---|
| Security Compute Units (SCU)Security Compute Units (SCU) | Alle Security Copilot FunktionenAll Security Copilot features | Provisioned-Modell: Mindestens 1 SCU; Kapazitätsplanung wichtig für Multi-Analyst-BetriebProvisioned model: minimum 1 SCU; capacity planning important for multi-analyst operations |
| Microsoft Entra ID P1Microsoft Entra ID P1 | Conditional Access Analyse, Sign-in LogsConditional Access analysis, sign-in logs | Für grundlegende CA- und Sign-in-Analyse ausreichendSufficient for basic CA and sign-in analysis |
| Microsoft Entra ID P2Microsoft Entra ID P2 | Identity Protection, PIM-Analyse, Governance-FeaturesIdentity Protection, PIM analysis, Governance features | Für vollständige Risikoermittlung und Governance-Copilot-Funktionen erforderlichRequired for complete risk investigation and governance Copilot functions |
| Microsoft Entra ID Governance (Add-On)Microsoft Entra ID Governance (Add-On) | Access Reviews, Entitlement Management, Lifecycle WorkflowsAccess Reviews, Entitlement Management, Lifecycle Workflows | Separat lizenziertes Add-On zu Entra ID P2Separately licensed add-on to Entra ID P2 |
Berechtigungen und Rollen Permissions and Roles
Security Copilot zeigt nur Daten an, auf die der angemeldete Benutzer aufgrund seiner Entra ID Rollen Zugriff hat. Ein Analyst mit „Security Reader" sieht keine Daten, die „Global Administrator" erfordern. Dies ist kein technisches Limit von Copilot, sondern das korrekte Verhalten durch die Delegation von Berechtigungen an die zugrunde liegenden APIs. Security Copilot only shows data that the signed-in user has access to based on their Entra ID roles. An analyst with "Security Reader" will not see data requiring "Global Administrator." This is not a technical limit of Copilot, but the correct behavior through delegation of permissions to the underlying APIs.
| Entra-RolleEntra Role | Copilot-ZugriffCopilot Access |
|---|---|
| Security ReaderSecurity Reader | Risikoprofile, Sign-in Logs (lesen), Audit Logs (lesen), CA-Policies (lesen)Risk profiles, sign-in logs (read), audit logs (read), CA policies (read) |
| Security OperatorSecurity Operator | + Risiken bestätigen/zurücksetzen, Benutzer blockieren+ Confirm/dismiss risks, block users |
| Security AdministratorSecurity Administrator | + CA-Policies erstellen/bearbeiten, Identity Protection konfigurieren+ Create/edit CA policies, configure Identity Protection |
| Conditional Access AdministratorConditional Access Administrator | Vollständiger CA-Policy-Zugriff (lesen und schreiben)Full CA policy access (read and write) |
| Global ReaderGlobal Reader | Lesezugriff auf alle Entra-Daten inkl. privilegierter InformationenRead access to all Entra data including privileged information |
# Security Copilot für Entra einrichten
# Set up Security Copilot for Entra
# 1. Security Copilot SCU provisionieren (Azure Portal: Security Copilot)
# 1. Provision Security Copilot SCU (Azure Portal: Security Copilot)
# Navigiere zu: portal.azure.com → Microsoft Security Copilot → Neue Kapazität erstellen
# Navigate to: portal.azure.com → Microsoft Security Copilot → Create new capacity
# 2. Entra-Plugin in Security Copilot aktivieren
# 2. Enable Entra plugin in Security Copilot
# Im Security Copilot Portal → Einstellungen → Plugins → Microsoft Entra → Aktivieren
# In Security Copilot Portal → Settings → Plugins → Microsoft Entra → Enable
# 3. Capacity Units prüfen (via Az PowerShell)
# 3. Check Capacity Units (via Az PowerShell)
Connect-AzAccount
Get-AzResource -ResourceType "Microsoft.SecurityCopilot/capacities" | `
Select-Object ResourceGroupName, Name, Location, Sku
# 4. Rollenzuweisung für Security Copilot Analysten
# 4. Role assignment for Security Copilot analysts
$analysts = @("analyst1@contoso.com", "analyst2@contoso.com")
foreach ($analyst in $analysts) {
New-MgRoleManagementDirectoryRoleAssignment `
-PrincipalId (Get-MgUser -UserId $analyst).Id `
-RoleDefinitionId "5d6b6bb7-de71-4623-b4af-96380a352509" ` # Security Reader
-DirectoryScopeId "/"
}Eingebettete Copilot-Erfahrung im Entra Admin Center Embedded Copilot Experience in Entra Admin Center
Die eingebettete Copilot-Erfahrung im Entra Admin Center bietet kontextbewusste KI-Unterstützung direkt im Admin-Workflow. Sie erscheint als Seitenleiste oder als inline Zusammenfassung in bestimmten Ansichten. The embedded Copilot experience in the Entra Admin Center provides context-aware AI assistance directly in the admin workflow. It appears as a sidebar or inline summary in certain views.
| Ansicht/KontextView/Context | Copilot-IntegrationCopilot Integration |
|---|---|
| BenutzerprofilUser Profile | Inline-Zusammenfassung des Risikoniveaus, letzter Anmeldung, zugewiesener Rollen und wichtiger SicherheitshinweiseInline summary of risk level, last sign-in, assigned roles, and important security notes |
| Identity Protection → Risky UsersIdentity Protection → Risky Users | Risikoerklärungs-Panel mit empfohlenen Aktionen für ausgewählten BenutzerRisk explanation panel with recommended actions for selected user |
| Sign-in LogsSign-in Logs | Fehlererklärung und CA-Policy-Analyse für ausgewählten AnmeldeeintragError explanation and CA policy analysis for selected sign-in entry |
| Conditional Access → PolicyConditional Access → Policy | Policy-Zusammenfassung in natürlicher Sprache, Lückenanalyse auf AnfragePolicy summary in natural language, gap analysis on request |
| Vollbild (Fullscreen)Fullscreen | Vollständiges Copilot-Chat-Interface innerhalb des Entra Admin CentersFull Copilot chat interface within the Entra Admin Center |
Best Practices Best Practices
Effektives Prompting für Security Copilot + Entra Effective Prompting for Security Copilot + Entra
- Identitäts-Anker setzen: Immer UPN oder ObjectID des Benutzers nennen, nicht nur den Anzeigenamen (Duplikate möglich). Set identity anchors: Always specify UPN or ObjectID of the user, not just display name (duplicates possible).
- Zeitfenster spezifizieren: „Letzte 24 Stunden", „Seit Montag 08:00 Uhr" oder mit ISO-Timestamp für präzise Analysen. Specify time windows: "Last 24 hours", "since Monday 8 AM" or with ISO timestamp for precise analysis.
- Aktionen klar benennen: Statt „untersuche den Benutzer" lieber „zeige Risikoprofil, letzte 5 Anmeldungen, und CA-Policy-Ergebnis für diesen Benutzer". Name actions clearly: Instead of "investigate the user", prefer "show risk profile, last 5 sign-ins, and CA policy result for this user".
- Folgeabfragen stellen: Copilot merkt sich den Konversationskontext — baue auf vorherige Antworten auf: „Zeige nun die Risikodetails für den ersten Benutzer aus dieser Liste". Ask follow-up questions: Copilot remembers conversation context — build on previous responses: "Now show risk details for the first user from that list".
- Promptbooks nutzen: Erstelle wiederverwendbare Promptbook-Sequenzen für Routineuntersuchungen wie „Tägliches Risk Review" oder „Neuer kompromittierter Benutzer". Use Promptbooks: Create reusable Promptbook sequences for routine investigations like "Daily Risk Review" or "New Compromised User".
Untersuchungs-Workflows mit Security Copilot Investigation Workflows with Security Copilot
Empfohlener Workflow für die Untersuchung eines potenziell kompromittierten Benutzers: Recommended workflow for investigating a potentially compromised user:
| SchrittStep | Copilot-Prompt (DE/EN)Copilot Prompt (DE/EN) | Erwartetes ErgebnisExpected Result |
|---|---|---|
| 11 | „Zeige das vollständige Risikoprofil für [UPN]""Show the complete risk profile for [UPN]" | Risikoniveau, Erkennungstypen, TimelineRisk level, detection types, timeline |
| 22 | „Zeige die letzten 10 Anmeldungen dieses Benutzers, inkl. Standort, Gerät und CA-Ergebnis""Show the last 10 sign-ins for this user, including location, device, and CA result" | Sign-in-History mit CA-AuswertungSign-in history with CA evaluation |
| 33 | „Prüfe, ob dieses Gerät konform ist und keine Defender-for-Identity-Alarme hat""Check if this device is compliant and has no Defender for Identity alerts" | Gerätestatus, DfI-AlarmeDevice status, DfI alerts |
| 44 | „Welche privilegierten Rollen hat dieser Benutzer? Gibt es PIM-Aktivierungen in den letzten 24 Stunden?""What privileged roles does this user have? Are there PIM activations in the last 24 hours?" | Rollen-Expositur, PIM-HistoryRole exposure, PIM history |
| 55 | „Auf Basis aller bisherigen Erkenntnisse: Ist dieser Benutzer kompromittiert? Nenne empfohlene Gegenmaßnahmen.""Based on all findings so far: Is this user compromised? State recommended countermeasures." | Zusammenfassung und HandlungsempfehlungSummary and recommended actions |
Security Copilot kann falsch-positive Risikobewertungen erzeugen oder Kontext aus dem falschen Zeitfenster heranziehen. Vor jeder administrativen Aktion (Benutzersperre, Session-Revoke, Risk-Bestätigung als kompromittiert) sollten die rohen Datenpunkte aus Identity Protection, Sign-in Logs und Audit Logs manuell verifiziert werden. Copilot ist ein Analyse-Assistent, kein autonomer Entscheidungsträger. Security Copilot can produce false-positive risk assessments or pull context from the wrong time window. Before any administrative action (user block, session revoke, risk confirmation as compromised), the raw data points from Identity Protection, sign-in logs, and audit logs should be manually verified. Copilot is an analysis assistant, not an autonomous decision-maker.
Automatisierung mit Security Copilot + Logic Apps Automation with Security Copilot + Logic Apps
Security Copilot kann in Logic Apps integriert werden, um automatische Untersuchungen bei Identity-Protection-Alarmen auszulösen. Ein Sentinel-Alert (z. B. „Hochrisikobenutzer erkannt") triggert einen Logic App Playbook, der automatisch einen Copilot-Prompt ausführt und das Ergebnis an Teams oder ServiceNow sendet. Security Copilot can be integrated with Logic Apps to trigger automatic investigations on Identity Protection alerts. A Sentinel alert (e.g., "High-risk user detected") triggers a Logic App Playbook that automatically runs a Copilot prompt and sends the result to Teams or ServiceNow.
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"triggers": {
"When_Sentinel_alert_fires": {
"type": "ApiConnection",
"inputs": {
"host": { "connection": { "name": "@parameters('$connections')['azuresentinel']['connectionId']" } },
"method": "post",
"path": "/subscribe"
}
}
},
"actions": {
"Run_Security_Copilot_Prompt": {
"type": "Http",
"inputs": {
"method": "POST",
"uri": "https://api.securitycopilot.microsoft.com/geo/us/sessions/[sessionId]/prompt",
"headers": { "Authorization": "Bearer @{variables('copilotToken')}" },
"body": {
"prompt": "Investigate the risky user @{triggerBody()?['entities']?[0]?['properties']?['userPrincipalName']}. Summarize the risk level, last sign-ins, and recommend actions."
}
}
},
"Post_to_Teams": {
"type": "ApiConnection",
"inputs": {
"host": { "connection": { "name": "@parameters('$connections')['teams']['connectionId']" } },
"method": "post",
"path": "/v3/beta/teams/@{encodeURIComponent('SOC-Team-ID')}/channels/@{encodeURIComponent('Alerts-Channel-ID')}/messages",
"body": {
"body": { "content": "@{body('Run_Security_Copilot_Prompt')?['output']}" }
}
}
}
}
}
}Datenschutz und Datenresidenz Privacy and Data Residency
Security Copilot verarbeitet Prompts und Antworten in der konfigurierten Azure-Region (EU: Westeuropa / Nordeuropa). Eingabedaten (Prompts) und Ausgabedaten werden für 30 Tage gespeichert (konfigurierbar). Die Daten werden nicht für das Training des zugrundeliegenden Modells verwendet. Für hochsensible Untersuchungen (z. B. HR-bezogene Fälle) empfehlen sich separate Sitzungen und das sofortige Löschen des Konversationsverlaufs. Security Copilot processes prompts and responses in the configured Azure region (EU: West Europe / North Europe). Input data (prompts) and output data are stored for 30 days (configurable). The data is not used for training the underlying model. For highly sensitive investigations (e.g., HR-related cases), separate sessions are recommended with immediate deletion of conversation history.
PowerShell/Graph API Referenz PowerShell / Graph API Reference
| AufgabeTask | Graph API / PowerShellGraph API / PowerShell | Erforderlicher ScopeRequired Scope |
|---|---|---|
| Riskante Benutzer auflistenList risky users | GET /identityProtection/riskyUsersGET /identityProtection/riskyUsers | IdentityRiskyUser.Read.AllIdentityRiskyUser.Read.All |
| Risikoerkennungen abrufenGet risk detections | GET /identityProtection/riskDetectionsGET /identityProtection/riskDetections | IdentityRiskEvent.Read.AllIdentityRiskEvent.Read.All |
| Benutzerrisiko zurücksetzenDismiss user risk | POST /identityProtection/riskyUsers/dismissPOST /identityProtection/riskyUsers/dismiss | IdentityRiskyUser.ReadWrite.AllIdentityRiskyUser.ReadWrite.All |
| Sign-in Logs lesenRead sign-in logs | GET /auditLogs/signInsGET /auditLogs/signIns | AuditLog.Read.AllAuditLog.Read.All |
| Audit Logs lesenRead audit logs | GET /auditLogs/directoryAuditsGET /auditLogs/directoryAudits | AuditLog.Read.AllAuditLog.Read.All |
| CA-Policies lesenRead CA policies | GET /identity/conditionalAccess/policiesGET /identity/conditionalAccess/policies | Policy.Read.AllPolicy.Read.All |
| Alle RollenzuweisungenAll role assignments | GET /roleManagement/directory/roleAssignmentsGET /roleManagement/directory/roleAssignments | RoleManagement.Read.DirectoryRoleManagement.Read.Directory |
| PIM-AktivierungenPIM activations | GET /roleManagement/directory/roleAssignmentScheduleInstancesGET /roleManagement/directory/roleAssignmentScheduleInstances | RoleManagement.Read.DirectoryRoleManagement.Read.Directory |
| Access ReviewsAccess Reviews | GET /identityGovernance/accessReviews/definitionsGET /identityGovernance/accessReviews/definitions | AccessReview.Read.AllAccessReview.Read.All |
| Entitlement ManagementEntitlement Management | GET /identityGovernance/entitlementManagement/accessPackagesGET /identityGovernance/entitlementManagement/accessPackages | EntitlementManagement.Read.AllEntitlementManagement.Read.All |
| Lifecycle WorkflowsLifecycle Workflows | GET /identityGovernance/lifecycleWorkflows/workflowsGET /identityGovernance/lifecycleWorkflows/workflows | LifecycleWorkflows.Read.AllLifecycleWorkflows.Read.All |
# Vollständiges Security Copilot + Entra Diagnose-Skript
# Complete Security Copilot + Entra Diagnostics Script
#Requires -Modules Microsoft.Graph.Authentication, Microsoft.Graph.Identity.SignIns
param(
[Parameter(Mandatory=$false)]
[string]$UserUPN,
[Parameter(Mandatory=$false)]
[int]$DaysBack = 7
)
Connect-MgGraph -Scopes @(
"AuditLog.Read.All",
"IdentityRiskyUser.ReadWrite.All",
"IdentityRiskEvent.Read.All",
"Directory.Read.All",
"Policy.Read.All"
) -ErrorAction Stop
Write-Host "=== SECURITY COPILOT + ENTRA DIAGNOSTICS ===" -ForegroundColor Cyan
if ($UserUPN) {
Write-Host "`n[BENUTZER / USER] $UserUPN" -ForegroundColor Yellow
# Riskoprofil
$riskUser = Get-MgRiskyUser -Filter "userPrincipalName eq '$UserUPN'"
if ($riskUser) {
Write-Host " Risikoniveau / Risk Level: $($riskUser.RiskLevel)" -ForegroundColor $(if($riskUser.RiskLevel -eq 'high'){'Red'} else {'Yellow'})
Write-Host " Risikostatus / Risk State: $($riskUser.RiskState)"
Write-Host " Letzte Risikoaktualisierung / Last Updated: $($riskUser.RiskLastUpdatedDateTime)"
} else {
Write-Host " Kein Risiko erkannt / No risk detected." -ForegroundColor Green
}
# Letzte Anmeldungen
Write-Host "`n Letzte Anmeldungen / Recent Sign-ins:" -ForegroundColor Yellow
Get-MgAuditLogSignIn -Filter "userPrincipalName eq '$UserUPN'" -Top 5 | `
Select-Object CreatedDateTime, AppDisplayName, ResultType, IpAddress, Location | `
Format-Table -AutoSize
}
# Alle Hochrisikobenutzer
Write-Host "`n[ALLE HOCHRISIKO-BENUTZER / ALL HIGH-RISK USERS]" -ForegroundColor Yellow
Get-MgRiskyUser -Filter "riskLevel eq 'high' and riskState eq 'atRisk'" | `
Select-Object UserDisplayName, UserPrincipalName, RiskLevel, RiskLastUpdatedDateTime | `
Format-Table -AutoSize
# CA-Policies ohne MFA-Enforcement für alle Benutzer
Write-Host "`n[CA POLICIES OHNE MFA / CA POLICIES WITHOUT MFA]" -ForegroundColor Yellow
$policies = Get-MgIdentityConditionalAccessPolicy -All
$policies | Where-Object {
$_.GrantControls.BuiltInControls -notcontains "mfa" -and
$_.State -eq "enabled"
} | Select-Object DisplayName, State | Format-Table -AutoSize