Sécurisation de Block Volume

Cette rubrique fournit des informations et des recommandations de sécurité pour Block Volume.

Le service Block Volume permet de provisionner et de gérer les volumes de stockage de blocs de façon dynamique. Vous pouvez créer, attacher, connecter et déplacer des volumes, ainsi que modifier les performances de volume, si nécessaire, afin de répondre à vos exigences en matière de stockage, de performances et d'application. Une fois qu'un volume est attaché et connecté à une instance, vous pouvez l'utiliser comme un disque dur classique. Vous pouvez également déconnecter un volume et l'attacher à une autre instance sans perdre de données.

Responsabilités en matière de sécurité

Pour utiliser Block Volume en toute sécurité, découvrez vos responsabilités en matière de sécurité et de conformité.

En général, Oracle assure la sécurité de l'infrastructure et des opérations sur le cloud, par exemple les contrôles d'accès des opérateurs de cloud et l'application de patches de sécurité à l'infrastructure. Vous êtes responsable de la configuration sécurisée de vos ressources cloud. La sécurité dans le cloud est une responsabilité partagée entre vous et Oracle.

Oracle est responsable des exigences de sécurité suivantes :

  • Sécurité physique : Oracle est en charge de la protection de l'infrastructure globale qui exécute tous les services offerts par Oracle Cloud Infrastructure. Cette infrastructure comprend le matériel, les logiciels, les fonctions de réseau et les installations qui exécutent les services Oracle Cloud Infrastructure.

Vos responsabilités en matière de sécurité sont décrites sur cette page et englobent les domaines suivants :

  • Contrôle d'accès : limitez au maximum les privilèges. Les utilisateurs doivent disposer uniquement des droits d'accès nécessaires pour faire leur travail.
  • Cryptage et confidentialité : utilisez des clés de cryptage et des clés secrètes pour protéger vos données et vous connecter à des ressources sécurisées. Faites pivoter ces clés régulièrement.

Tâches initiales liées à la sécurité

Utilisez cette liste de contrôle afin d'identifier les tâches que vous effectuez pour sécuriser Block Volume dans une nouvelle location Oracle Cloud Infrastructure.

Tâche Informations supplémentaires
Employer des stratégies IAM pour accorder l'accès aux utilisateurs et aux ressources Stratégies IAM
Crypter les ressources à l'aide d'une clé personnalisée Cryptage des données
Activation et configuration de Cloud Guard (facultatif) Cloud Guard
Création d'une zone de sécurité (facultatif) Security Zones

Tâches de routine liées à la sécurité

Après vous être familiarisé avec Block Volume, utilisez cette liste de contrôle afin d'identifier les tâches de sécurité que nous vous recommandons d'effectuer régulièrement.

Tâche Informations supplémentaires
Effectuer une rotation des clés de cryptage Cryptage des données
Répondre aux problèmes détectés dans Cloud Guard Cloud Guard
Réalisation de sauvegardes régulières Durabilité des données
Réalisation d'un audit de sécurité Audit en cours

Stratégies IAM

Utilisez des stratégies pour limiter l'accès à Block Volume.

Une stratégie précise qui peut accéder aux ressources Oracle Cloud Infrastructure et comment. Pour plus d'informations, reportez-vous à Fonctionnement des stratégies.

Affectez à un groupe les privilèges minimaux qui sont requis pour assumer ses responsabilités. Chaque stratégie comporte un verbe décrivant les actions que le groupe est autorisé à effectuer. Les verbes disponibles sont les suivants, de l'accès le plus restreint à l'accès le plus étendu : inspect, read, use et manage.

Nous vous recommandons d'accorder les droits d'accès DELETE à un ensemble minimal d'utilisateurs et de groupes IAM. Cette pratique minimise la perte de données due à des suppressions involontaires par des utilisateurs autorisés ou par des acteurs malveillants. Accordez le droit d'accès DELETE uniquement aux administrateurs de location et de compartiment.

Oracle Cloud Infrastructure prend en charge deux types de volume : les volumes de blocs et les volumes d'initialisation. Les volumes de blocs permettent de développer de manière dynamique la capacité de stockage d'une instance. Un volume d'initialisation contient l'image utilisée pour initialiser l'instance de calcul. Le service IAM regroupe la famille des types de ressource de volume associés en un type combiné de type de ressource nommé volume-family.

