Vi har utviklet en veiledning for våre Binero Cloud-kunder for å beskytte deres sikkerhetskopier med sikker cloud-lagring. Denne veiledningen gjelder for alle cloud-brukere som ønsker å sikre at sikkerhetskopiene deres ikke kan slettes ved et uhell eller av uautoriserte personer. I veiledningen beskriver vi en løsning som bruker Binero Clouds objektlagring, som er API-kompatibel med AWS S3, for å lage et sikkert og låst sikkerhetskopimiljø.
Sammenlign din nåværende oppsett med vår prosess – det kan være noe mer du kan gjøre for å beskytte sikkerhetskopiene dine. Følg trinnene nedenfor for å se hvordan du kan implementere den samme løsningen og øke sikkerheten til dataene dine.
Bakgrunn
Våre kunder lette etter en løsning for å lagre sikkerhetskopiene sine sikkert. Kravet var at sikkerhetskopiene måtte beskyttes slik at de ikke kunne slettes, verken ved et uhell eller av uautoriserte personer som fikk tilgang til systemet.
Sikker cloud-lagring med objektlagring i Binero Cloud
Som en del av vårt mål om alltid å sikre sikker cloud-lagring for våre kunder, tilbyr Binero Cloud objektlagring som er API-kompatibel med AWS S3. Dette gjør det mulig å låse objekter. Funksjonen krever at bøtten der filene lagres er konfigurert for dette.
Ved å følge trinnene nedenfor, kunne vi sikre at dataene i clouden 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 merket for å returnere data i JSON-format ved bruk av jq-verktøyet.
Forberedelser
Generere autentiseringsopplysninger
Autentiseringsopplysninger genereres i EC2-format for bruk med AWS-klienten og tilordnes miljøvariabler for interaksjon med objektlageret.
$ read -r AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
<<<$(jq -r '"\\(.access) \\(.secret)"'
<(openstack ec2 credentials create -f json))
Les ut API-adresse
API-adressen for objektlagring hentes fra Binero Clouds tjenestekatalog. Den siste delen av URL-en fjernes siden den peker 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 gjøres tilgjengelige for AWS-klienten, som må være installert. Bøttenavnet 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
Verifiser forberedelser
For fremtidig manuell interaksjon eller automatisering kan de tre AWS-spesifikke verdiene lagres på filsystemet. Pass på at filrettighetene ikke er åpne. Filkonfigurasjon ignoreres hvis aktivt miljø er korrekt konfigurert.
-
Informasjon i API
$ 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 bøtte
En bøtte opprettes som vanlig, med en lagringspolicy og LocationConstraint. Vi velger europe-se-1 i vårt eksempel for å aktivere replikering hvis en policy som stø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
Lagringsmodus er konfigurert til en av to varianter: COMPLIANCE eller GOVERNANCE. COMPLIANCE gir det høyeste sikkerhetsnivået, siden selv administratorer ikke kan slette objekter innenfor den satte tidsrammen, 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 bøtte
Muligheten til å låse objekter er basert på versjonshå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"
}
Versjonshåndtering
$ jq .Status <(aws s3api get-bucket-versioning --bucket $BACKUP_BUCKET)
"Enabled"
Last opp fil
Filen tux.svg lagres i bøtten.
$ 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 undersøker deretter metadata lagret av 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
}
Slett elementer
Når objektet slettes, opprettes en DeleteMarker. Objektet ser ut til å være slettet, men er faktisk skjult. Merk VersionId som refererer til sikkerhetskopien.
$ aws s3api delete-object --bucket $BACKUP_BUCKET --key tux.svg
{
"DeleteMarker": true,
"VersionId": "mc-Yai46SHaLrf4xqeJGgT1.3ry6bUZ"
}
List objektene i bøtten, enten som nedenfor eller ved bruk av en annen grensesnitt, og objektet er ikke lenger der – objektet tux.svg ser ut til å ha blitt slettet. Ingenting returneres – ikke engang fra API-en.
$ aws s3 ls $BACKUP_BUCKET
$ aws s3api list-objects --bucket $BACKUP_BUCKET
{
"RequestCharged": null
}
Sikkerhetskopien er intakt
Men hvis versjonene av objektene listes, kan vi se at objektet fortsatt eksisterer. 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 elementer
Det smarte med en DeleteMarker er at hvis 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 angriper – selv med kunnskap om versjonshåndtering – skulle prøve å slette sikkerhetskopien, ville forsøket mislykkes. Når tidsgrensen 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) under kallet til
DeleteObject-operasjonen: forbudt av objektlås
Konklusjon: sikker cloud-lagring av sikkerhetskopier
Dette eksempelet viser hvordan du trygt kan lagre sikkerhetskopiene dine i Binero Clouds objektlagring og sikre at de forblir intakte selv om uautoriserte personer får tilgang til dem. Sikker cloud-lagring – i verdensklasse!


