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


