Protezione del volume a blocchi

Questo argomento fornisce informazioni e suggerimenti sulla sicurezza per il volume a blocchi.

Il servizio Block Volume consente di eseguire il provisioning e gestire in modo dinamico i volumi di storage a blocchi . Puoi creare, collegare, connettere e spostare volumi, nonché modificare le prestazioni dei volumi, se necessario, per soddisfare i requisiti di storage, prestazioni e applicazioni. Dopo aver collegato e connesso un volume a un'istanza, puoi utilizzare il volume come un normale disco rigido. Inoltre, puoi disconnettere un volume e collegarlo a un'altra istanza senza perdere i dati.

Responsabilità di sicurezza

Per utilizzare i volumi a blocchi in tutta sicurezza, scopri le tue responsabilità in termini di sicurezza e conformità.

In generale, Oracle fornisce la sicurezza dell'infrastruttura e delle operazioni cloud, come i controlli di accesso degli operatori cloud e l'applicazione di patch di sicurezza dell'infrastruttura. Sei responsabile della configurazione sicura delle tue risorse cloud. La sicurezza nel cloud è una responsabilità condivisa tra te e Oracle.

Oracle è responsabile dei seguenti requisiti di sicurezza:

  • Sicurezza fisica: Oracle è responsabile della protezione dell'infrastruttura globale che esegue tutti i servizi offerti in Oracle Cloud Infrastructure. Questa infrastruttura è costituita da hardware, software, networking e strutture che eseguono i servizi Oracle Cloud Infrastructure.

In questa pagina sono descritte le responsabilità di sicurezza dell'utente, che includono le aree riportate di seguito.

  • Controllo dell'accesso: limitare il più possibile i privilegi. Agli utenti dovrebbe essere concesso solo l'accesso necessario per svolgere il proprio lavoro.
  • Cifratura e riservatezza: utilizzare le chiavi di cifratura e i segreti per proteggere i dati e connettersi a risorse protette. Ruotare questi tasti regolarmente.

Task di sicurezza iniziali

Utilizzare questa lista di controllo per identificare i task eseguiti per proteggere il volume a blocchi in una nuova tenancy di Oracle Cloud Infrastructure.

Attività Ulteriori informazioni
Utilizzare i criteri IAM per concedere l'accesso a utenti e risorse Criteri IAM
Cifra le risorse utilizzando una chiave personalizzata Cifratura dati
Abilita e configura Cloud Guard (facoltativo) Cloud Guard
Creare una zona di sicurezza (facoltativo) Zone di sicurezza

Task di sicurezza di routine

Dopo aver iniziato a usare Block Volume, utilizza questa lista di controllo per identificare i task di sicurezza che ti consigliamo di eseguire regolarmente.

Attività Ulteriori informazioni
Ruota chiavi di cifratura Cifratura dati
Rispondi ai problemi rilevati in Cloud Guard Cloud Guard
Esegui backup regolari Durabilità dei dati
Eseguire un controllo della sicurezza Audit

Criteri IAM

Utilizza i criteri per limitare l'accesso al volume a blocchi.

Una policy specifica chi può accedere alle risorse di Oracle Cloud Infrastructure e come. Per ulteriori informazioni, vedere Funzionamento dei criteri.

Assegnare a un gruppo i privilegi minimi necessari per eseguire le proprie responsabilità. Ogni criterio ha un verbo che descrive le azioni che il gruppo può eseguire. Dal minor numero di accessi al massimo, i verbi disponibili sono: inspect, read, use e manage.

Si consiglia di concedere le autorizzazioni DELETE a un set minimo di utenti e gruppi IAM. Questa pratica riduce al minimo la perdita di dati da eliminazioni involontarie da parte di utenti autorizzati o da attori malintenzionati. Assegnare solo le autorizzazioni DELETE agli amministratori della tenancy e del compartimento.

Oracle Cloud Infrastructure supporta due tipi di volumi: volumi a blocchi e volumi di avvio. I volumi a blocchi consentono di espandere la capacità di storage delle istanze in modo dinamico. Un volume di avvio contiene l'immagine usata per avviare l'istanza di calcolo. Il servizio IAM raggruppa la famiglia di tipi di risorse di volume correlati in un tipo di risorsa combinato denominato volume-family.

