Vi har utviklet en veiledning for våre Binero Cloud-kunder for å beskytte deres sikkerhetskopier med sikker molnlagring. Denne veiledningen gjelder alle molnbrukere som ønsker å sikre at deres sikkerhetskopier ikke kan slettes ved et uhell eller av uautoriserte personer. I veiledningen beskriver vi en løsning som bruker Binero Clouds object storage, som er API-kompatibel med AWS S3, for å skape et sikkert og låst backupmiljø.

Sammenlign din nåværende løsning med vår prosess – det kan finnes mer du kan gjøre for å beskytte dine sikkerhetskopier. Følg trinnene nedenfor for å se hvordan du kan implementere samme løsning og øke sikkerheten for dine data.

Bakgrunn

Våre kunder søkte en løsning for å lagre sine sikkerhetskopier sikkert. Kravet var at sikkerhetskopiene må beskyttes slik at de ikke kan slettes, verken ved et uhell eller av uautoriserte som får tilgang til systemet.

Sikker molnlagring med object storage i Binero Cloud

Som en del av vår ambisjon om alltid å sikre sikker molnlagring for våre kunder, tilbyr Binero Cloud object storage som er API-kompatibel med AWS S3. Dette gjør det mulig å låse objekter. Funksjonen krever at bucketen der filene lagres er konfigurert for dette.

Ved å følge trinnene nedenfor kunne vi sikre at dataene i molnet ble lagret sikkert – med ekstra sikkerhet i sikkerhetskopiene.

Eksempel

Her er et eksempel på hvordan slettede objekter fortsetter å eksistere uten å være synlige i grensesnittet og ikke kan slettes før en konfigurert tidsgrense har passert. Kommandoer som samhandler med Binero Cloud er markert for å returnere data i JSON-format ved hjelp av jq-verktøyet.

Forberedelser

Generere autentiseringsopplysninger

Autentiseringsopplysninger genereres i EC2-format for bruk med AWS-klienten og tilordnes miljøvariabler for interaksjon med object storage.

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

Hente ut API-adresse

API-adressen for object storage hentes fra Binero Clouds tjenestekatalog. Den siste delen av URL-en fjernes fordi den peker 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)

Eksportere miljøvariabler

Alle variabler gjøres tilgjengelige for AWS-klienten, som må være installert. Buckets navn lagres også i en variabel. Merk at AWS kun brukes som klient for å samhandle med S3 i Binero Cloud (AWS_ENDPOINT_URL - der alle data lagres).

$ export AWS_ENDPOINT_URL AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
$ export BACKUP_BUCKET=bup

Verifisere forberedelser

For fremtidig manuell interaksjon eller automasjon kan de tre AWS-spesifikke verdiene lagres på filsystemet. Sørg for at filene ikke har åpne rettigheter. Filsystemkonfigurasjon ignoreres hvis det aktive miljøet er riktig konfigurert.

  1. Informasjon i API-et

    $ openstack ec2 credentials show $AWS_ACCESS_KEY_ID -c access -c secret
    +--------+----------------------------------+
    | Field | Value |
    +--------+----------------------------------+
    | access | d7855ef4cce44ec692c966e6cc10262d |
    | secret | fd3004c7e25240b2b07a931b76b757e5 |
    +--------+----------------------------------+
  2. Informasjon 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. Informasjon i klienten

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

Opprett bucket

En bucket opprettes som vanlig, med en lagringspolicy og LocationConstraint. Vi velger europe-se-1 i vårt eksempel for å gjøre det mulig med replikasjon hvis en policy som støtter dette er valgt.

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

Konfigurer låsemekanisme

Lagringsmodusen er konfigurert til en av to varianter: COMPLIANCE eller GOVERNANCE. COMPLIANCE gir høyeste sikkerhetsnivå, siden selv administratorer ikke kan slette objekter innenfor den angitte tidsgrensen, i dette tilfellet mindre enn 24 timer.

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

Verifiser bucket

Muligheten til å låse objekter baseres på versionshåndtering av objekter.

Eksistens

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

Versionshåndtering

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

Last opp fil

Filen tux.svg lagres i bucketen.

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

Verifiser eksistens av objekt

Sørg for at objektet returneres som det eneste objektet i lagringen.

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

Vi inspiserer deretter metadata som lagres av 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
}

Slett objekt

Når objektet slettes opprettes en DeleteMarker. Objektet ser ut til å være slettet, men er egentlig skjult. Merk VersionId som refererer til backuppen.

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

List objektene i bucketen, enten som nedenfor eller med annet grensesnitt, og objektet er ikke synlig – objektet tux.svg ser ut til å ha blitt slettet. Ingenting returneres – ikke engang av API-et.

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

Backupen er intakt

Hvis vi derimot lister versjonene av objektene kan vi se at objektet fortsatt finnes. Det som skjedde da objektet ble slettet var at en DeleteMarker ble opprettet.

$ 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
}

Gjenopprett slettede objekter

Det smarte med en DeleteMarker er at dersom den slettes, gjenopprettes 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 gjerningsperson – selv med kunnskap om versionshåndtering – skulle forsøke å slette backuppen, ville forsøket mislykkes. Når tidsgrensen først har passert kan versjonen slettes – men aldri før!

$ aws s3api delete-object --bucket $BACKUP_BUCKET 
--key tux.svg
--version-id "\\-IrCCqAYQt5ySttlBnI6VEw2jpw6f2\\." En feil oppstod (AccessDenied) ved kall til
DeleteObject-operasjonen: forbudt av object lock

Konklusjon: sikker molnlagring av sikkerhetskopier

Denne eksemplet viser hvordan du kan lagre dine sikkerhetskopier sikkert i Binero Clouds object storage og sikre at de forblir intakte selv om uautoriserte får tilgang til dem. Sikker molnlagring – i verdensklasse!