Vi har udviklet en guide til vores Binero Cloud-kunder, så de kan 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 vejledningen beskriver vi en løsning, der bruger Binero Clouds objektlagring, 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 er muligvis noget mere, du kan gøre for at beskytte dine sikkerhedskopier. Følg trinene nedenfor for at se, hvordan du kan implementere den samme løsning og øge sikkerheden for dine data.
Baggrund
Vores kunder søgte efter en løsning til sikker opbevaring af deres sikkerhedskopier. Kravet var, at sikkerhedskopierne skulle beskyttes, så de ikke kunne slettes, hverken ved et uheld eller af uautoriserede personer, der fik adgang til systemet.
Sikker cloud-lagring med objektlagring i Binero Cloud
Som led i vores ambition om altid at sikre sikker cloud-lagring for vores kunder tilbyder Binero Cloud objektlagring, der er API-kompatibel med AWS S3. Dette gør det muligt at låse objekter. Funktionen kræver, at den bucket, hvor filerne er gemt, er konfigureret til dette.
Ved at følge nedenstående trin kunne vi sikre, at dataene i skyen blev gemt sikkert – med ekstra sikkerhed i sikkerhedskopierne.
Eksempel
Her er et eksempel på, hvordan slettede objekter fortsætter med at eksistere uden at være synlige i grænsefladen og ikke kan slettes, før en konfigureret tidsfrist er udløbet. 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 godkendelsesoplysninger
Autentificeringsoplysninger genereres i EC2-format til brug med AWS-klienten og tildeles miljøvariabler til interaktion med objektlageret.
$ read -r AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY \
<<<$(jq -r '"\(.access) \(.secret)"' \
<(openstack ec2 credentials create -f json))
Læs API-adresse op
API-adressen til objektlagringen hentes fra Binero Clouds servicekatalog. Den sidste del af URL'en fjernes, da den henviser til 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. Navnet på bucket gemmes også i en variabel. Bemærk, at AWS kun bruges som klient til at interagere med S3 i Binero Cloud (AWS_ENDPOINT_URL – hvor alle data gemmes).
$ export AWS_ENDPOINT_URL AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
$ export BACKUP_BUCKET=bup
Bekræft forberedelserne
Med henblik på fremtidig manuel interaktion eller automatisering kan de tre AWS-specifikke værdier gemmes i filsystemet. Sørg for, at filrettighederne ikke er åbne. Filsystemkonfigurationen ignoreres, hvis det aktive miljø er konfigureret korrekt.
- Uppgifter i API:et
$ openstack ec2 credentials show $AWS_ACCESS_KEY_ID -c access -c secret
+--------+----------------------------------+
| Field | Value |
+--------+----------------------------------+
| access | d7855ef4cce44ec692c966e6cc10262d |
| secret | fd3004c7e25240b2b07a931b76b757e5 |
+--------+----------------------------------+ - Oplysninger 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 - Oplysninger 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
En bucket oprettes som normalt med en opbevaringspolitik og LocationConstraint. I vores eksempel vælger vi europe-se-1 for at aktivere replikering, hvis der er valgt en politik, der understøtter dette.
$ aws s3api create-bucket \
--bucket $BACKUP_BUCKET \
--create-bucket-configuration LocationConstraint=europe-se-1 \
--object-lock-enabled-for-bucket
Konfigurer låsemekanisme
Lagringsfunktionen kan konfigureres 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 spand
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"
}
Versionshantering
$ jq .Status <(aws s3api get-bucket-versioning --bucket $BACKUP_BUCKET)
"Enabled"
Upload fil
Filen tux.svg er gemt i bucket.
$ aws s3 cp tux.svg s3://$BACKUP_BUCKET
upload: ./tux.svg to s3://bup/tux.svg
Bekræft eksistensen af objektet
Sørg for, at objektet returneres som det eneste objekt i butikken.
$ aws s3 ls $BACKUP_BUCKET
2024-04-10 12:31:11 49983 tux.svg
Derefter inspicerer vi de metadata, der er gemt af API'en.
$ 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 sikkerhedskopien.
$ aws s3api delete-object --bucket $BACKUP_BUCKET --key tux.svg
{
"DeleteMarker": true,
"VersionId": "mc-Yai46SHaLrf4xqeJGgT1.3ry6bUZ"
}
Vis objekterne i spanden, enten som nedenfor eller ved hjælp af en anden grænseflade, og objektet er ikke længere der – objektet tux.svg ser ud til at være blevet slettet. Der returneres intet – ikke engang af API'en.
$ aws s3 ls $BACKUP_BUCKET
$ aws s3api list-objects --bucket $BACKUP_BUCKET
{
"RequestCharged": null
}
Sikkerhedskopien er intakt
Men hvis versionerne af objekterne er angivet, kan vi se, at objektet stadig eksisterer. Da objektet blev slettet, blev der oprettet en DeleteMarker.
$ 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, gendannes filen!
$ 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 kendskab til versionsstyring – forsøgte at slette sikkerhedskopien, ville forsøget mislykkes. Når tidsfristen er udløbet, kan versionen slettes – men aldrig før!
$ aws s3api delete-object --bucket $BACKUP_BUCKET \ --key tux.svg \ --version-id "\-IrCCqAYQt5ySttlBnI6VEw2jpw6f2\." An error occurred (AccessDenied) when calling the
DeleteObject operation: forbidden by object lock
Konklusion: sikker cloud-lagring af sikkerhedskopier
Dette eksempel viser, hvordan du sikkert kan gemme dine sikkerhedskopier i Binero Clouds objektlager og sikre, at de forbliver intakte, selvom uautoriserede personer får adgang til dem. Sikker cloud-lagring – i verdensklasse!