Protegendo o Serviço Block Volume

Este tópico fornece informações de segurança e recomendações para o serviço Block Volume.

O serviço Block Volume permite provisionar e gerenciar dinamicamente os volumes de armazenamento em bloco . Você pode criar, anexar, conectar e mover volumes, bem como alterar o desempenho do volume, conforme necessário, para atender aos requisitos de armazenamento, de desempenho e do aplicativo. Após anexar e conectar um volume a uma instância, você pode usar o volume como disco rígido comum. Também é possível desconectar um volume e anexá-lo a outra instância sem perda de dados.

Responsabilidades de Segurança

Para usar o Block Volume de forma segura, saiba mais sobre suas responsabilidades de segurança e conformidade.

Em geral, a Oracle fornece segurança de infraestrutura e operações na nuvem, como controles de acesso do operador de nuvem e aplicação de patch de segurança da infraestrutura. Você é responsável por configurar com segurança seus recursos de nuvem. A segurança na nuvem é uma responsabilidade compartilhada entre você e a Oracle.

A Oracle é responsável pelos seguintes requisitos de segurança:

  • Segurança Física: A Oracle é responsável por proteger a infraestrutura global que executa todos os serviços oferecidos no Oracle Cloud Infrastructure. Essa infraestrutura consiste em hardware, software, redes e equipamentos que executam os serviços do Oracle Cloud Infrastructure.

Suas responsabilidades de segurança estão descritas nesta página, que incluem as seguintes áreas:

  • Controle de Acesso: Limite os privilégios o máximo possível. Os usuários devem receber apenas o acesso necessário para executar seu trabalho.
  • Criptografia e Confidencialidade: Use chaves de criptografia e segredos para proteger seus dados e estabelecer conexão com recursos protegidos. Gire essas chaves regularmente.

Tarefas iniciais de segurança

Use esta lista de verificação para identificar as tarefas que você executa para proteger o Volume em Blocos em uma nova tenancy do Oracle Cloud Infrastructure.

Tarefa Mais Informações
Usar políticas de IAM para conceder acesso a usuários e recursos Políticas do serviço IAM
Criptografar os recursos usando uma chave personalizada Criptografia de Dados
Ativar e configurar o Cloud Guard (opcional) Cloud Guard
Criar uma zona de segurança (opcional) Security Zones

Tarefas de Segurança de Rotina

Depois de se familiarizar com o serviço Block Volume, use esta lista de verificação para identificar as tarefas de segurança que recomendamos que você execute regularmente.

Tarefa Mais Informações
Rotacionar chaves de criptografia Criptografia de Dados
Responder aos problemas detectados no Cloud Guard Cloud Guard
Faça backups regulares Durabilidade dos Dados
Execute uma auditoria de segurança Auditando

Políticas do Serviço IAM

Use políticas para limitar o acesso ao Block Volume.

Uma política especifica quem pode acessar os recursos do Oracle Cloud Infrastructure e como. Para obter mais informações, consulte Como as Políticas Funcionam.

Designe a um grupo o mínimo de privilégios necessários para executar suas responsabilidades. Cada política tem um verbo que descreve quais ações o grupo tem permissão para executar. Do menor acesso ao máximo, os verbos disponíveis são: inspect, read, use e manage.

Recomendamos que você conceda permissões DELETE a um conjunto mínimo de usuários e grupos do IAM. Esta prática minimiza a perda de dados de exclusões inadvertidas por usuários autorizados ou por agentes maliciosos. Só conceda permissões DELETE aos administradores de tenancies e compartimentos.

O Oracle Cloud Infrastructure suporta dois tipos de volumes: volumes em blocos e volumes de inicialização. Os volumes em blocos permitem que a capacidade de armazenamento da instância seja expandida dinamicamente. Um volume de inicialização contém a imagem usada para inicializar a instância de computação. O serviço IAM grupo a família de tipos de recursos de volumes relacionados em um tipo de recurso combinado chamado volume-family.