Assegnare l'accesso con privilegi minimi per gli utenti e i gruppi IAM ai tipi di risorsa in volume-family. I tipi di risorsa in volume-family sono volumes,volume-attachments e volume-backups.

  • Le risorse volumes sono dispositivi di volumi a blocchi scollegabili che consentono l'espansione dinamica della capacità di storage dell'istanza o contengono l'immagine per l'avvio dell'istanza.
  • Le risorse volume-attachments sono collegamenti tra volumi e istanze.
  • Le risorse volume-backups sono copie point-in-time dei volumi che possono essere utilizzati per creare volumi a blocchi o recuperare i volumi a blocchi.
Impedisci eliminazione volumi

Il seguente criterio di esempio consente al gruppo VolumeUsers di eseguire tutte le azioni sui volumi e sui backup, ad eccezione dell'eliminazione.

Allow group VolumeUsers to manage volumes in tenancy
 where request.permission!='VOLUME_DELETE' 
Allow group VolumeUsers to manage volume-backups in tenancy
 where request.permission!='VOLUME_BACKUP_DELETE'

Se VolumeUsers non è in grado di scollegare i volumi dalle istanze, è possibile aggiungere il criterio seguente all'esempio precedente.

Allow group VolumeUsers to manage volume-attachments in tenancy
 where request.permission!='VOLUME_ATTACHMENT_DELETE'

Per ulteriori informazioni sui criteri dei volumi a blocchi e per visualizzare altri esempi, vedere Dettagli per i servizi di base.

Cloud Guard

Abilita Cloud Guard e usalo per rilevare e rispondere ai problemi di sicurezza nel volume a blocchi.

Quando rileva un problema, Cloud Guard suggerisce azioni correttive. Inoltre, puoi configurare Cloud Guard in modo che esegua automaticamente determinate azioni. Cloud Guard include le regole del rilevatore riportate di seguito per il volume a blocchi.

  • Il volume a blocchi è cifrato con una chiave gestita da Oracle
  • Il volume a blocchi non è collegato

Per una lista di tutte le regole del rilevatore disponibili in Cloud Guard, vedere Riferimento ricetta rilevatore.

Se non lo hai già fatto, abilita Cloud Guard e configuralo per monitorare i compartimenti che contengono le tue risorse. Puoi configurare le destinazioni Cloud Guard per esaminare l'intera tenancy (compartimento radice e tutti i compartimenti secondari) o per controllare solo compartimenti specifici. Vedere Introduzione a Cloud Guard.

Dopo aver abilitato Cloud Guard, puoi visualizzare e risolvere i problemi di sicurezza rilevati. Vedere Elaborazione dei problemi segnalati.

Zone di sicurezza

L'uso delle zone di sicurezza garantisce che le risorse presenti nei volumi a blocchi siano conformi alle procedure ottimali di sicurezza.

Una zona di sicurezza è associata a uno o più compartimenti e a una ricetta della zona di sicurezza. Quando crei e aggiorni le risorse nel compartimento di una zona di sicurezza, Oracle Cloud Infrastructure convalida queste operazioni rispetto alla lista dei criteri della zona di sicurezza nella ricetta. Se un criterio nella ricetta viene violato, l'operazione viene negata. I criteri della zona di sicurezza riportati di seguito sono disponibili per le risorse nel volume a blocchi.

  • deny block_volume_not_in_security_​zone_attach_to_instance_​in_security_zone
  • deny block_volume_in_security_​zone_attach_to_instance_​not_in_security_zone
  • deny boot_volume_not_in_security_​zone_attach_to_instance_​in_security_zone
  • deny boot_volume_in_security_​zone_attach_to_instance_​not_in_security_zone
  • deny attached_block_volume_not_​in_security_zone_move_to_​compartment_in_security_zone
  • deny attached_boot_volume_not_in_​security_zone_move_to_​compartment_in_security_zone
  • deny block_volume_without_​vault_key
  • deny boot_volume_without_​vault_key

Per una lista di tutti i criteri delle zone di sicurezza, vedere Criteri delle zone di sicurezza.

Per spostare le risorse esistenti in un compartimento che si trova in una zona di sicurezza, le risorse devono essere conformi a tutti i criteri della zona di sicurezza nella ricetta della zona. Allo stesso modo, le risorse in una zona di sicurezza non possono essere spostate in un compartimento esterno alla zona di sicurezza perché potrebbero essere meno sicure. Vedere Gestione delle zone di sicurezza.

