Hovedmenu
Devolutions-blog

Nyheder, opdateringer og indsigter fra Devolutions.

Trim to meet enhanced business devolutions blog

Brug TRIM til at opfylde skærpede krav til forretning, sikkerhed og compliance

Artiklen beskriver et enkelt, hurtigt og gennemprøvet program til procesforbedring, et TRIM-tjek, som gør det muligt for virksomheder at opfylde skærpede krav til forretning, sikkerhed og compliance. Vi har indført programmet med succes hos Devolutions og kan varmt anbefale det.

Hvad er TRIM?

TRIM er en kommando i ATA-grænsefladen. Hver gang du læser fra drevet eller ændrer data, skal SSD’en sikre, at ugyldige oplysninger slettes, og at der er plads til nye oplysninger. I bund og grund fortæller TRIM SSD’en, hvilke data der må slettes.

Hvorfor er det nødvendigt? Fordi SSD’er læser og skriver information på en måde, hvor data ikke faktisk slettes, når en bruger beder om det (selv om de tilsyneladende forsvinder fra dokumentet eller enheden). I stedet markeres den del af SSD’en, der indeholder de uønskede data, som ikke længere i brug. TRIM-kommandoen skal bekræfte, at dataene må fjernes. Når bekræftelsen er givet, klares den endelige sletning af aktiv garbage collection, næste gang computeren er inaktiv.

Verifikationsproces

Hos Devolutions har vi indført et strømlinet og logisk verifikationsforløb, som involverer vores IT-team og vores sikkerhedsteam:

  • Vores IT-team sletter diske og partitioner og geninstallerer derefter Windows. Diskene overdrages derefter til vores sikkerhedsteam.
  • Vores sikkerhedsteam følger op med en analyse af arbejdet og kontrollerer, at der ikke er data, som kan gendannes. Diskene returneres derefter til IT-teamet, så de kan nulstilles.

Forløbet holder antallet af opgaver og hvert teams arbejdsbyrde nede. Det er et godt eksempel på, hvordan sikkerhed kan optimere en proces, uden at det går ud over effektivitet og produktivitet.

Valideringsproces

For at sikre, at TRIM er aktivt, og at processen fungerer korrekt, har vi lavet et PowerShell-script, som udrulles via vores MDM. Scriptet opretter en tilbagevendende valideringsopgave for TRIM. Derefter tilgår vi de logge, som vores SIEM indsamler, til analyse.

!!Picture1.png

Resultatet af kommandoen kan læses sådan her:

Beskrivelse
NTFS DisableDeleteNotify = 0 Angiver, at SSD’er med NTFS allerede har TRIM slået til.
NTFS DisableDeleteNotify = 1 Hvis status viser værdien 1, er TRIM slået fra på SSD’er med NTFS.
NTFS DisableDeleteNotify is not currently set Status viser, at TRIM-understøttelse slås til automatisk, når en SSD med NTFS tilsluttes.
ReFS DisableDeleteNotify = 0 0 ved ReFS betyder, at TRIM-understøttelse er slået til for SSD’er med ReFS.
ReFS DisableDeleteNotify = 1 Værdien 1 ved ReFS betyder, at TRIM er slået fra for SSD’er med ReFS.
ReFS DisableDeleteNotify is not currently set Resultatet betyder, at TRIM-understøttelse selv slås til, når en SSD med ReFS tilsluttes.

PowerShell-script

Her er det PowerShell-script, vi har lavet, og som vi inviterer dig til at bruge i din virksomhed:

# Trim Validation