Designe o acesso de privilégio mínimo para grupos e usuários do serviço IAM aos tipos de recursos em volume-family. Os tipos de recursos em volume-family são volumes,volume-attachments e volume-backups.

  • Os recursos volumes são dispositivos de volume em blocos destacáveis que permitem a expansão dinâmica da capacidade de armazenamento da instância ou que contêm a imagem para inicializar a instância.
  • Os recursos volume-attachments são anexos entre volumes e instâncias.
  • Os recursos volume-backups são cópias pontuais de volumes que podem ser usados para criar volumes em blocos ou recuperar volumes em blocos.
Evitar a Exclusão de Volumes

O exemplo de política a seguir permite que o grupo VolumeUsers execute todas as ações em volumes e backups, exceto exclusões.

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 não puder desanexar volumes de instâncias, você poderá adicionar a política a seguir ao exemplo anterior.

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

Para obter mais informações sobre políticas de Volume em Blocos e exibir mais exemplos, consulte Detalhes dos Serviços Principais.

Cloud Guard

Ative o Cloud Guard e use-o para detectar e responder a problemas de segurança no Block Volume.

Ao detectar um problema, o Cloud Guard sugere ações corretivas. Você também pode configurar o Cloud Guard para executar automaticamente determinadas ações. O Cloud Guard inclui as seguintes regras do detector para Volume em Blocos.

  • O volume em blocos é criptografado com a chave gerenciada pela Oracle
  • O Serviço Block Volume não está anexado

Para obter uma lista de todas as regras do detector disponíveis no Cloud Guard, consulte Referência de Receita do Detector.

Se você ainda não tiver feito isso, ative o Cloud Guard e configure-o para monitorar os compartimentos que contêm seus recursos. Você pode configurar destinos do Cloud Guard para examinar toda a sua tenancy (compartimento raiz e todos os subcompartimentos) ou para verificar apenas compartimentos específicos. Consulte Conceitos Básicos do Cloud Guard.

Depois de ativar o Cloud Guard, você poderá exibir e resolver problemas de segurança detectados. Consulte Processando Problemas Reportados.

Zonas de Segurança

O uso de Zonas de Segurança garante que seus recursos no Block Volume estejam em conformidade com as melhores práticas de segurança.

Uma zona de segurança está associada a um ou mais compartimentos e a uma receita de zona de segurança. Quando você criar e atualizar recursos no compartimento de uma zona de segurança, o Oracle Cloud Infrastructure validará essas operações de acordo com a lista de políticas de zona de segurança na receita. Se qualquer política na receita for violada, a operação será negada. As políticas de zona de segurança a seguir estão disponíveis para recursos no 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 obter uma lista de todas as políticas de zona de segurança, consulte Políticas de Zona de Segurança.

Para mover recursos existentes para um compartimento que esteja em uma zona de segurança, os recursos devem estar em conformidade com todas as políticas de zona de segurança na receita da zona. Da mesma forma, os recursos de uma zona de segurança não podem ser movidos para um compartimento fora da zona de segurança porque ele pode ser menos seguro. Consulte Gerenciando Zonas de Segurança.

Criptografia de Dados

O serviço Block Volume sempre criptografa todos os volumes em blocos, volumes de inicialização e backups de volume em repouso usando o algoritmo AES (Advanced Encryption Standard) com criptografia de 256 bits. Você pode usar uma chave de criptografia fornecida pela Oracle ou uma chave personalizada no serviço Vault. Você também pode criptografar seus volumes de dados usando ferramentas como dm-crypt, veracrypt e Bit-Locker.

Por padrão, todos os volumes e seus backups são criptografados usando as chaves de criptografia fornecidas pela Oracle. Cada vez que um volume é clonado ou restaurado de um backup, ele recebe uma nova chave de criptografia exclusiva.

