Skip to content

Commit

Permalink
Released v4.1.0
Browse files Browse the repository at this point in the history
## 4.1.0 - 2020-11-18

* Changed `Bitlocker - Compliance by Collection` layout
* Changed 12 hour to 24 hours in all reports
* Added `Pending Policy Status` to `Bitlocker - Compliance by Collection`
* Added `Bitlocker Policy` to `Bitlocker - Compliance by Collection`
* Fixed `Bitlocker - Compliance by Collection` can now be run on any collection. Only devices that have the policy assigned will be displayed.
* Fixed `Compliant` now shows `Unknown` if NULL in `Bitlocker - Compliance by Collection`
* Fixed `Unknown` count on the `OS Drive Decrypted` gauge in `Bitlocker - Compliance by Collection`
* Fixed various summarization errors in `Bitlocker - Compliance by Collection`
  • Loading branch information
Ioan Popovici committed Nov 18, 2020
1 parent ca56917 commit 0e85c01
Show file tree
Hide file tree
Showing 13 changed files with 2,247 additions and 1,346 deletions.
44 changes: 44 additions & 0 deletions MEM.Zone-Dashboards/Development/Cache.srs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
=IIF(Parameters!Summarization.Value = True,
Switch(
Fields!Compliant.Value = 1, "Yes",
Fields!Compliant.Value = 2, "No",
True, "Unknown"
),
Switch(
Fields!Compliant.Value = 1, "Compliant",
Fields!Compliant.Value = 2,
IIF(Code.GetStates(Fields!ComplianceStates.Value, "BitlockerComplianceStates", False) = "N/A"
, "Noncompliant"
, Code.GetStates(Fields!ComplianceStates.Value, "BitlockerComplianceStates", False)
),
True, "Unknown"
)
)

=Switch(
Fields!Compliant.Value = 1 And Fields!ComplianceStatusDetails.Value = 0, "#55bfa4",
Fields!Compliant.Value = 1, "#F4BF65",
Fields!Compliant.Value = 2, "#D46456",
True, "#FFE279"
)

