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.
|
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": [] } }
Le tableau suivant décrit les propriétés à définir pour configurer un keystore 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" }
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.
|
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 ... } }
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" }
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.
|
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" }] }
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" ] }
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