Abilitazione del blocco oggetto per S3

Utilizzando il meccanismo di blocco degli oggetti S3 , è possibile utilizzare concetti di blocco degli oggetti come periodo di conservazione, conservazione legale e configurazione del bucket per implementare la funzionalità WORM (Write - Once - Read_Many) come parte del workflow personalizzato che sovrascrive le autorizzazioni di eliminazione dei dati.

Importante: la versione o le versioni dell'oggetto, non il nome dell'oggetto, è il valore di definizione e richiesto per il blocco dell'oggetto da eseguire correttamente per supportare la modalità GOVERNANCE o COMPLIANCE . È necessario conoscere la versione dell'oggetto quando viene scritto in modo da poterlo richiamare in un secondo momento.
Importante: la società di consulenza Cohasset conclude che IBM Storage Ceph, una volta configurato correttamente e dopo aver soddisfatto le ulteriori considerazioni, soddisfa i requisiti di sistema di conservazione dei record elettronici di SEC Rules 17a-4(f) (2), 18a-6(e) (2)e FINRA 4511 (c), nonché, supporta l'entità regolamentata nella sua conformità ai requisiti di sistema di controllo in SEC Rules 17a-4(f) (3) (iii) e 18a-6(e) (3) (iii). Inoltre, le funzionalità valutate soddisfano i requisiti dei record elettronici basati sui principi della regola CFTC 1.31(c) - (d). Per ulteriori informazioni, consultare la certificazione Cohasset.

Prerequisiti

  • Un cluster IBM Storage Ceph in esecuzione.

  • Accesso a livello root al nodo Ceph Object Gateway .

  • Utente S3 con accesso di creazione del bucket versione.

Procedura

  1. Crea un bucket con il blocco oggetto abilitato:

    Sintassi

    aws --endpoint=http://RGW_PORT:8080 s3api create-bucket --bucket BUCKET_NAME --object-lock-enabled-for-bucket

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api create-bucket --bucket worm-bucket --object-lock-enabled-for-bucket
  2. Imposta un periodo di conservazione per il bucket:

    Sintassi

    aws --endpoint=http://RGW_PORT:8080 s3api put-object-lock-configuration --bucket BUCKET_NAME --object-lock-configuration { "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "RETENTION_MODE", "Days": NUMBER_OF_DAYS }}}

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object-lock-configuration --bucket worm-bucket --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 10 }}}'
    Nota:

    È possibile scegliere la modalità GOVERNANCE o COMPLIANCE per il RETENTION_MODE nel blocco oggetto S3 , per applicare diversi livelli di protezione a qualsiasi versione oggetto protetta dal blocco oggetto.

    In modalit ... GOVERNANCE , gli utenti non possono sovrascrivere o eliminare una versione dell'oggetto o modificarne le impostazioni di blocco a meno che non dispongano di autorizzazioni speciali.

    In modalità COMPLIANCE , una versione di oggetto protetto non può essere sovrascritta o eliminata da alcun utente, incluso l'utente root nel tuo account AWS . Quando un oggetto è bloccato in modalità COMPLIANCE , non è possibile modificare RETENTION_MODE e non è possibile ridurre il periodo di conservazione. La modalità COMPLIANCE consente di garantire che una versione dell'oggetto non possa essere sovrascritta o eliminata per la durata del periodo.

  3. Inserire l'oggetto nel bucket con un tempo di conservazione impostato:

    Sintassi

    aws --endpoint=http://RGW_PORT:8080 s3api put-object --bucket BUCKET_NAME --object-lock-mode RETENTION_MODE --object-lock-retain-until-date "DATE" --key compliance-upload --body TEST_FILE

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object --bucket worm-bucket --object-lock-mode COMPLIANCE --object-lock-retain-until-date "2022-05-31" --key compliance-upload --body test.dd
    {
        "ETag": ""d560ea5652951637ba9c594d8e6ea8c1"",
        "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD"
    }
  4. Carica un nuovo oggetto utilizzando la stessa chiave:

    Sintassi

    aws --endpoint=http://RGW_PORT:8080 s3api put-object --bucket BUCKET_NAME --object-lock-mode RETENTION_MODE --object-lock-retain-until-date "DATE" --key compliance-upload --body PATH

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object --bucket worm-bucket --object-lock-mode COMPLIANCE --object-lock-retain-until-date "2022-05-31" --key compliance-upload --body /etc/fstab
    {
        "ETag": ""d560ea5652951637ba9c594d8e6ea8c1"",
        "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD"
    }

Opzioni di riga di comando

  • Impostare un blocco oggetto su una versione oggetto:

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object-legal-hold --bucket worm-bucket --key compliance-upload --legal-hold Status=ON
    Nota: utilizzando l'operazione di blocco dell'oggetto, è possibile impostare un blocco legale su una versione dell'oggetto, impedendo la sovrascrittura o l'eliminazione di una versione dell'oggetto. Un blocco legale non ha un periodo di conservazione associato e, quindi, rimane in vigore fino a quando non viene rimosso.
  • Elencare gli oggetti dal bucket per richiamare solo la versione più recente dell'oggetto:

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api list-objects --bucket worm-bucket
  • Elenca le versioni dell'oggetto dal bucket:

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api list-objects --bucket worm-bucket
    {
        "Versions": [
            {
                "ETag": ""d560ea5652951637ba9c594d8e6ea8c1"",
                "Size": 288,
                "StorageClass": "STANDARD",
                "Key": "hosts",
                "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD",
                "IsLatest": true,
                "LastModified": "2022-06-17T08:51:17.392000+00:00",
                "Owner": {
                    "DisplayName": "Test User in Tenant test",
                    "ID": "test$test.user"
                }
                }
            }
        ]
    }
  • Accedere agli oggetti utilizzando gli ID versione:

    Esempio

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api get-object --bucket worm-bucket  --key compliance-upload --version-id 'IGOU.vdIs3SPduZglrB-RBaK.sfXpcd' download.1
    {
        "AcceptRanges": "bytes",
        "LastModified": "2022-06-17T08:51:17+00:00",
        "ContentLength": 288,
        "ETag": ""d560ea5652951637ba9c594d8e6ea8c1"",
        "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD",
        "ContentType": "binary/octet-stream",
        "Metadata": {},
        "ObjectLockMode": "COMPLIANCE",
        "ObjectLockRetainUntilDate": "2023-06-17T08:51:17+00:00"
    }