$scriptblock = {
    param (
        )

        function Write-Log {
            [CmdletBinding()]
            param (
                [Parameter(Mandatory)]
                [String]
                $Message,
                [Parameter(Mandatory)]
                [int32]
                $EventID,
                [Parameter(Mandatory)]
                [String]
                $Type
            )
            Write-EventLog -LogName "Windows PowerShell" -Source "TrimPS1" -EventId $EventID -Message $Message -EntryType $Type
        }
        function Get-TrimConfigurationntfs{
           $trimntfs = fsutil behavior query disabledeletenotify ntfs
           $trimntfsvalue = $trimntfs.substring(27,1)

           if ($trimntfsvalue -ne "0"){
            $message = "Trim NTFS is inactive"
            Write-Log -EventId 2 -Message $message -Type "Warning"
        }

        else{
            $message = "Trim NTFS is active"
            Write-Log -EventId 0 -Message $message -Type "Information"
        }

        }
        function Get-TrimConfigurationrefs{
            $trimrefs = fsutil behavior query disabledeletenotify refs
            $trimrefsvalue = $trimrefs.substring(27,1)
            if ($trimrefsvalue -ne "0"){
                $message = "Trim REFS is inactive"
                Write-Log -EventId 2 -Message $message -Type "Warning"
            }

            else{
                $message = "Trim REFS is active"
                Write-Log -EventId 0 -Message $message -Type "Information"
            }
         }

        Get-TrimConfigurationntfs
        Get-TrimConfigurationrefs

}

##### Section opérationnelle du script #####
function Write-Log {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [String]
        $Message,
        [Parameter(Mandatory)]
        [int32]
        $EventID,
        [Parameter(Mandatory)]
        [String]
        $Type
    )
    Write-EventLog -LogName "Windows PowerShell" -Source "TrimPS1" -EventId $EventID -Message $Message -EntryType $Type
}

$jobname = "Trim-Verification";
$accountId = "SYSTEM";
$task = Get-ScheduledJob -Name $jobname  -ErrorAction SilentlyContinue
New-EventLog -LogName 'Windows PowerShell' -Source 'TrimPS1' -ErrorAction Ignore
if ($null -ne $task){
    Unregister-ScheduledJob $task  -Confirm:$false;
}

try {
    $trigger = New-JobTrigger -Weekly -DaysOfWeek Monday, Tuesday, Wednesday, Thursday, Friday -At "11:00" -WeeksInterval 1 # Vérification du Lundi au Vendredi à 11h
    $options = New-ScheduledJobOption -ContinueIfGoingOnBattery -StartIfOnBattery -RequireNetwork -RunElevated;

    Register-ScheduledJob -Name $jobname -ScriptBlock $scriptblock -ScheduledJobOption $options -Trigger $trigger;

    $principal = New-ScheduledTaskPrincipal -UserID $accountId -LogonType ServiceAccount -RunLevel Highest;
    $psJobsPathInScheduler = "\Microsoft\Windows\PowerShell\ScheduledJobs";
    $someResult = Set-ScheduledTask -TaskPath $psJobsPathInScheduler -TaskName $jobname  -Principal $principal;

    $message = "Scheduled job ok"
    Write-Log -EventId 65000 -Message $message -type "Information"
}
catch {
    $message = "Unable to setup scheduled job. This is an error"

    Write-Log -EventId 65001 -Message $message -type "Warning"

    $task = Get-ScheduledJob -Name $jobname  -ErrorAction SilentlyContinue
    if ($null -ne $task){
        Unregister-ScheduledJob $task  -Confirm:$false;
    }
    exit 1
}

Hvis du bruger PowerShell-scriptet, er det disse EventID’er, du skal holde øje med:

  • EventID 0, hvis TRIM er aktiv
    • Type: information
    • Meddelelse: TRIM (NTFS/REFS) er aktiv
  • EventID 2, hvis TRIM er inaktiv
    • Type: advarsel
    • Meddelelse: TRIM (NTFS/REFS) er inaktiv

Afsluttende tanker

Efter vores erfaring er TRIM en effektiv og pålidelig løsning til at reducere antallet af trin, når hardware skal klargøres til videredistribution eller salg. Troværdige tredjeparter bakker også processen op. For eksempel:

  • I en YouTube-video har datagendannelsesfirmaet Data Rescue Labs sagt, at virksomheder, der hævder at sælge specialsoftware til at gendanne data fra en SSD, som har været igennem TRIM, „lyver“, og at den slags påstande er „til grin“.
  • R-studio Data Recovery, hvis software er velkendt og specialiseret i at gendanne data, har sagt: „Datagendannelse fra SSD-enheder, når TRIM-kommandoen er brugt, er ekstremt vanskelig og i de fleste tilfælde umulig.“

Selv om vi bruger og anbefaler TRIM, anbefaler vi alligevel, at du selv undersøger det, så du kan bekræfte, at processen passer til dine krav og mål.