Affectez aux utilisateurs et aux groupes IAM l'accès du moindre privilège aux types de ressource dans volume-family. Les types de ressource dans volume-family sont volumes,volume-attachments et volume-backups.

  • Les ressources volumes sont des unités de volume de blocs détachables qui permettent le développement dynamique de la capacité de stockage d'une instance ou qui contiennent l'image d'initialisation de l'instance.
  • Les ressources volume-attachments sont des attachements entre des volumes et des instances.
  • Les ressources volume-backups sont des copies ponctuelles de volumes qui peuvent être utilisées pour créer des volumes de blocs ou récupérer des volumes de blocs.
Empêcher la suppression des volumes

L'exemple de stratégie ci-dessous autorise le groupe VolumeUsers à effectuer toutes les actions possibles sur les volumes et les sauvegardes, sauf l'action de suppression.

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 le groupe VolumeUsers ne peut pas détacher les volumes des instances, vous pouvez ajouter la stratégie suivante à l'exemple précédent.

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

Pour plus d'informations sur les stratégies Block Volume et pour consulter d'autres exemples, reportez-vous à Détails des services de base.

Cloud Guard

Activez Cloud Guard et utilisez-le pour détecter et résoudre les problèmes de sécurité dans Block Volume.

Lors de la détection d'un problème, Cloud Guard suggère des actions correctives. Vous pouvez également configurer Cloud Guard pour qu'il effectue automatiquement certaines actions. Cloud Guard inclut les règles de détecteur suivantes pour Block Volume.

  • Le volume de blocs est crypté avec une clé gérée par Oracle
  • Block Volume n'est pas attaché

Pour obtenir la liste de toutes les règles de détecteur disponibles dans Cloud Guard, reportez-vous à Référence de recette de détecteur.

Si vous ne l'avez pas encore fait, activez Cloud Guard et configurez-le pour surveiller les compartiments qui contiennent vos ressources. Vous pouvez configurer des cibles Cloud Guard pour examiner l'ensemble de votre location (compartiment racine et tous les sous-compartiments) ou pour vérifier uniquement des compartiments spécifiques. Reportez-vous à Introduction à Cloud Guard.

Après avoir activé Cloud Guard, vous pouvez visualiser et résoudre les problèmes de sécurité détectés. Reportez-vous à la section Processing Reported Problems.

Security Zones

L'utilisation de Security Zones garantit que vos ressources dans Block Volume sont conformes aux meilleures pratiques de sécurité.

Une zone de sécurité est associée à des compartiments et à une recette de zone de sécurité. Lorsque vous créez et mettez à jour des ressources dans le compartiment d'une zone de sécurité, Oracle Cloud Infrastructure valide ces opérations par rapport à la liste des stratégies de zone de sécurité dans la recette. Si une stratégie de la recette est violée, l'opération est refusée. Les stratégies de zone de sécurité suivantes sont disponibles pour les ressources dans 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

Pour obtenir la liste de toutes les stratégies de zone de sécurité, reportez-vous à Stratégies de zone de sécurité.

Pour déplacer des ressources existantes vers un compartiment se trouvant dans une zone de sécurité, les ressources doivent respecter toutes les stratégies de zone de sécurité de la recette de la zone. De même, les ressources d'une zone de sécurité ne peuvent pas être déplacées vers un compartiment en dehors de la zone car il peut être moins sécurisé. Reportez-vous à la section Managing Security Zones.

Cryptage des données

Le service Block Volume crypte toujours tous les volumes de blocs, les volumes d'initialisation et les sauvegardes de volume au repos à l'aide de l'algorithme AES (Advanced Encryption Standard) avec un cryptage de 256 bits. Vous pouvez utiliser une clé de cryptage fournie par Oracle ou une clé personnalisée dans le service Vault. Vous pouvez également crypter les volumes de données à l'aide d'outils tels que dm-crypt, veracrypt et Bit-Locker.

