Vi har udviklet en guide til vores Binero Cloud kunder til at beskytte deres backups med sikker cloud-lagring. Denne guide gælder for alle cloud-brugere, der ønsker at sikre, at deres backups ikke kan slettes ved et uheld eller af uautoriserede personer. I guiden beskriver vi en løsning, der bruger Binero Cloud's object storage, som er API-kompatibel med AWS S3, til at skabe et sikkert og låst backupmiljø.

Sammenlign din nuværende opsætning med vores proces – der kan være mere, du kan gøre for at beskytte dine backups. Følg nedenstående trin for at se, hvordan du kan implementere den samme løsning og øge sikkerheden af dine data.

Baggrund

Vores kunder søgte en løsning til at opbevare deres backups sikkert. Kravet var, at backuppen skulle være beskyttet, så de ikke kunne slettes, hverken ved et uheld eller af uautoriserede personer, der fik adgang til systemet.

Sikker cloud-lagring med object storage i Binero Cloud

Som en del af vores ambition om altid at sikre bæredygtigt cloud-lagring for vores kunder, tilbyder Binero Cloud object storage, som er API-kompatibel med AWS S3. Dette gør det muligt at låse objekter. Funktionen kræver, at det bucket, hvor filerne opbevares, er konfigureret til dette.

Ved at følge nedenstående trin kunne vi sikre, at dataene i clouden blev opbevaret sikkert – med ekstra sikkerhed i backups.

Eksempel

Her er et eksempel på, hvordan slettede objekter fortsætter med at eksistere uden at være synlige i interfacet, og ikke kan slettes, før en konfigureret tidsgrænse er overskredet. Kommandoer, der interagerer med Binero Cloud, er markeret til at returnere data i JSON-format ved hjælp af jq værktøjet.

Forberedelser

Generer autentificeringsoplysninger

Autentificeringsoplysninger genereres i EC2-format til brug med AWS-klienten og tildeles miljøvariabler til interaktion med object storage.

$ read -r AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY <<<$(jq -r '"\\(.access)  \\(.secret)"' <(openstack ec2 credentials create -f json))

Læs API-adressen ud

API-adressen for object storage hentes fra Binero Cloud's servicekatalog. Den sidste del af URL'en fjernes, da den peger på Swift API, som ikke er relevant.

$ AWS_ENDPOINT_URL=$(openstack catalog list -f json  | jq -r '.[] |select(.Type=="object-store") |.Endpoints[]  |select(.interface=="public").url'  | cut -d/ -f1-3)

Eksporter miljøvariabler

Alle variabler gøres tilgængelige for AWS-klienten, som skal være installeret. Bucket-navnet gemmes også i en variabel. Bemærk, at AWS kun bruges som klient til interaktion med S3 i Binero Cloud (AWS_ENDPOINT_URL - hvor alle data opbevares).

$ export AWS_ENDPOINT_URL AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
$ export BACKUP_BUCKET=bup

Bekræft forberedelser

Til fremtidig manuel interaktion eller automatisering kan de tre AWS-specifikke værdier gemmes på filsystemet. Sørg for, at filrettighederne ikke er åbne. Filsystemkonfiguration ignoreres, hvis det aktive miljø er konfigureret korrekt.

  1. Information i API'et

    $ openstack ec2 credentials show $AWS_ACCESS_KEY_ID -c access -c secret
    +--------+----------------------------------+
    | Field  | Value                            |
    +--------+----------------------------------+
    | access | d7855ef4cce44ec692c966e6cc10262d |
    | secret | fd3004c7e25240b2b07a931b76b757e5 |
    +--------+----------------------------------+
  2. Information i miljøet:

    $ env | grep AWS
    AWS_SECRET_ACCESS_KEY=
    AWS_ACCESS_KEY_ID=
    AWS_ENDPOINT_URL=https://object-eu-se-1a.binero.cloud
    
    $ env | grep BACKUP
    BACKUP_BUCKET=bup
    
  3. Information i klienten

    $ aws configure list
    Name  Value  Type  Location
    ----  -----  ----  --------
    profile  None   None  
    access_key ****************262d env secret_key ****************57e5 env region None None

Opret bucket

Et bucket oprettes som normalt med en storage policy og LocationConstraint. Vi vælger europe-se-1 i vores eksempel for at muliggøre replikering, hvis en politik, der understøtter det, er valgt.

$ aws s3api create-bucket  --bucket $BACKUP_BUCKET  --create-bucket-configuration LocationConstraint=europe-se-1  --object-lock-enabled-for-bucket

Konfigurer låsemekanisme

Opbevaringsmåden er konfigureret til en af to varianter: COMPLIANCE eller GOVERNANCE. COMPLIANCE giver det højeste sikkerhedsniveau, da selv administratorer ikke kan slette objekter inden for den fastsatte tidsgrænse, i dette tilfælde mindre end 24 timer.

$ aws s3api put-object-lock-configuration --bucket $BACKUP_BUCKET --object-lock-configuration '{"ObjectLockEnabled": "Enabled", "Rule": {"DefaultRetention": {"Mode": "COMPLIANCE", "Days": 1}}}'

