SHELL/8.1.1.ps1
|
$CheckId = "8.1.1" $Title = "Ensure external file sharing in Teams is enabled for only approved cloud storage services" $Level = "L2" $BenchmarkType = "Automated" try { $Config = Get-CsTeamsClientConfiguration -Identity Global -ErrorAction Stop $ProviderState = [ordered]@{ AllowDropbox = [bool]$Config.AllowDropbox AllowBox = [bool]$Config.AllowBox AllowGoogleDrive = [bool]$Config.AllowGoogleDrive AllowShareFile = [bool]$Config.AllowShareFile AllowEgnyte = [bool]$Config.AllowEgnyte } $EnabledProviders = @($ProviderState.GetEnumerator() | Where-Object { $_.Value } | ForEach-Object { $_.Key }) $ApprovedProviders = @() $ApprovedProvidersRaw = [string]$env:ROOT365_APPROVED_TEAMS_STORAGE if (-not [string]::IsNullOrWhiteSpace($ApprovedProvidersRaw)) { $ApprovedProviders = @($ApprovedProvidersRaw -split '[,; ]+' | ForEach-Object { $_.Trim() } | Where-Object { $_ }) } if ($EnabledProviders.Count -eq 0) { $Status = "PASS" $Pass = $true $ErrorMessage = $null } else { $NotApproved = @($EnabledProviders | Where-Object { $_ -notin $ApprovedProviders }) if ($NotApproved.Count -eq 0 -and $ApprovedProviders.Count -gt 0) { $Status = "PASS" $Pass = $true $ErrorMessage = $null } else { $Status = "FAIL" $Pass = $false if ($ApprovedProviders.Count -eq 0) { $ErrorMessage = "External providers are enabled but no approved allowlist is defined. Set ROOT365_APPROVED_TEAMS_STORAGE to approved provider keys." } else { $ErrorMessage = "Enabled providers are not fully covered by the approved allowlist: $($NotApproved -join ', ')." } } } [pscustomobject]@{ CheckId = $CheckId Title = $Title Level = $Level BenchmarkType = $BenchmarkType Status = $Status Pass = $Pass Evidence = [pscustomobject]@{ ProviderState = $ProviderState EnabledProviders = $EnabledProviders ApprovedProviders = $ApprovedProviders ApprovedProvidersSource = "Environment variable ROOT365_APPROVED_TEAMS_STORAGE" SourceDocument = "CIS_Microsoft_365_Foundations_Benchmark_v6.0.1" } Error = $ErrorMessage Timestamp = Get-Date } } catch { [pscustomobject]@{ CheckId = $CheckId Title = $Title Level = $Level BenchmarkType = $BenchmarkType Status = "ERROR" Pass = $null Evidence = [pscustomobject]@{ SourceDocument = "CIS_Microsoft_365_Foundations_Benchmark_v6.0.1" } Error = $_.Exception.Message Timestamp = Get-Date } } |