Go to main content

Guide RESTful API des systèmes Oracle® ZFS Storage Appliance, version OS8.8.x

Quitter la vue de l'impression

Mis à jour : Août 2021
 
 

Gestion des clés de chiffrement


Remarque -  Le chiffrement est une fonctionnalité sous licence pour certains modèles. Pour plus d'informations, reportez-vous au document "Oracle Software License Agreement ("SLA") and Entitlement for Hardware Systems with Integrated Software Options" (contrat de licence du logiciel Oracle et droits concédés pour les systèmes matériels comprenant des options logicielles intégrées) et au guide "Licensing Information User Manual" correspondant à la version logicielle.

Oracle ZFS Storage Appliance offre un chiffrement transparent des données pour les pools, les projets et les partages individuels (systèmes de fichiers et LUN). L'appareil inclut un keystore local intégré et prend également en charge le chiffrement Oracle Key Manager (OKM) et Key Management Interoperability Protocol (KMIP). Chaque projet ou partage chiffré nécessite une clé d'encapsulation provenant du keystore local, OKM ou KMIP. Les clés de chiffrement des données sont gérées par l'appareil de stockage, stockées de manière permanente et chiffrées par la clé d'encapsulation.

La clé de chiffrement doit être créée avant les pools, projets ou partages chiffrés.

  • Etant donné que le keystore doit être configuré avant que le pool soit créé, vous ne pouvez pas créer un pool chiffré lors de la configuration initiale du système ou après la réinitialisation des paramètres d'usine.

  • Avant de configurer la réplication d'un partage ou d'un projet dans un pool chiffré, assurez-vous que la clé de chiffrement utilisée sur la source est également disponible sur la cible.

Le tableau suivant décrit les demandes d'API RESTful disponibles pour gérer les clés de chiffrement. Dans le tableau, la valeur de keystore est local, okm ou kmip. La valeur de clé correspond à la valeur de la propriété keyname. Les propriétés des clés sont décrites dans Liste des clés de chiffrement.

Table 67  Opérations de clés de chiffrement
Demande
Ajouter au chemin /api/storage/v{1|2}
Description
GET
/encryption/keystore
Enumération de toutes les propriétés keystore.
PUT
/encryption/keystore
Modification des propriétés keystore.
GET
/encryption/keystore/keys
Enumération de toutes les clés keystore.
GET
/encryption/keystore/keys/key
Obtention des détails sur la clé spécifiée.
POST
/encryption/keystore/keys
Création d'une clé.
DELETE
/encryption/keystore/keys/key
Destruction d'une clé.
GET
/encryption/keystore/keys/key/dependents
Liste des partages dépendants de cette clé

Configuration d'un keystore local

Pour configurer un keystore local, définissez la phrase secrète principale. Pour un keystore local, la seule propriété affichable ou modifiable est master_passphrase.

Vérifiez si la propriété master_passphrase est définie :

GET /api/storage/v2/encryption/local HTTP/1.1 

Sortie :

HTTP/1.1 200 OK
Content-Type: application/json

{
    "keystore": {
        "href": "/api/storage/v2/encryption/local",
        "master_passphrase": false,
        "keys": []
    }
}

Indiquez une valeur pour master_passphrase :

PUT /api/storage/v2/encryption/local HTTP/1.1
Host: zfs-storage.example.com:215
Content-Type: application/json
Accept: application/json

{
    "master_passphrase": "passphrase"
}

Vérifiez que la propriété master_passphrase est définie :

GET /api/storage/v2/encryption/local HTTP/1.1

Sortie :

HTTP/1.1 200 OK
Content-Type: application/json

{
    "keystore": {
        "href": "/api/storage/v2/encryption/local",
        "master_passphrase": true,
        "keys": []
    }
}

Configuration d'un keystore OKM

Le tableau suivant décrit les propriétés à définir pour configurer un keystore OKM.

Table 68  Propriétés de keystore OKM
Propriété
Type
Description
agent_id
string
ID d'agent.
registration_pin
string
Cette valeur est fournie par votre responsable de sécurité OKM.
server_addr
string
Adresse IP de votre serveur OKM.

Vérifiez que les propriétés ci-dessus sont définies :

GET /api/storage/v2/encryption/okm HTTP/1.1 

Sortie :

HTTP/1.1 200 OK
Content-Type: application/json

{
    "keystore": {
        "href": "/api/storage/v2/encryption/okm",
        "agent_id": "",
        "registration_pin": false,
        "server_addr": "",
        "keys": []
    }
}

Définissez des valeurs pour agent_id, registration_pin et server_addr :

PUT /api/storage/v2/encryption/okm HTTP/1.1
Host: zfs-storage.example.com:215
Content-Type: application/json
Accept: application/json

{
    "agent_id": "agent-id",
    "registration_pin": "reg-pin",
    "server_addr": "ipaddr"
}

Configuration d'un keystore KMIP

Le keystore KMIP est utilisé conjointement avec les serveurs KMIP, notamment Oracle Key Vault. Oracle Key Vault est un logiciel qui est installé sur un serveur dédié et qui prend en charge la norme OASIS KMIP.