Criptografando Volumes com o Serviço Vault

Embora as chaves de criptografia padrão possam ser geradas automaticamente quando você cria determinados recursos do Oracle Cloud Infrastructure, recomendamos que você crie e gerencie suas próprias chaves de criptografia personalizadas no serviço Vault.

Um vault é uma entidade lógica que armazena as chaves de criptografia usadas para proteger seus dados. Dependendo do modo de proteção, as chaves são armazenadas no servidor ou são armazenadas em HSMs (hardware security modules) de alta disponibilidade e durabilidade. Nossos HSMs atendem à certificação de segurança FIPS 140-2 Security Level 3. Consulte Gerenciando Vaults e Gerenciando Chaves.

Crie e rotacione chaves de criptografia no serviço Vault para proteger seus recursos no Block Volume. Consulte Criando um Volume em Blocos e Designando uma Chave a um Volume em Blocos.

Cada chave mestra de criptografia recebe automaticamente uma versão de chave. Quando você rotaciona uma chave, o serviço Vault gera uma nova versão da chave. A rotação periódica de chaves limita o volume de dados criptografados ou assinados por uma versão de chave. Se uma chave for composta, a rotação de chave reduzirá o risco para seus dados. Consulte Gerenciando Chaves.

Recomendamos que você use políticas do IAM para limitar estritamente a criação, a rotação e a exclusão de chaves de criptografia. Consulte Detalhes do Serviço Vault.

Criptografando Volumes Não Raiz com dm-crypt

dm-crypt é um mecanismo de criptografia no nível do kernel (parte do framework devicemapper do Linux) para fornecer volumes criptografados. Ele criptografa os dados transmitidos pelo sistema de arquivos (por exemplo, ext4 e NTFS) e os armazena em um dispositivo de armazenamento no formato LUKS (Linux Unified Key Setup).

Os volumes criptografados podem ser armazenados em um disco completo, em uma partição de disco, em um volume lógico ou em um armazenamento de backup de arquivos usando dispositivos loopback. Cryptsetup é o utilitário de nível do usuário usado para gerenciar dm-crypt e para criptografar partições e arquivos. dm-crypt usa as APIs crypto do Linux para rotinas de criptografia.

  1. Anexe o volume de armazenamento em blocos a uma instância (por exemplo, /dev/sdb)
  2. Formate /dev/sdb para criptografia LUKS. Insira a frase-senha do LUKS quando solicitado. A frase-senha é usada para criptografar a chave mestra do LUKS usada para criptografar o volume.
    cryptsetup -y luksFormat /dev/sdb
  3. Verifique se a formatação LUKS foi bem-sucedida.
    cryptsetup isLuks /dev/sdb && echo Success
  4. Obtenha informações de criptografia sobre o dispositivo.
    cryptsetup luksDump /dev/sdb
  5. Obtenha o UUID LUKS do dispositivo. O valor UUID é usado para configurar /etc/crypttab
    cryptsetup luksUUID /dev/sdb
  6. Crie um contêiner LUKS com o nome do dispositivo, dev_name. Esse comando também cria um nó de dispositivo, /dev/mapper/<dev_name>.
    cryptsetup luksOpen /dev/sdb <dev_name>
  7. Obtenha informações sobre o dispositivo mapeado.
    dmsetup info <dev_name>
  8. Formate o nó de dispositivo como sistema de arquivos ext4.
    sudo mkfs -t ext4 /dev/sdb 
  9. Monte o nó do dispositivo.
    mount /dev/mapper/<dev_name> /home/encrypt_fs
  10. Adicione uma entrada a /etc/crypttab.
    <dev_name> UUID=<LUKS UUID of /dev/sdb> none

    Todos os arquivos copiados para /home/encrypt_fs são criptografados por LUKS.

  11. Adicione um arquivo de chaves a um slot de chave disponível do volume criptografado. Esse arquivo de chaves pode ser usado para acessar o volume criptografado.
    dd if=/dev/urandom of=$HOME/keyfile bs=32 count=1
    chmod 600 $HOME/keyfile
    cryptsetup luksAddKey /dev/sdb ~/keyfile
  12. Verifique o status de criptografia dos arquivos.
    cryptsetup status /home/encrypt_fs
  13. Desmonte quando finalizar.
    umount /home/encrypt_fs
    cryptsetup luksClose <dev_name>

