Vi har utvecklat en guide för att våra Binero Cloud-kunder ska skydda säkerhetskopior med säker molnlagring. Denna guide gäller alla cloud-användare som vill säkerställa att deras säkerhetskopior inte kan raderas av misstag eller av obehöriga. I guiden beskriver vi en lösning som använder Binero Clouds objektlagring, som är API-kompatibelt med AWS S3, för att skapa en säker och låst backup-miljö.
Vertaa nykyistä kokoonpanoasi prosessiimme – ehkä voitte tehdä vielä jotain lisää varmuuskopioiden suojaamiseksi. Seuraa alla olevia ohjeita nähdäksesi, miten voit ottaa saman ratkaisun käyttöön ja parantaa tietojesi turvallisuutta.
Tausta
Asiakkaamme etsivät ratkaisua varmuuskopioiden turvalliseen säilyttämiseen. Vaatimuksena oli, että varmuuskopiot on suojattava niin, että niitä ei voi poistaa vahingossa tai että järjestelmään pääsevät henkilöt eivät voi poistaa niitä.
Turvallinen pilvitallennus objektitallennuksella Binero Cloudissa
Osana pyrkimystämme varmistaa asiakkaillemme aina turvallinen pilvitallennus, Binero Cloud tarjoaa AWS S3:n kanssa API-yhteensopivan objektitallennuksen. Tämä mahdollistaa objektien lukitsemisen. Toiminto edellyttää, että tiedostojen tallennuspaikka on konfiguroitu tätä varten.
Alla olevien vaiheiden avulla pystyimme varmistamaan, että pilvipalvelussa olevat tiedot olivat tallennettu turvallisesti – ja varmuuskopioissa oli ylimääräinen turva.
Esimerkki
Tässä on esimerkki siitä, miten poistetut kohteet jatkavat olemassaoloaan näkymättöminä käyttöliittymässä, eikä niitä voi poistaa ennen kuin määritetty määräaika on kulunut umpeen. Binero Cloudin kanssa vuorovaikutuksessa olevat komennot merkitään palauttamaan dataa JSON-muodossa jq-työkalun avulla.
Valmistelut
Luo todennustiedot
Todentamistiedot luodaan EC2-muodossa käytettäväksi aws-asiakasohjelmassa ja ne määritetään ympäristömuuttujiksi vuorovaikutusta varten objektivarastoon.
$ read -r AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY \
<<<$(jq -r '"\(.access) \(.secret)"' \
<(openstack ec2 credentials create -f json))
Lue API-osoite
Objektivaraston API-osoite haetaan Binero Cloudin palveluluettelosta. URL-osoitteen viimeinen osa poistetaan, koska se viittaa Swift-API:hin, joka ei ole ajankohtainen.
$ AWS_ENDPOINT_URL=$(openstack catalog list -f json \
| jq -r '.[] |select(.Type=="object-store") |.Endpoints[] |select(.interface=="public").url' \
| cut -d/ -f1-3)
Vie ympäristömuuttujat
Alla variabler görs tillgängliga för aws-klienten som måste vara installerad.
Även bucket-namnet lagras i en variabel.
Notera att aws endast används som en klient för att interagera med S3 i Binero Cloud ((AWS_ENDPOINT_URL -där all data lagras).
$ export AWS_ENDPOINT_URL AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
$ export BACKUP_BUCKET=bup
Varmista valmistelut
För framtida manuell interaktion eller automation kan de tre AWS-specifika värdena lagras på filsystemet. Säkerställ att filrättigheterna inte är öppna. Filsystemskonfiguration ignoreras om den aktiva miljön är korrekt konfigurerad.
- API:n tiedot
$ openstack ec2 credentials show $AWS_ACCESS_KEY_ID -c access -c secret
+--------+----------------------------------+
| Field | Value |
+--------+----------------------------------+
| access | d7855ef4cce44ec692c966e6cc10262d |
| secret | fd3004c7e25240b2b07a931b76b757e5 |
+--------+----------------------------------+ - Ympäristöön liittyvät tiedot:
$ 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 - Tiedot asiakkaassa
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile None None
access_key ****************262d env
secret_key ****************57e5 env
region None None
Luo bucket
En bucket skapas som vanligt, med en lagringspolicy och LocationConstraint. Vi väljer europe-se-1 i vårt exempel för att aktivera replikering om en policy som stöder det har valts.
$ aws s3api create-bucket \
--bucket $BACKUP_BUCKET \
--create-bucket-configuration LocationConstraint=europe-se-1 \
--object-lock-enabled-for-bucket
Konfigurointi lukitusmekanismi
Tallennustila voidaan määrittää kahteen eri vaihtoehtoon: COMPLIANCE tai GOVERNANCE. COMPLIANCE tarjoaa korkeimman turvallisuustason, sillä edes järjestelmänvalvojat eivät voi poistaa kohteita asetetun määräajan kuluessa, joka tässä tapauksessa on yksi vuorokausi.
$ aws s3api put-object-lock-configuration --bucket $BACKUP_BUCKET \
--object-lock-configuration '{"ObjectLockEnabled": "Enabled", "Rule": {"DefaultRetention": {"Mode": "COMPLIANCE", "Days": 1}}}'
Vahvista säiliö
Objektien lukitseminen perustuu objektien versiohallintaan.
Olemassaolo
$ aws s3api list-buckets | jq '.Buckets[] | select(.Name == env.BACKUP_BUCKET)'
{
"Name": "bup",
"CreationDate": "2024-04-10T10:28:18.146000+00:00"
}
Versiohallinta
$ jq .Status <(aws s3api get-bucket-versioning --bucket $BACKUP_BUCKET)
"Enabled"
Lataa tiedosto
Tiedosto tux.svg tallennetaan bucketiin.
$ aws s3 cp tux.svg s3://$BACKUP_BUCKET
upload: ./tux.svg to s3://bup/tux.svg
Vahvista objektin olemassaolo
Varmista, että objekti palautetaan ainoana objektina varastossa.
$ aws s3 ls $BACKUP_BUCKET
2024-04-10 12:31:11 49983 tux.svg
Sen jälkeen tarkastamme API:n tallentaman metadatan.
$ 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
}
Poista kohde
Kun objekti poistetaan, luodaan DeleteMarker. Objekti näyttää olevan poistettu, mutta on itse asiassa piilotettu. Huomaa VersionId, joka viittaa varmuuskopioon.
$ aws s3api delete-object --bucket $BACKUP_BUCKET --key tux.svg
{
"DeleteMarker": true,
"VersionId": "mc-Yai46SHaLrf4xqeJGgT1.3ry6bUZ"
}
Luetteloida kohteet säiliössä, joko alla tai muussa rajapinnassa, niin kohdetta ei ole enää olemassa – kohde tux.svg on ilmeisesti poistettu. Mitään ei palauteta – ei myöskään API:sta.
$ aws s3 ls $BACKUP_BUCKET
$ aws s3api list-objects --bucket $BACKUP_BUCKET
{
"RequestCharged": null
}
Varmuuskopio on ehjä
Jos objektien versiot sen sijaan on lueteltu, voimme nähdä, että objekti on edelleen olemassa. Objekti poistettaessa luotiin siis 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
}
Palauttaa poistetut kohteet
DeleteMarkerin hieno ominaisuus on, että jos se poistetaan, tiedosto palautuu!
$ 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
}
Jos tekijä yrittäisi poistaa varmuuskopion, vaikka hän tietäisi versioiden hallinnasta, yritys epäonnistuisi. Aikarajan umpeuduttua versio voidaan poistaa, mutta ei koskaan ennen sitä!
$ 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
Johtopäätös: varmuuskopioiden turvallinen pilvitallennus
Esimerkki osoittaa, kuinka varmuuskopiot voidaan tallentaa turvallisesti Binero Cloudin objektitallennustilaan ja varmistaa, että varmuuskopiot pysyvät ehjinä, vaikka niihin pääsisi käsiksi sivulliset. Turvallinen pilvitallennus – maailmanluokkaa!


