Protección de Block Volume

En este tema, se proporciona información de seguridad y recomendaciones para volumen en bloque.

El servicio Block Volume permite aprovisionar y gestionar volúmenes de almacenamiento en bloque de forma dinámica. Puede crear, asociar, conectar y mover volúmenes, así como cambiar el rendimiento de estos, según sea necesario, para cumplir con los requisitos de almacenamiento, rendimiento y aplicación. Una vez que ha asociado y conectado un volumen a una instancia, puede utilizar el volumen como disco duro normal. También puede desconectar un volumen y asociarlo a otra instancia sin perder datos.

Responsabilidades de seguridad

Para utilizar Block Volume de forma segura, conozca sus responsabilidades en materia de seguridad y conformidad.

En general, Oracle proporciona seguridad en la infraestructura y las operaciones en la nube, como controles de acceso de operadores en la nube y aplicación de parches de seguridad de la infraestructura. Usted es responsable de configurar de forma segura sus recursos en la nube. La seguridad en la nube es una responsabilidad compartida entre usted y Oracle.

Oracle es responsable de los siguientes requisitos de seguridad:

  • Seguridad física:Oracle es responsable de proteger la infraestructura global que ejecuta todos los servicios ofrecidos en Oracle Cloud Infrastructure. Esta infraestructura consta del hardware, el software, la red y las instalaciones que ejecutan servicios de Oracle Cloud Infrastructure.

Las responsabilidades de seguridad se describen en esta página, que incluye las siguientes áreas:

  • Control de acceso: limite los privilegios tanto como sea posible. A los usuarios solo se les debe otorgar el acceso necesario para realizar su trabajo.
  • Encriptación y confidencialidad: utilice claves de cifrado y secretos para proteger los datos y conectarse a recursos seguros. Rote estas claves regularmente.

Tareas de seguridad iniciales

Utilice esta lista de control para identificar las tareas que debe realizar para proteger Block Volume en un nuevo arrendamiento de Oracle Cloud Infrastructure.

Tarea Más información
Utilice políticas de IAM para otorgar acceso a usuarios y recursos Políticas de IAM
Cifrar recursos mediante una clave personalizada Cifrado de datos
Activación y configuración de Cloud Guard (opcional) Cloud Guard
Crear una zona de seguridad (opcional) Zonas de seguridad

Tareas de seguridad rutinarias

Después de empezar a utilizar Block Volume , utilice esta lista de control para identificar las tareas de seguridad que recomendamos que realice con regularidad.

Tarea Más información
Rotar claves de cifrado Cifrado de datos
Responder a los problemas detectados en Cloud Guard Cloud Guard
Haga copias de seguridad periódicas Durabilidad de los datos
Realice una auditoría de seguridad Auditoría

Políticas de IAM

Utilice políticas para limitar el acceso a Block Volume.

Una política especifica quién puede acceder a los recursos de Oracle Cloud Infrastructure y cómo. Para obtener más información, consulte Funcionamiento de las políticas.

Asigne a un grupo los privilegios mínimos necesarios para realizar sus responsabilidades. Cada política tiene un verbo que describe qué acciones puede realizar el grupo. Desde la menor cantidad de acceso hasta el máximo, los verbos disponibles son: inspect, read, use y manage.

Recomendamos que otorgue permisos DELETE a un juego mínimo de usuarios y grupos de IAM. Esta práctica minimiza la pérdida de datos de supresiones involuntarias por parte de usuarios autorizados o de actores maliciosos. Otorgue permisos DELETE solo a los administradores de arrendamiento y compartimento.

Oracle Cloud Infrastructure soporta dos tipos de volúmenes: volúmenes en bloque y volúmenes de inicio. Los volúmenes en bloque permiten ampliar dinámicamente la capacidad de almacenamiento de instancia. Un volumen de inicio contiene la imagen utilizada para iniciar la instancia informática. El servicio IAM agrupa la familia de tipos de recursos de volumen relacionados en un tipo de recurso combinado denominado volume-family.