Cifratura dati

Il servizio per volumi a blocchi esegue sempre la cifratura di tutti i volumi a blocchi, i volumi di avvio e i backup dei volumi in archivio utilizzando l'algoritmo AES (Advanced Encryption Standard) con cifratura a 256 bit. È possibile utilizzare una chiave di cifratura fornita da Oracle o una chiave personalizzata nel servizio Vault. È inoltre possibile cifrare i volumi di dati utilizzando strumenti quali dm-crypt, veracrypt e Bit-Locker.

Per impostazione predefinita, tutti i volumi e i relativi backup vengono cifrati utilizzando le chiavi di cifratura fornite da Oracle. Ogni volta che un volume viene duplicato o ripristinato da un backup, al volume viene assegnata una nuova chiave di cifratura univoca.

Cifratura dei volumi con il servizio Vault

Sebbene le chiavi di cifratura predefinite possano essere generate automaticamente quando si creano determinate risorse di Oracle Cloud Infrastructure, si consiglia di creare e gestire le proprie chiavi di cifratura personalizzate nel servizio Vault.

Un vault è un'entità logica che memorizza le chiavi di cifratura utilizzate per proteggere i dati. A seconda della modalità di protezione, le chiavi vengono memorizzate sul server o su moduli di sicurezza hardware (HSM) ad alta disponibilità e durata. I nostri HSM soddisfano la certificazione di sicurezza FIPS (Federal Information Processing Standards) 140-2 Security Level 3. Vedere Gestione dei vault e Gestione delle chiavi.

Crea e ruota le chiavi di cifratura nel servizio Vault per proteggere le risorse presenti nel volume a blocchi. Vedere Creazione di un volume a blocchi e Assegnazione di una chiave a un volume a blocchi.

A ogni chiave di cifratura master viene assegnata automaticamente una versione della chiave. Quando si ruota una chiave, il servizio Vault genera una nuova versione della chiave. La rotazione periodica delle chiavi limita la quantità di dati cifrati o firmati da una versione della chiave. Se una chiave è sempre inclusa, la rotazione delle chiavi riduce il rischio per i tuoi dati. Vedere Gestione delle chiavi.

Si consiglia di utilizzare i criteri IAM per limitare in modo rigoroso la creazione, la rotazione e l'eliminazione delle chiavi di cifratura. Vedere Dettagli per il servizio Vault.

Cifratura dei volumi non root con dm-crypt

dm-crypt è un meccanismo di cifratura a livello kernel (parte della struttura devicemapper di Linux) per fornire volumi cifrati. Crittografa i dati passati dal file system (ad esempio, ext4 e NTFS) e li memorizza su un dispositivo di memorizzazione in formato LUKS (Linux Unified Key Setup).

I volumi cifrati possono essere memorizzati in un disco completo, in una partizione disco, in un volume logico o in uno storage basato su file creato utilizzando dispositivi di loopback. Cryptsetup è la utility a livello utente utilizzata per gestire dm-crypt e utilizzata per cifrare partizioni e file. dm-crypt utilizza le API crypto di Linux per le routine di cifratura.

  1. Collegare il volume di storage a blocchi a un'istanza (ad esempio, /dev/sdb)
  2. Formato /dev/sdb per la cifratura LUKS. Immettere la passphrase LUKS quando richiesto. La passphrase viene utilizzata per cifrare la chiave principale LUKS utilizzata per la cifratura del volume.
    cryptsetup -y luksFormat /dev/sdb
  3. Verificare che la formattazione LUKS sia riuscita.
    cryptsetup isLuks /dev/sdb && echo Success
  4. Ottenere informazioni sulla crittografia del dispositivo.
    cryptsetup luksDump /dev/sdb
  5. Ottenere l'UUID LUKS del dispositivo. Il valore UUID viene utilizzato per configurare /etc/crypttab.
    cryptsetup luksUUID /dev/sdb
  6. Creare un contenitore LUKS con nome dispositivo dev_name. Questo comando crea anche un nodo dispositivo, /dev/mapper/<dev_name>.
    cryptsetup luksOpen /dev/sdb <dev_name>
  7. Ottenere informazioni sul dispositivo mappato.
    dmsetup info <dev_name>
  8. Formatta il nodo del dispositivo come file system ext4.
    sudo mkfs -t ext4 /dev/sdb 
  9. Attivare il nodo del dispositivo.
    mount /dev/mapper/<dev_name> /home/encrypt_fs
  10. Aggiungere una voce a /etc/crypttab.
    <dev_name> UUID=<LUKS UUID of /dev/sdb> none

    Tutti i file copiati in /home/encrypt_fs vengono cifrati da LUKS.

  11. Aggiungere un file chiave a uno slot di chiavi disponibile del volume cifrato. Questo file chiave può essere utilizzato per accedere al volume cifrato.
    dd if=/dev/urandom of=$HOME/keyfile bs=32 count=1
    chmod 600 $HOME/keyfile
    cryptsetup luksAddKey /dev/sdb ~/keyfile
  12. Verificare lo stato di cifratura dei file.
    cryptsetup status /home/encrypt_fs
  13. Disattivare al termine dell'operazione.
    umount /home/encrypt_fs
    cryptsetup luksClose <dev_name>
                                    

