Olemme kehittäneet oppaan Binero Cloud -asiakkaillemme, jonka avulla he voivat suojata varmuuskopionsa turvallisella cloud-tallennustilalla. Tämä opas koskee kaikkia cloudin käyttäjiä, jotka haluavat varmistaa, etteivät heidän varmuuskopionsa voi poistua vahingossa tai valtuuttamattomien henkilöiden toimesta. Oppaassa kuvaamme ratkaisun, joka käyttää Binero Cloudin objektitallennustilaa, joka on API-yhteensopiva AWS S3:n kanssa, luodakseen turvallisen ja lukitun varmuuskopioympäristön.

Vertaa nykyistä asetustasi prosessiimme – saatat pystyä tekemään vielä enemmän suojataksesi varmuuskopiosi. Seuraa alla olevia vaiheita nähdäksesi, kuinka voit toteuttaa saman ratkaisun ja lisätä tietojesi turvallisuutta.

Taustaa

Asiakkaamme etsivät ratkaisua varmuuskopioidensa turvalliseen tallentamiseen. Ehto oli, että varmuuskopiot oli suojattava siten, ettei niitä voitu poistaa vahingossa tai valtuuttamattomien henkilöiden toimesta, jotka saisivat järjestelmään pääsyn.

Turvallinen cloud-tallennustila objektitallennustilalla Binero Cloudissa

Osana tavoitettamme varmistaa aina asiakkaidemme turvallinen cloud-tallennustila tarjoaa Binero Cloud objektitallennustilan, joka on API-yhteensopiva AWS S3:n kanssa. Tämä mahdollistaa objektien lukitsemisen. Toiminto edellyttää, että tynnyri, johon tiedostot tallennetaan, on konfiguroitu tätä varten.

Seuraamalla alla olevia vaiheita pystyimme varmistamaan, että pilvessä olevat tiedot tallennettiin turvallisesti – lisäturvalla varmuuskopioissa.

Esimerkki

Tässä on esimerkki siitä, miten poistettuja objekteja säilyy, vaikka ne eivät ole näkyvissä rajapinnassa, eikä niitä voi poistaa ennen asetetun aikarajan umpeutumista. Binero Cloudin kanssa vuorovaikutuksessa olevat komennot on merkitty palauttamaan tiedot JSON-muodossa käyttämällä jq-työkalua.

Valmistelut

Autentikointitunnistetietojen luominen

Autentikointitunnistetiedot luodaan EC2-muotoisina AWS-asiakasohjelman käyttöä varten ja määritetään ympäristömuuttujiin vuorovaikutusta varten objektitallennuksen kanssa.

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

Lue API-osoite

Objektitallennuksen API-osoite haetaan Binero Cloudin palveluluettelosta. URL-osoitteen viimeinen osa poistetaan, koska se osoittaa Swift API:hin, joka ei ole relevantti.

$ AWS_ENDPOINT_URL=$(openstack catalog list -f json  
| jq -r '.[] |select(.Type=="object-store") |.Endpoints[] |select(.interface=="public").url'
| cut -d/ -f1-3)

Exportoi ympäristömuuttujat

Kaikki muuttujat tehdään saataville AWS asiakasohjelmalle, joka tulee olla asennettuna. Tynnyrin nimi tallennetaan myös muuttujaan. Huomaa, että AWS:ää käytetään vain asiakkaana vuorovaikutukseen S3:n kanssa Binero Cloudissa (AWS_ENDPOINT_URL - missä kaikki data tallennetaan).

$ export AWS_ENDPOINT_URL AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
$ export BACKUP_BUCKET=bup

Tarkista valmistelut

Tulevaa manuaalista vuorovaikutusta tai automatisointia varten kolme AWS-spesifistä arvoa voidaan tallentaa tiedostojärjestelmään. Varmista, ettei tiedostojen käyttöoikeudet ole avoimet. Tiedostojärjestelmän konfiguraatiota ei oteta huomioon, jos aktiivinen ympäristö on konfiguroitu oikein.

  1. Tietoa API:sta

    $ openstack ec2 credentials show $AWS_ACCESS_KEY_ID -c access -c secret
    +--------+----------------------------------+
    | Field | Value |
    +--------+----------------------------------+
    | access | d7855ef4cce44ec692c966e6cc10262d |
    | secret | fd3004c7e25240b2b07a931b76b757e5 |
    +--------+----------------------------------+
  2. Tietoa ympäristöstä:

    $ 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. Tietoa asiakkaalta

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

Luo tynnyri

Tynnyri luodaan kuten tavallisesti, ja sille määritetään tallennuskäytäntö ja LocationConstraint. Esimerkissämme valitsemme europe-se-1 mahdollistamaan replikaation, jos käytössä on sitä tukevat käytännöt.

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

Konfiguroi lukitusmekanismi

Tallennustila on konfiguroitu kahdesta vaihtoehdosta toiseen: COMPLIANCE tai GOVERNANCE. COMPLIANCE tarjoaa korkeamman turvallisuustason, koska edes ylläpitäjät eivät voi poistaa objekteja asetettuun aikarajaan mennessä tässä tapauksessa alle 24 tunnin sisällä.

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

Tarkista tynnyri

Objektien lukitusmahdollisuus perustuu objektien versiohallintaan.

Existenssi

$ 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 tynnyriin.

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

Tarkista objektin olemassaolo

Varmista, että objekti palautetaan ainoana objektina tallennuspaikassa.

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

Tarkastelemme sitten API:n tallentamia metatietoja.

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

Kun objekti poistetaan, luodaan DeleteMarker. Objekti näyttää poistuneen, mutta on todellisuudessa piilotettu. Huomaa VersionId, joka viittaa varmuuskopioon.

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

Listaa tynnyrin objektit, joko alla kuten tai muulla käyttöliittymällä, ja objekti ei ole enää näkyvissä – objekti tux.svg näyttää siltä kuin se olisi poistettu. Ei mitään palauteta – ei edes API:n kautta.

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

Varmuuskopio on ehjä

Kuitenkin, jos objekteiden versiot listataan, nähdään, että objekti yhä on olemassa. Mitä tapahtui poistettaessa objektia, oli että DeleteMarker luotiin.

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

Palauta poistetut kohteet

Ticketerästä on fiksua, että jos DeleteMarker 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ä – vaikka versiohallinnan tiedolla – yrittäisi poistaa varmuuskopion, yritys epäonnistuisi. Aikarajan umpeuduttua versio voidaan poistaa – mutta ei koskaan aiemmin!

$ aws s3api delete-object --bucket $BACKUP_BUCKET  --key tux.svg  --version-id "\\-IrCCqAYQt5ySttlBnI6VEw2jpw6f2\\."

Virhe tapahtui (AccessDenied) kutsuttaessa  
DeleteObject-operaatiota: objektilukitus estää

Yhteenveto: turvallinen cloud-tallennus varmuuskopioille

Tämä esimerkki näyttää, kuinka voit turvallisesti tallentaa varmuuskopiosi Binero Cloudin objektitallennustilaan ja varmistaa, että ne pysyvät ehjinä, vaikka valtuuttamattomat henkilöt saisivat niihin pääsyn. Turvallinen cloud-tallennustila – maailmanluokkaa!