Asigne acceso con el mínimo de privilegios para usuarios y grupos de IAM a los tipos de recursos en volume-family. Los tipos de recursos de volume-family son volumes, volume-attachments y volume-backups.

  • Los recursos volumes son dispositivos de volúmenes en bloque extraíbles que permiten la expansión dinámica de la capacidad de almacenamiento de instancia o contienen la imagen para iniciar la instancia.
  • Los recursos volume-attachments son anexos entre volúmenes e instancias.
  • Los recursos volume-backups son copias puntuales de los volúmenes que se pueden utilizar para crear volúmenes en bloque o recuperar volúmenes en bloque.
Prevención de la supresión de volúmenes

La siguiente política de ejemplo permite al grupo VolumeUsers realizar todas las acciones en volúmenes y copias de seguridad, excepto su supresión.

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'

Si VolumeUsers no puede desasociar volúmenes de instancias, puede agregar la siguiente política al ejemplo anterior.

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

Para obtener más información sobre las políticas de volumen en bloque y ver más ejemplos, consulte Detalles de los servicios principales.

Cloud Guard

Active Cloud Guard y utilícelo para detectar y responder a problemas de seguridad en Block Volume.

Al detectar un problema, Cloud Guard sugiere acciones correctivas. También puede configurar Cloud Guard para que realice automáticamente determinadas acciones. Cloud Guard incluye las siguientes reglas de detector para Block Volume.

  • El volumen en bloque está cifrado con una clave gestionada por Oracle
  • El volumen en bloque no está asociado

Para obtener una lista de todas las reglas de detector disponibles en Cloud Guard, consulte Referencia de recetas de detector.

Si aún no lo ha hecho, active Cloud Guard y configúrelo para supervisar los compartimentos que contienen los recursos. Puede configurar destinos de Cloud Guard para examinar todo el arrendamiento (compartimento raíz y todos los subcompartimentos) o para comprobar solo compartimentos específicos. Consulte Introducción a Cloud Guard.

Después de activar Cloud Guard, puede ver y resolver los problemas de seguridad detectados. Consulte Processing Reported Problems.

Security Zones

El uso de Security Zones garantiza que los recursos de Block Volume cumplan las mejores prácticas de seguridad.

Una zona de seguridad está asociada a uno o más compartimentos y una receta de zona de seguridad. Al crear y actualizar recursos en el compartimento de una zona de seguridad, Oracle Cloud Infrastructure valida estas operaciones con respecto a la lista de políticas de zona de seguridad de la receta. Si se infringe alguna política de la receta, se deniega la operación. Las siguientes políticas de zona de seguridad están disponibles para los recursos de Block Volume.

  • 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

Para obtener una lista de todas las políticas de zonas de seguridad, consulte Security Zone Policies.

Para mover los recursos existentes a un compartimento que está en una zona de seguridad, los recursos deben cumplir todas las políticas de zona de seguridad de la receta de la zona. Del mismo modo, los recursos de una zona de seguridad no se pueden mover a un compartimento fuera de la zona de seguridad porque podría ser menos seguro. Consulte Gestión de zonas de seguridad.

cifrado de datos

El servicio Block Volume siempre cifra todos los volúmenes en bloque, los volúmenes de inicio y las copias de seguridad de volúmenes en reposo mediante el algoritmo del estándar de cifrado avanzado (AES) con cifrado de 256 bits. Puede utilizar una clave de cifrado proporcionada por Oracle o una clave personalizada en el servicio Vault. También puede cifrar los volúmenes de datos mediante herramientas como dm-crypt, veracrypt y Bit-Locker.

Por defecto, todos los volúmenes y sus copias de seguridad se cifran con las claves de cifrado proporcionadas por Oracle. Cada vez que se clona o restaura un volumen a partir de una copia de seguridad, se le asigna una nueva clave de cifrado única.