=IIF(Parameters!Summarization.Value = True,
IIF(Code.GetStates(Fields!ComplianceStates.Value, "BitlockerComplianceStates", True) = "N/A",
"Failed to apply policy. Check for corrupted local policy file.",
Code.GetStates(Fields!ComplianceStates.Value, "BitlockerComplianceStates", True)
),
Join(LookupSet(Fields!EncodedDeviceName.Value, Fields!EncodedDeviceName.Value, Fields!VolumeName.Value & " " & Code.GetStates(Fields!ComplianceStates.Value, "BitlockerComplianceStates", False) & " (Error: " &
SWITCH(
Fields!ComplianceStatusDetails.Value = 0, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_No_Error", User!Language),
Fields!ComplianceStatusDetails.Value = 1, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_An_unknown_error_has_occurred", User!Language),
Fields!ComplianceStatusDetails.Value = 5, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_User_postponed_encryption", User!Language),
Fields!ComplianceStatusDetails.Value = 6, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_System_Partition_not_available_or_large_enough", User!Language),
Fields!ComplianceStatusDetails.Value = 7, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_Unable_to_find_compatible_TPM", User!Language),
Fields!ComplianceStatusDetails.Value = 8, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_TPM_visible_but_not_initialized", User!Language),
Fields!ComplianceStatusDetails.Value = 9, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_Policy_conflict", User!Language),
Fields!ComplianceStatusDetails.Value = 10, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_Waiting_for_TPM_auto_provisioning", User!Language),
Fields!ComplianceStatusDetails.Value = 11, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_Volume_is_locked", User!Language),
Fields!ComplianceStatusDetails.Value = 50, SrsResources.Localization.GetString("Bitlocker_Enterprise_Compliance_Details_Policy_Is_Not_Enforced", User!Language),
True , "N/A"
) & ", NonComplianceReason: " & Code.GetStates(Fields!ReasonsForNonCompliance.Value, "BitlockerNonComplianceReasons", False) & ")", "ComplianceDetails"), " | ")
)
33 changes: 16 additions & 17 deletions MEM.Zone-Dashboards/Private/GetStates.vb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Function GetStates (ByVal intBitMask As Integer, astrCategory As String, blnDeta
'.PARAMETER intBitMask
' Specifies the bitmask to apply.
'.PARAMETER astrCategory
' Specifies the state category to resolve. Available values: (BitlockerComplianceStates, BitlockerHealthStates, UpdateHealthStates, UpdateScanStates)
' Specifies the state category to resolve. Available values: (BitlockerNonComplianceReasons, BitlockerComplianceStates, UpdateHealthStates, UpdateScanStates)
'.PARAMETER blnDetailed
' Specifies if to return detailed information.
'.EXAMPLE
Expand All @@ -24,7 +24,7 @@ Function GetStates (ByVal intBitMask As Integer, astrCategory As String, blnDeta
'.LINK
' https://MEM.Zone/Dashboards-ISSUES
'#>
Dim astrBitlockerComplianceStates() As String = {
Dim astrBitlockerNonComplianceReasons() As String = {
"N/A",
"Cypher strength not AES 256",
"Volume not encrypted",
Expand All @@ -44,8 +44,8 @@ Function GetStates (ByVal intBitMask As Integer, astrCategory As String, blnDeta
"Minimum cypher strength XTS-AES-128 bit required",
"Minimum cypher strength XTS-AES-256 bit required"
}
Dim astrBitlockerComplianceStatesDetailed() As String = {
"Healthy",
Dim astrBitlockerNonComplianceReasonsDetailed() As String = {
"N/A",
"Cipher strength not AES 256",
"MBAM Policy requires this volume to be encrypted but it is not",
"MBAM Policy requires this volume to NOT be encrypted, but it is",
Expand All @@ -65,13 +65,13 @@ Function GetStates (ByVal intBitMask As Integer, astrCategory As String, blnDeta
"Policy requires minimum cypher strength is XTS-AES-256 bit, actual cypher strength is weaker than that"
}

Dim astrBitlockerHealthStates() As String = {
"Healthy", "Unprotected", "Partially Protected", "Exemption", "OS Drive Noncompliant", "Data Drive Noncompliant",
"Encryption in Progress", "Decryption in Progress", "Encryption Paused", "Decryption Paused", "Pending Key Upload", "Pending Key Rotation"
Dim astrBitlockerComplianceStates() As String = {
"N/A", "Unprotected", "Partially Protected", "Exemption", "OS Drive Noncompliant", "Data Drive Noncompliant",
"Encryption in Progress", "Decryption in Progress", "Encryption Paused", "Decryption Paused", "Pending Key Upload", "Pending Key Rotation", "Pending Policy Evaluation"
}
Dim astrBitlockerHealthStatesDetailed() As String = {
"Healthy", "Unprotected", "Not all Drives Protected", "Bitlocker Exemption", "OS Drive is Noncompliant", "Data Drive is Noncompliant",
"Encryption is in Progress", "Decryption is in Progress", "Encryption Paused", "Decryption Paused", "Pending Key Upload", "Pending Key Rotation"
Dim astrBitlockerComplianceStatesDetailed() As String = {
"N/A", "Unprotected", "Not all Drives Protected", "Bitlocker Exemption", "OS Drive is Noncompliant", "Data Drive is Noncompliant",
"Encryption is in Progress", "Decryption is in Progress", "Encryption Paused", "Decryption Paused", "Pending Key Upload", "Pending Key Rotation", "Pending Policy Evaluation"
}

Dim astrUpdateHealthStates() As String = {
Expand Down Expand Up @@ -100,21 +100,21 @@ Function GetStates (ByVal intBitMask As Integer, astrCategory As String, blnDeta

Try
Select Case astrCategory
Case "BitlockerNonComplianceReasons"
astrStates = astrBitlockerNonComplianceReasons
Case "BitlockerComplianceStates"
astrStates = astrBitlockerComplianceStates
Case "BitlockerHealthStates"
astrStates = astrBitlockerHealthStates
Case "UpdateHealthStates"
astrStates = astrUpdateHealthStates
Case "UpdateScanStates"
astrStates = astrUpdateScanStates
End Select
If blnDetailed Then
Select Case astrCategory
Case "BitlockerNonComplianceReasons"
astrStates = astrBitlockerNonComplianceReasonsDetailed
Case "BitlockerComplianceStates"
astrStates = astrBitlockerComplianceStatesDetailed
Case "BitlockerHealthStates"
astrStates = astrBitlockerHealthStatesDetailed
Case "UpdateHealthStates"
astrStates = astrUpdateHealthStatesDetailed
Case "UpdateScanStates"
Expand All @@ -132,12 +132,11 @@ Function GetStates (ByVal intBitMask As Integer, astrCategory As String, blnDeta
intStep = 2 ^ iaStates
Next
Else
If astrCategory = "BitlockerComplianceStates"
If InStr(astrCategory, "Bitlocker" ) <> 0
strResolvedStates = "N/A"
Else
strResolvedStates = "Healthy"
strResolvedStates = "Compliant"
End If

End If
Catch
strResolvedStates = "Could not resolve states."
Expand Down
Loading

0 comments on commit 0e85c01

Please sign in to comment.