Par défaut, tous les volumes et leurs sauvegardes sont cryptés à l'aide des clés de cryptage fournies par Oracle. Chaque fois qu'un volume est cloné ou restauré à partir d'une sauvegarde, une nouvelle clé de cryptage unique lui est affectée.

Cryptage de volumes avec le service Vault

Bien que les clés de cryptage par défaut puissent être générées automatiquement lorsque vous créez certaines ressources Oracle Cloud Infrastructure, nous vous recommandons de créer et de gérer vos propres clés de cryptage personnalisées dans le service Vault.

Un coffre est une entité logique qui stocke les clés de cryptage que vous utilisez pour protéger vos données. Selon le mode de protection, les clés sont stockées sur le serveur ou sur des modules de sécurité HSM hautement disponibles et durables. Nos HSM respectent la certification de sécurité de niveau 3 FIPS (Federal Information Processing Standards) 140-2. Reportez-vous à Gestion des coffres et à Gestion des clés.

Créez et effectuez une rotation des clés de cryptage dans le service Vault pour protéger vos ressources dans Block Volume. Reportez-vous à Création d'un volume de blocs et à Affectation d'une clé à un volume de blocs.

Une version de clé est automatiquement affectée à chaque clé de cryptage maître. Lorsque vous effectuez une rotation de clé, le service Vault génère une nouvelle version de clé. La rotation périodique des clés limite la quantité de données cryptées ou signées par une version de clé. Si une clé est incluse, la rotation des clés réduit les risques pour vos données. Reportez-vous à Gestion des clés.

Nous vous recommandons d'utiliser des stratégies IAM pour limiter strictement la création, la rotation et la suppression des clés de cryptage. Reportez-vous à Détails du service Vault.

Cryptage des volumes non racines avec dm-crypt

dm-crypt est un mécanisme de cryptage au niveau du noyau (élément de la structure Linux devicemapper) qui fournit des volumes cryptés. Il crypte les données transmises à partir du système de fichiers (par exemple, ext4 et NTFS) et les stocke sur un dispositif de stockage au format LUKS (Linux Unified Key Setup).

Les volumes cryptés peuvent être stockés sur un disque complet, une partition de disque, un volume logique ou un stockage sur fichiers créé à l'aide de dispositifs loopback. Cryptsetup est l'utilitaire de niveau utilisateur permettant de gérer dm-crypt et de crypter les partitions et les fichiers. dm-crypt utilise les API crypto Linux pour les routines de cryptage.

  1. Attachez un volume de stockage de blocs à une instance (par exemple, /dev/sdb)
  2. Formatez /dev/sdb pour un cryptage LUKS. Saisissez la phrase de passe LUKS lorsque vous y êtes invité. La phrase de passe crypte la clé maître LUKS utilisée pour le cryptage du volume.
    cryptsetup -y luksFormat /dev/sdb
  3. Vérifiez que le formatage LUKS est effectué.
    cryptsetup isLuks /dev/sdb && echo Success
  4. Obtenez les informations de cryptage sur le dispositif.
    cryptsetup luksDump /dev/sdb
  5. Obtenez l'UUID LUKS du dispositif. La valeur d'UUID permet de configurer le fichier /etc/crypttab.
    cryptsetup luksUUID /dev/sdb
  6. Créez un conteneur LUKS portant le nom de dispositif dev_name. Cette commande crée également un noeud de dispositif, /dev/mapper/<dev_name>.
    cryptsetup luksOpen /dev/sdb <dev_name>
  7. Obtenez les informations sur le dispositif mis en correspondance.
    dmsetup info <dev_name>
  8. Mettez en forme le noeud de dispositif en tant que système de fichiers ext4.
    sudo mkfs -t ext4 /dev/sdb 
  9. Montez le noeud de dispositif.
    mount /dev/mapper/<dev_name> /home/encrypt_fs
  10. Ajoutez une entrée à /etc/crypttab.
    <dev_name> UUID=<LUKS UUID of /dev/sdb> none

    Tous les fichiers copiés dans /home/encrypt_fs sont des LUKS qui les chiffrent.

  11. Ajoutez un fichier de clés à un bloc de clés disponible sur le volume crypté. Ce fichier de clés permet d'accéder au volume crypté.
    dd if=/dev/urandom of=$HOME/keyfile bs=32 count=1
    chmod 600 $HOME/keyfile
    cryptsetup luksAddKey /dev/sdb ~/keyfile
  12. Vérifiez le statut de cryptage des fichiers.
    cryptsetup status /home/encrypt_fs
  13. Démontez le volume une fois que vous avez terminé.
    umount /home/encrypt_fs
    cryptsetup luksClose <dev_name>
                                    