Cifrado de volúmenes con el servicio Vault

Aunque las claves de cifrado por defecto se pueden generar automáticamente al crear determinados recursos de Oracle Cloud Infrastructure, recomendamos que cree y gestione sus propias claves de cifrado personalizadas en el servicio Almacén.

Un almacén es una entidad lógica que almacena las claves de cifrado que se utilizan para proteger los datos. Según el modo de protección, las claves se almacenan en el servidor o se almacenan en módulos de seguridad de hardware (HSM) duraderos y de alta disponibilidad. Nuestros HSM cumplen con la certificación de seguridad FIPS 140-2 Security Level 3. Consulte Gestión de almacenes y Gestión de claves.

Cree y rote claves de cifrado en el servicio Vault para proteger sus recursos en Block Volume. Consulte Creating a Block Volume y Assigning a Key to a Block Volume.

A cada clave de cifrado maestra se le asigna automáticamente una versión de clave. Al rotar una clave, el servicio Vault genera una nueva versión de clave. La rotación periódica de claves limita la cantidad de datos cifrados o firmados por una versión de clave. Si en algún momento se incluye una clave, la rotación de claves reduce el riesgo para los datos. Consulte Gestión de claves.

Recomendamos que utilice políticas de IAM para limitar estrictamente la creación, rotación y supresión de claves de cifrado. Consulte Detalles para el servicio Vault.

Cifrado de volúmenes no raíz con dm-crypt

dm-crypt es un mecanismo de cifrado en el nivel de núcleo (parte del marco de Linux devicemapper) para proporcionar volúmenes cifrados. cifra los datos transferidos del sistema de archivos (por ejemplo, ext4 y NTFS) y los almacena en un dispositivo de almacenamiento con el formato Linux Unified Key Setup (LUKS).

Los volúmenes cifrados se pueden almacenar en un disco, una partición de disco, un volumen lógico o un almacenamiento con copia de seguridad en archivo creados mediante dispositivos de loopback. Cryptsetup es la utilidad de nivel de usuario utilizada para gestionar dm-crypt y para cifrar particiones y archivos. dm-crypt utiliza las API crypto de Linux para las rutinas de cifrado.

  1. Asocie el volumen de almacenamiento de bloques a una instancia (por ejemplo, /dev/sdb)
  2. Formatee /dev/sdb para el cifrado LUKS. Introduzca la frase de contraseña de LUKS cuando se le solicite. La contraseña se utiliza para cifrar la clave maestra de LUKS utilizada para cifrar el volumen.
    cryptsetup -y luksFormat /dev/sdb
  3. Verifique que el formato de LUKS es correcto.
    cryptsetup isLuks /dev/sdb && echo Success
  4. Obtenga la información de cifrado del dispositivo.
    cryptsetup luksDump /dev/sdb
  5. Obtenga el UUID de LUKS del dispositivo. El valor de UUID se utiliza para configurar /etc/crypttab.
    cryptsetup luksUUID /dev/sdb
  6. Cree un contenedor de LUKS con el nombre de dispositivo, dev_name. Este comando también crea un nodo de dispositivo, /dev/mapper/<dev_name>.
    cryptsetup luksOpen /dev/sdb <dev_name>
  7. Obtenga información sobre el dispositivo asignado.
    dmsetup info <dev_name>
  8. Formatee el nodo de dispositivo como sistema de archivos ext4.
    sudo mkfs -t ext4 /dev/sdb 
  9. Monte el nodo de dispositivo.
    mount /dev/mapper/<dev_name> /home/encrypt_fs
  10. Agregue una entrada a /etc/crypttab.
    <dev_name> UUID=<LUKS UUID of /dev/sdb> none

    Todos los archivos copiados en /home/encrypt_fs son LUKS los cifra.

  11. Agregue un archivo de claves a un lote de claves disponible del volumen cifrado. Este archivo de claves se puede utilizar para acceder al volumen cifrado.
    dd if=/dev/urandom of=$HOME/keyfile bs=32 count=1
    chmod 600 $HOME/keyfile
    cryptsetup luksAddKey /dev/sdb ~/keyfile
  12. Verifique el estado de cifrado de los archivos.
    cryptsetup status /home/encrypt_fs
  13. Desmonte una vez que haya terminado.
    umount /home/encrypt_fs
    cryptsetup luksClose <dev_name>