Bekræft bucket

Muligheden for at låse objekter er baseret på versionsstyring af objekter.

Eksistens

$ aws s3api list-buckets | jq '.Buckets[] | select(.Name == env.BACKUP_BUCKET)'
{
"Name": "bup",
"CreationDate": "2024-04-10T10:28:18.146000+00:00"
}

Versionsstyring

$ jq .Status <(aws s3api get-bucket-versioning --bucket $BACKUP_BUCKET)
"Enabled"

Upload fil

Filen tux.svg gemmes i bucket.

$ aws s3 cp tux.svg s3://$BACKUP_BUCKET
upload: ./tux.svg to s3://bup/tux.svg

Bekræft eksistensen af objekt

Sørg for, at objektet returneres som det eneste objekt i lageret.

$ aws s3 ls $BACKUP_BUCKET
2024-04-10 12:31:11 49983 tux.svg

Vi inspicerer derefter metadata gemt af API'et.

$ aws s3api list-objects --bucket $BACKUP_BUCKET
{
 "Contents": [
  {
 "Key": "tux.svg",
 "LastModified": "2024-04-10T10:31:11.177000+00:00",
 "ETag": "\\"8a6487c7872a9b825c8f2d4533067c6d\\"",
 "Size": 49983,
 "StorageClass": "STANDARD",
 "Owner": {
 "DisplayName": "*******",
 "ID": ""
  }
  }
 ],
 "RequestCharged": null
}

Slet emner

Når objektet slettes, oprettes en DeleteMarker. Objektet ser ud til at være slettet, men er faktisk skjult. Bemærk VersionId, der henviser til backupen.

$ aws s3api delete-object --bucket $BACKUP_BUCKET --key tux.svg
{
 "DeleteMarker": true,
 "VersionId": "mc-Yai46SHaLrf4xqeJGgT1.3ry6bUZ"
}

List objekterne i bucket, enten som nedenfor eller ved hjælp af et andet interface, og objektet er ikke længere der – objektet tux.svg ser ud til at være slettet. Intet returneres – ikke engang af API'et.

$ aws s3 ls $BACKUP_BUCKET
$ aws s3api list-objects --bucket $BACKUP_BUCKET
{
 "RequestCharged": null
}

Backup er intakt

Hvis versionerne af objekterne listes, kan vi se, at objektet stadig eksisterer. Hvad der skete, da objektet blev slettet, var, at en DeleteMarker blev oprettet.

$ aws s3api list-object-versions --bucket $BACKUP_BUCKET
{
 "Versions": [
  {
 "ETag": "\\"8a6487c7872a9b825c8f2d4533067c6d\\"",
 "Size": 49983,
 "StorageClass": "STANDARD",
 "Key": "tux.svg",
 "VersionId": "-IrCCqAYQt5ySttlBnI6VEw2jpw6f2.",
 "IsLatest": false,
 "LastModified": "2024-04-10T10:31:11.177000+00:00",
 "Owner": {
 "DisplayName": "*******",
 "ID": ""
  }
  }
 ],
 "DeleteMarkers": [
  {
 "Owner": {
 "DisplayName": "*******",
 "ID": ""
  }
 "Key": "tux.svg",
 "VersionId": "mc-Yai46SHaLrf4xqeJGgT1.3ry6bUZ",
 "IsLatest": true,
 "LastModified": "2024-04-11T08:25:42.985000+00:00"
  }
 ],
 "RequestCharged": null
}

Gendan slettede emner

Det smarte ved en DeleteMarker er, at hvis den slettes, bliver filen gendannet!

$ aws s3api delete-object --bucket $BACKUP_BUCKET --key tux.svg  --version-id "mc-Yai46SHaLrf4xqeJGgT1.3ry6bUZ"
{
 "DeleteMarker": true,
 "VersionId": "mc-Yai46SHaLrf4xqeJGgT1.3ry6bUZ"
}
$ aws s3api list-objects --bucket $BACKUP_BUCKET
{
 "Contents": [
  {
 "Key": "tux.svg",
 "LastModified": "2024-04-10T10:31:11.177000+00:00",
 "ETag": "\\"8a6487c7872a9b825c8f2d4533067c6d\\"",
 "Size": 49983,
 "StorageClass": "STANDARD",
 "Owner": {
 "DisplayName": "*******",
 "ID": ""
  }
  }
 ],
 "RequestCharged": null
}

Hvis en gerningsmand – selv med viden om versionsstyring – skulle forsøge at slette backupen, vil forsøget mislykkes. Når tidsfristen er overskredet, kan versionen slettes – men aldrig før!

$ aws s3api delete-object --bucket $BACKUP_BUCKET  --key tux.svg  --version-id "\\-IrCCqAYQt5ySttlBnI6VEw2jpw6f2."

En fejl opstod (AccessDenied) under kald af  DeleteObject operation: forbudt af object lock

Konklusion: sikker cloud-lagring af backups

Dette eksempel viser, hvordan du sikkert kan opbevare dine backups i Binero Cloud's object storage og sikre, at de forbliver intakte, selv hvis uautoriserede personer får adgang til dem. Sikker cloud-lagring – i verdensklasse!