Si vous devez accéder au volume crypté :

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

Si vous perdez le fichier de clés, ou si le fichier de clés ou la phrase de passe est endommagé, vous ne pouvez pas décrypter le volume crypté. Il en résulte une perte permanente de données. Nous vous recommandons de stocker des copies durables du fichier de clés sur un hôte sur site.

Montage à distance de volumes de données chiffrés avec dm-crypt

Les étapes suivantes supposent que le fichier de clés est sur un hôte on-premise (SRC_IP) et que <OCI_SSH_KEY> est la clé privée SSH de l'instance.

  1. Copiez le fichier de clés de l'hôte sur site vers une instance.
    scp -i <OCI_SSH_KEY> keyfile opc@<SRC_IP>:/home/opc
  2. Ouvrez le volume crypté.
    ssh i <OCI_SSH_KEY> opc@<SRC_IP> "cryptsetup luksOpen /dev/sdb <dev_name> --key-file=/home/opc/keyfile"
  3. Montez le volume.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "mount /dev/mapper/<dev_name> /home/encrypt_fs"
  4. Effectuez des opérations sur des données du volume monté.
  5. Démontez le volume crypté.
    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. Supprimez le fichier de clés de l'instance.
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "\rm -f /home/opc/keyfile"

Durabilité des données

Effectuez des sauvegardes régulières de vos données dans Block Volume. Nous vous recommandons d'autoriser au moins un ensemble d'utilisateurs et de groupes à supprimer des sauvegardes.

Pour réduire les pertes de données causées par des suppressions ou des altérations, nous vous recommandons d'effectuer des sauvegardes périodiques des volumes. Oracle Cloud Infrastructure autorise les sauvegardes programmées automatisées. Pour plus d'informations sur les sauvegardes programmées, reportez-vous à Sauvegardes basées sur une stratégie.

Pour minimiser les pertes de données causées par des suppressions par inadvertance par un utilisateur autorisé ou par des suppressions malveillantes, nous vous recommandons d'accorder à un ensemble minimal d'utilisateurs et de groupes IAM les droits d'accès VOLUME_DELETE, VOLUME_ATTACHMENT_DELETE et VOLUME_BACKUP_DELETE. Accordez le droit d'accès DELETE uniquement aux administrateurs de location et de compartiment.

Audit en cours

Localisez les journaux d'accès et d'autres données de sécurité pour Block Volume.

Le service Audit enregistre automatiquement tous les appels d'API vers les ressources Oracle Cloud Infrastructure. Vous pouvez atteindre vos objectifs de sécurité et de conformité en utilisant le service Audit pour surveiller l'ensemble de l'activité utilisateur dans votre location. Comme tous les appels de la console, du kit SDK et de l'interface de ligne de commande passent par nos API, toutes les activités de ces sources sont incluses. Les enregistrements d'audit sont disponibles via une API de requête filtrable authentifiée, ou ils peuvent être extraits en tant que fichiers en batch à partir d'Object Storage. Le contenu du journal d'audit inclut l'activité survenue, l'utilisateur qui l'a lancée, la date et l'heure de la demande, ainsi que l'adresse IP source, l'agent utilisateur et les en-têtes HTTP de la demande. Reportez-vous à Visualisation des événements de journal d'audit.

Exemple de journal d'audit
{
  "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 vous avez activé Cloud Guard dans votre location, il signale toutes les activités utilisateur susceptibles de poser des problèmes de sécurité. Lors de la détection d'un problème, Cloud Guard suggère des actions correctives. Vous pouvez également configurer Cloud Guard pour qu'il effectue automatiquement certaines actions. Reportez-vous à Introduction à Cloud Guard et à Traitement des problèmes signalés.