Se è necessario accedere al volume cifrato:

cryptsetup luksOpen /dev/sdb <dev_name> --key-file=/home/opc/keyfile
mount /dev/mapper/<dev_name> /home/encrypt_fs

Se si perde il file chiave o se il file chiave o la passphrase vengono danneggiati, non è possibile decifrare il volume cifrato. Il risultato è una perdita permanente di dati. Si consiglia di memorizzare copie permanenti del file chiave in un host on premise.

Montaggio remoto dei volumi di dati crittografati con dm-crypt

I passi riportati di seguito presuppongono che il file di chiavi si trovi in un host in locale (SRC_IP) e che <OCI_SSH_KEY> sia la chiave privata SSH dell'istanza.

  1. Copiare il file di chiavi dall'host in locale a un'istanza.
    scp -i <OCI_SSH_KEY> keyfile opc@<SRC_IP>:/home/opc
  2. Aprire il volume cifrato.
    ssh i <OCI_SSH_KEY> opc@<SRC_IP> "cryptsetup luksOpen /dev/sdb <dev_name> --key-file=/home/opc/keyfile"
  3. Installare il volume.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "mount /dev/mapper/<dev_name> /home/encrypt_fs"
  4. Eseguire le operazioni sui dati nel volume di cui è stato eseguito il MOUNT.
  5. Esegue il NO MOUNT del volume cifrato.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "umount /home/encrypt_fs"
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "cryptsetup luksClose <dev_name>"
  6. Eliminare il file di chiavi dall'istanza.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "\rm -f /home/opc/keyfile"

Durabilità dei dati

Esegui backup periodici dei tuoi dati nel volume a blocchi. Si consiglia di concedere a un set minimo di utenti e gruppi l'autorizzazione per eliminare i backup.

Per ridurre al minimo la perdita di dati causata da eliminazioni o danneggiamenti, si consiglia di eseguire backup periodici dei volumi. Oracle Cloud Infrastructure consente backup pianificati automatizzati. Per ulteriori informazioni sui backup pianificati, vedere Backup basati su criteri.

Per ridurre al minimo la perdita di dati causata da eliminazioni involontarie da parte di un utente autorizzato o da eliminazioni dannose, si consiglia di concedere le autorizzazioni VOLUME_DELETE, VOLUME_ATTACHMENT_DELETE e VOLUME_BACKUP_DELETE a un set minimo possibile di utenti e gruppi IAM. Concedere le autorizzazioni DELETE solo agli amministratori della tenancy e del compartimento.

Audit

Individua i log di accesso e altri dati di sicurezza per il volume a blocchi.

Il servizio di audit registra automaticamente tutte le chiamate API alle risorse Oracle Cloud Infrastructure. È possibile raggiungere gli obiettivi di sicurezza e conformità utilizzando il servizio di audit per monitorare tutte le attività utente all'interno della tenancy. Poiché tutte le chiamate alla console, all'SDK e alla riga di comando (CLI) passano attraverso le nostre API, viene inclusa tutta l'attività da tali origini. I record di audit sono disponibili tramite un'interfaccia API di query autenticata e filtrabile oppure possono essere recuperati come file in batch dallo storage degli oggetti. I contenuti del log di audit includono l'attività che si è verificata, l'utente che l'ha avviata, la data e l'ora della richiesta, nonché l'IP di origine, l'user agent e le intestazioni HTTP della richiesta. Vedere Visualizzazione degli eventi del log di audit.