Se você precisar acessar o volume criptografado:

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

Se você perder o arquivo de chaves, ou se o arquivo de chaves ou a frase-senha for corrompido(a), não será possível decriptografar o volume criptografado. O resultado é uma perda permanente de dados. Recomendamos que você armazene cópias duráveis do arquivo de chaves em um host local.

Montando remotamente volumes de dados criptografados com dm-crypt

As etapas a seguir supõem que o arquivo de chaves esteja em um host local (SRC_IP) e que <OCI_SSH_KEY> seja a chave privada SSH da instância.

  1. Copie o arquivo de chaves do host local para uma instância.
    scp -i <OCI_SSH_KEY> keyfile opc@<SRC_IP>:/home/opc
  2. Abra o volume criptografado.
    ssh i <OCI_SSH_KEY> opc@<SRC_IP> "cryptsetup luksOpen /dev/sdb <dev_name> --key-file=/home/opc/keyfile"
  3. Monte o volume.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "mount /dev/mapper/<dev_name> /home/encrypt_fs"
  4. Execute operações nos dados do volume montado.
  5. Desmonte o volume criptografado.
    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. Exclua o arquivo de chaves da instância.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "\rm -f /home/opc/keyfile"

Durabilidade dos Dados

Faça backups regulares de seus dados no Block Volume. Recomendamos que você forneça um conjunto mínimo de usuários e grupos de permissão para excluir backups.

Para minimizar a perda de dados causada por exclusões ou danos, recomendamos que você faça backups periódicos dos volumes. O Oracle Cloud Infrastructure permite backups automatizados programados. Para obter mais informações sobre backups programados, consulte Backups Baseados em Política.

Para minimizar a perda de dados causada por exclusões inadvertidas por um usuário autorizado ou por exclusões maliciosas, recomendamos que você conceda as permissões VOLUME_DELETE, VOLUME_ATTACHMENT_DELETE e VOLUME_BACKUP_DELETE para um conjunto mínimo possível de grupos e usuários do serviço IAM. Conceda permissões DELETE somente aos administradores de tenancy e compartimento.

Auditando

Localize logs de acesso e outros dados de segurança para o Block Volume.

O serviço Audit registra automaticamente todas as chamadas de API para recursos do Oracle Cloud Infrastructure. Você pode atingir suas metas de segurança e conformidade usando o serviço Audit para monitorar todas as atividades do usuário em sua tenancy. Como todas as chamadas da Console, SDK e CLI (linha de comando) passam por nossas APIs, todas as atividades dessas origens são incluídas. Os registros de auditoria estão disponíveis por meio de uma API de consulta filtrável autenticada ou podem ser recuperados como arquivos batch do serviço Object Storage. O conteúdo do log de auditoria inclui a atividade ocorrida, o usuário que a iniciou, a data e a hora da solicitação, bem como o IP de origem, o agente do usuário e cabeçalhos HTTP da solicitação. Consulte Exibindo Eventos de Log de Auditoria.

Exemplo de Log de Auditoria
{
  "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 você tiver ativado o Cloud Guard em sua tenancy, ele reportará quaisquer atividades do usuário que sejam possíveis preocupações de segurança. Ao detectar um problema, o Cloud Guard sugere ações corretivas. Você também pode configurar o Cloud Guard para executar automaticamente determinadas ações. Consulte Conceitos Básicos do Cloud Guard e Processando Problemas Relatados.