Pour configurer le chiffrement à l'aide de KMIP, téléchargez la clé et les certificats que vous avez reçus de votre administrateur KMIP, comme décrit dans Téléchargement d'une clé ou d'un certificat.

Après avoir téléchargé la clé et les certificats, indiquez le serveur KMIP, le certificat client et un nom de clé.

Le tableau suivant décrit les propriétés à définir pour configurer un keystore KMIP.

Table 69  Propriétés de keystore KMIP
Propriété
Type
Description
server_list
list
Adresse IP ou nom d'hôte d'un serveur KMIP. Cette propriété peut avoir plusieurs valeurs.
client_cert
string
Certificat que vous avez créé à partir des fichiers fournis par l'administrateur de serveur KMIP.
host_match
boolean
Valide le nom d'hôte du serveur par rapport à l'identité du serveur dans le certificat de serveur.
destroy_key_on_remove
boolean
Supprime ou conserve une clé sur le serveur KMIP lorsque cette clé est supprimée sur l'appareil.

Pour plus d'informations sur host_match et destroy_key_on_remove, reportez-vous à la section "Key Management Interoperability Protocol (KMIP) Keystore" du manuel Guide d’administration d’Oracle® ZFS Storage Appliance, version OS8.8.x.

Vérifiez que les propriétés ci-dessus sont définies :

GET /api/storage/v2/encryption/kmip HTTP/1.1 

Sortie :

HTTP/1.1 200 OK
Content-Type: application/json

{
  "keystore": {
    "href": "/api/storage/v2/encryption/kmip",
    "server_list": [
      "ipaddr-or-hostname"
    ],
    "client_cert": "134a9138-29a0-4720-80bb-ec2b13457c39",
    "host_match": false,
    "destroy_key_on_remove": true,
    "keys": [],
... detailed information about the private key, certificate, and certificate authority ...
  }
}

Création d'une clé de chiffrement

Une fois le keystore configuré, pour créer une clé, il suffit de définir son nom. L'exemple suivant décrit la création d'une clé KMIP. Pour des exemples de résultat, voir Liste des clés de chiffrement.

Exemple de demande :

POST /api/storage/v2/encryption/kmip/keys HTTP/1.1 
Host: zfs-storage.example.com:215
Authorization: Basic Tm8gcGVla2luZyE=
Content-Type: application/json
Accept: application/json
{
        "keyname": "atz-1-27-2021"
}

Liste des clés de chiffrement

Cette commande répertorie les propriétés de toutes les clés de chiffrement. Le code de statut HTTP 200 (OK) est renvoyé lorsqu'une commande aboutit. Le corps HTTP contient un tableau de clés au format JSON. Le tableau suivant décrit les propriétés des clés de chiffrement.

Table 70  Propriétés des clés de chiffrement
Propriété
Type
Description
cipher
string
Type de chiffrement AES.
key
string
(Local uniquement) Clé raw 256 bits encodée en hexadécimal, stockée dans un format chiffré. Cette valeur est générée automatiquement si vous ne la définissez pas.
keyname
string
Clé spécifique.
href
string
Chemin de la clé.

L'exemple suivant répertorie toutes les clés Local, OKM et KMIP.

Exemple de demande :

GET /api/storage/v2/encryption/local/keys /api/storage/v2/encryption/okm/keys /api/storage/v2/encryption/kmip/keys HTTP/1.1

Exemple de résultat :

Ce résultat indique qu'il existe une clé KMIP sur l'appareil, mais aucune clé locale ou OKM.

{
    "keys": {
    }
}
{
    "keys": {
    }
}
{
    "keys": [{
        "cipher": "AES",
        "keyname": "atz-1-27-2021",
        "href": "/api/storage/v2/encryption/kmip/keys/key-000"
    }]
}

Liste du stockage chiffré avec la clé spécifiée

La requête dependents répertorie les partages, projets ou pools qui sont chiffrés avec la clé spécifiée.

L'exemple suivant montre que seul le système de fichiers fs-enc dans le pool par défaut est chiffré avec la clé KMIP atz-1-27-2021.

Exemple de demande :

GET /api/storage/v2/encryption/kmip/keys/atz-1-27-2021/dependents HTTP/1.1

Exemple de résultat :

{
  "dependents": [
    "pool-0/local/default/fs-enc"
  ]
}

Suppression d'une clé

Pour supprimer une clé, utilisez la valeur de la propriété href de la clé (non le nom de la clé). Une suppression réussie renvoie le code HTTP 204 (No Content).

Lorsqu'une clé est supprimée, toutes les données de tous les pools et partages qui l'utilisent deviennent inaccessibles. Cette opération équivaut à une destruction sécurisée des données. Elle est définitive et irréversible, sauf si vous avez préparé la restauration de la clé en la sauvegardant.

Exemple de demande :

DELETE /api/storage/v2/encryption/kmip/keys/key-000 HTTP/1.1
Host: zfs-storage.example.com:215
Accept: application/json