Skip to content

Commit 35f2e10

Browse files
authored
Merge pull request #462 from KelvinTegelaar/dev
[pull] dev from KelvinTegelaar:dev
2 parents 244907d + e912e55 commit 35f2e10

File tree

3 files changed

+68
-16
lines changed

3 files changed

+68
-16
lines changed

Modules/CIPPCore/Public/Alerts/Get-CIPPAlertNewRiskyUsers.ps1

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function Get-CIPPAlertNewRiskyUsers {
44
Entrypoint
55
#>
66
[CmdletBinding()]
7-
Param (
7+
param (
88
[Parameter(Mandatory = $false)]
99
[Alias('input')]
1010
$TenantFilter
@@ -13,17 +13,17 @@ function Get-CIPPAlertNewRiskyUsers {
1313
try {
1414
# Check if tenant has P2 capabilities
1515
$Capabilities = Get-CIPPTenantCapabilities -TenantFilter $TenantFilter
16-
if (-not $Capabilities.AADPremiumService) {
16+
if (-not ($Capabilities.AAD_PREMIUM_P2 -eq $true)) {
1717
Write-AlertMessage -tenant $($TenantFilter) -message 'Tenant does not have Azure AD Premium P2 licensing required for risky users detection'
1818
return
1919
}
2020

2121
$Filter = "PartitionKey eq 'RiskyUsersDelta' and RowKey eq '{0}'" -f $TenantFilter
2222
$RiskyUsersDelta = (Get-CIPPAzDataTableEntity @Deltatable -Filter $Filter).delta | ConvertFrom-Json -ErrorAction SilentlyContinue
23-
23+
2424
# Get current risky users with more detailed information
2525
$NewDelta = (New-GraphGetRequest -uri 'https://graph.microsoft.com/v1.0/identityProtection/riskyUsers' -tenantid $TenantFilter) | Select-Object userPrincipalName, riskLevel, riskState, riskDetail, riskLastUpdatedDateTime, isProcessing, history
26-
26+
2727
$NewDeltatoSave = $NewDelta | ConvertTo-Json -Depth 10 -Compress -ErrorAction SilentlyContinue | Out-String
2828
$DeltaEntity = @{
2929
PartitionKey = 'RiskyUsersDelta'
@@ -33,25 +33,24 @@ function Get-CIPPAlertNewRiskyUsers {
3333
Add-CIPPAzDataTableEntity @DeltaTable -Entity $DeltaEntity -Force
3434

3535
if ($RiskyUsersDelta) {
36-
$AlertData = $NewDelta | Where-Object {
37-
$_.userPrincipalName -notin $RiskyUsersDelta.userPrincipalName
36+
$AlertData = $NewDelta | Where-Object {
37+
$_.userPrincipalName -notin $RiskyUsersDelta.userPrincipalName
3838
} | ForEach-Object {
3939
$riskHistory = if ($_.history) {
4040
$latestHistory = $_.history | Sort-Object -Property riskLastUpdatedDateTime -Descending | Select-Object -First 1
4141
"Previous Risk Level: $($latestHistory.riskLevel), Last Updated: $($latestHistory.riskLastUpdatedDateTime)"
42-
}
43-
else {
42+
} else {
4443
'No previous risk history'
4544
}
46-
45+
4746
# Map risk level to severity
4847
$severity = switch ($_.riskLevel) {
4948
'high' { 'Critical' }
5049
'medium' { 'Warning' }
5150
'low' { 'Info' }
5251
default { 'Info' }
5352
}
54-
53+
5554
@{
5655
Message = "New risky user detected: $($_.userPrincipalName)"
5756
Details = @{
@@ -65,13 +64,12 @@ function Get-CIPPAlertNewRiskyUsers {
6564
}
6665
}
6766
}
68-
67+
6968
if ($AlertData) {
7069
Write-AlertTrace -cmdletName $MyInvocation.MyCommand -tenantFilter $TenantFilter -data $AlertData
7170
}
7271
}
73-
}
74-
catch {
72+
} catch {
7573
Write-AlertMessage -tenant $($TenantFilter) -message "Could not get risky users for $($TenantFilter): $(Get-NormalizedError -message $_.Exception.message)"
7674
}
7775
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using namespace System.Net
2+
3+
function Invoke-ListCheckExtAlerts {
4+
<#
5+
.FUNCTIONALITY
6+
Entrypoint
7+
.ROLE
8+
CIPP.Core.Read
9+
#>
10+
[CmdletBinding()]
11+
param($Request, $TriggerMetadata)
12+
13+
$APIName = $Request.Params.CIPPEndpoint
14+
$Headers = $Request.Headers
15+
16+
$TenantFilter = $Request.Query.tenantFilter
17+
$Table = Get-CIPPTable -tablename CheckExtensionAlerts
18+
19+
if ($TenantFilter -and $TenantFilter -ne 'AllTenants') {
20+
$Filter = "PartitionKey eq '$TenantFilter'"
21+
} else {
22+
$Filter = $null
23+
}
24+
25+
try {
26+
$Alerts = Get-CIPPAzDataTableEntity @Table -Filter $Filter
27+
} catch {
28+
Write-LogMessage -headers $Headers -API $APIName -message "Failed to retrieve check extension alerts: $($_.Exception.Message)" -Sev 'Error'
29+
$Alerts = @()
30+
}
31+
32+
# Associate values to output bindings by calling 'Push-OutputBinding'.
33+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
34+
StatusCode = [HttpStatusCode]::OK
35+
Body = @($Alerts | Sort-Object -Property Timestamp -Descending)
36+
})
37+
}

Modules/CIPPCore/Public/Entrypoints/Invoke-PublicPhishingCheck.ps1

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,27 @@ function Invoke-PublicPhishingCheck {
1717
if ($Request.body.Cloned -and $Tenant.customerId -eq $Request.body.TenantId) {
1818
Write-AlertMessage -message $Request.body.AlertMessage -sev 'Alert' -tenant $Request.body.TenantId
1919
} elseif ($Request.Body.source -and $Tenant) {
20+
$table = Get-CIPPTable -tablename CheckExtensionAlerts
2021
$Message = "Alert received from $($Request.Body.source) for $($Request.body.TenantId)"
21-
Write-Information ($Request.Body | ConvertTo-Json)
22-
Write-AlertTrace -cmdletName 'CheckExtentionAlert' -tenantFilter $Tenant -data $Request.body
23-
Write-AlertMessage -message $Message -sev 'Alert' -tenant $Tenant.customerId -LogData $Request.body
22+
$ID = (New-Guid).GUID
23+
$TableBody = @{
24+
RowKey = "$ID"
25+
PartitionKey = [string]$Tenant.defaultDomainName
26+
tenantFilter = [string]$Tenant.defaultDomainName
27+
message = [string]$Message
28+
type = [string]$request.body.type
29+
url = [string]$request.body.url
30+
reason = [string]$request.body.reason
31+
score = [string]$request.body.score
32+
threshold = [string]$request.body.threshold
33+
potentialUserName = [string]$request.body.userEmail
34+
potentialUserDisplayName = [string]$request.body.userDisplayName
35+
reportedByIP = [string]$Request.headers.'x-forwarded-for'
36+
rawBody = "$($Request.body | ConvertTo-Json)"
37+
}
38+
$null = Add-CIPPAzDataTableEntity @table -Entity $TableBody -Force
39+
Write-AlertTrace -cmdletName 'CheckExtentionAlert' -tenantFilter $Tenant.defaultDomainName -data $TableBody
40+
#Write-AlertMessage -message $Message -sev 'Alert' -tenant $Tenant.customerId -LogData $Request.body
2441
}
2542

2643
# Associate values to output bindings by calling 'Push-OutputBinding'.

0 commit comments

Comments
 (0)