Esempio di log di controllo
{
  "datetime": 1642993213028,
  "logContent": {
    "data": {
      "additionalDetails": {
        "X-Real-Port": 55984
      },
      "availabilityDomain": "AD3",
      "compartmentId": "ocid1.compartment.oc1..<unique_ID>",
      "compartmentName": "mycompartment",
      "definedTags": null,
      "eventGroupingId": "<unique_ID>",
      "eventName": "ListBootVolumes",
      "freeformTags": null,
      "identity": {
        "authType": null,
        "callerId": null,
        "callerName": null,
        "consoleSessionId": null,
        "credentials": "<key>",
        "ipAddress": "<IP_address>",
        "principalId": "<user_ID>",
        "principalName": "<user_name>",
        "tenantId": "ocid1.tenancy.oc1..<unique_ID>",
        "userAgent": "Oracle-JavaSDK/1.37.1 (Linux/4.14.35-2047.510.4.1.el7uek.x86_64; Java/1.8.0_301; Java HotSpot(TM) 64-Bit Server VM GraalVM EE 20.3.3/25.301-b09-jvmci-20.3-b18)"
      },
      "message": "ListBootVolumes succeeded",
      "request": {
        "action": "GET",
        "headers": {
          "Accept": [
            "application/json"
          ],
          "Authorization": [
            "Signature headers=\"date (request-target) host\",keyId=<key>"
          ],
          "Connection": [
            "keep-alive"
          ],
          "Date": [
            "Mon, 24 Jan 2022 03:00:12 GMT"
          ],
          "User-Agent": [
            "Oracle-JavaSDK/1.37.1 (Linux/4.14.35-2047.510.4.1.el7uek.x86_64; Java/1.8.0_301; Java HotSpot(TM) 64-Bit Server VM GraalVM EE 20.3.3/25.301-b09-jvmci-20.3-b18)"
          ],
          "opc-client-info": [
            "Oracle-JavaSDK/1.37.1"
          ],
          "opc-request-id": [
            "<unique_ID>"
          ]
        },
        "id": "<unique_ID>",
        "parameters": {
          "availabilityDomain": [
            "EMIr:PHX-AD-3"
          ],
          "compartmentId": [
            "ocid1.compartment.oc1..<unique_ID>"
          ],
          "limit": [
            "1000"
          ]
        },
        "path": "/20160918/bootVolumes"
      },
      "resourceId": null,
      "response": {
        "headers": {
          "Connection": [
            "close"
          ],
          "Content-Length": [
            "2"
          ],
          "Content-Type": [
            "application/json"
          ],
          "Date": [
            "Mon, 24 Jan 2022 03:00:13 GMT"
          ],
          "X-Content-Type-Options": [
            "nosniff"
          ],
          "opc-request-id": [
            "<unique_ID>"
          ]
        },
        "message": null,
        "payload": {},
        "responseTime": "2022-01-24T03:00:13.028Z",
        "status": "200"
      },
      "stateChange": {
        "current": null,
        "previous": null
      }
    },
    "dataschema": "2.0",
    "id": "<unique_ID>",
    "oracle": {
      "compartmentid": "ocid1.compartment.oc1..<unique_ID>",
      "ingestedtime": "2022-01-24T03:00:45.483Z",
      "loggroupid": "_Audit",
      "tenantid": "ocid1.tenancy.oc1..<unique_ID>"
    },
    "source": "",
    "specversion": "1.0",
    "time": "2022-01-24T03:00:13.028Z",
    "type": "com.oraclecloud.BlockVolumes.ListBootVolumes"
  }
}

Se Cloud Guard è stato abilitato nella tenancy, viene segnalato qualsiasi attività utente che costituisce un potenziale problema di sicurezza. Quando rileva un problema, Cloud Guard suggerisce azioni correttive. Inoltre, puoi configurare Cloud Guard in modo che esegua automaticamente determinate azioni. Vedere la Guida introduttiva a Cloud Guard e l'elaborazione dei problemi segnalati.