Si necesita acceder al volumen cifrado:

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

Si pierde el archivo de claves o si el archivo de claves o la frase de contraseña están dañados, no podrá descifrar el volumen cifrado. El resultado es una pérdida permanente de datos. Recomendamos almacenar copias duraderas del archivo de claves en un host local.

Montaje remoto de volúmenes de datos cifrados con dm-crypt

En los siguientes pasos se supone que el archivo de claves está en un host local (SRC_IP) y que <OCI_SSH_KEY> es la clave privada SSH de la instancia.

  1. Copie el archivo de claves del host local en una instancia.
    scp -i <OCI_SSH_KEY> keyfile opc@<SRC_IP>:/home/opc
  2. Abra el volumen cifrado.
    ssh i <OCI_SSH_KEY> opc@<SRC_IP> "cryptsetup luksOpen /dev/sdb <dev_name> --key-file=/home/opc/keyfile"
  3. Monte el volumen.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "mount /dev/mapper/<dev_name> /home/encrypt_fs"
  4. Realice operaciones en los datos en el volumen montado.
  5. Desmonte el volumen cifrado.
    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. Suprima el archivo de claves de la instancia.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "\rm -f /home/opc/keyfile"

Durabilidad de datos

Realice copias de seguridad periódicas de los datos en Block Volume. Recomendamos que otorgue a un juego mínimo de usuarios y grupos permiso para suprimir copias de seguridad.

Para minimizar la pérdida de datos causada por supresiones o daños, recomendamos realizar copias de seguridad periódicas de los volúmenes. Oracle Cloud Infrastructure permite copias de seguridad programadas automatizadas. Para obtener más información sobre las copias de seguridad programadas, consulte Copias de seguridad basadas en políticas.

Para minimizar la pérdida de datos causada por supresiones involuntarias por un usuario autorizado o por supresiones maliciosas, le recomendamos que otorgue permisos VOLUME_DELETE, VOLUME_ATTACHMENT_DELETE y VOLUME_BACKUP_DELETE a un juego mínimo posible de usuarios y grupos de IAM. Otorgue permisos DELETE solo a administradores de arrendamiento y compartimento.

Auditoría

Busque logs de acceso y otros datos de seguridad para Block Volume.

El servicio Auditoría registra automáticamente todas las llamadas de API a los recursos de Oracle Cloud Infrastructure. Puede lograr sus objetivos de seguridad y conformidad mediante el servicio Auditoría para supervisar toda la actividad de los usuarios dentro de su arrendamiento. Dado que todas las llamadas a la consola, SDK y la línea de comandos (CLI) pasan por nuestras API, se incluye toda la actividad de esos orígenes. Los registros de auditoría están disponibles mediante una API de consulta autenticada y filtrable o se pueden recuperar como archivos por lotes de Object Storage. El contenido del log de auditoría incluye la actividad que se produjo, el usuario que la inició, la fecha y la hora de la solicitud, así como la IP de origen, el agente de usuario y las cabeceras HTTP de la solicitud. Consulte Visualización de eventos del log de auditoría.

Ejemplo de log de auditoría
{
  "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"
  }
}

Si ha activado Cloud Guard en su arrendamiento, informa de cualquier actividad de usuario que suponga posibles problemas de seguridad. Al detectar un problema, Cloud Guard sugiere acciones correctivas. También puede configurar Cloud Guard para que realice automáticamente determinadas acciones. Consulte Getting Started with Cloud Guard y Processing Reported Problems.