Utilizzo di Hyper Protect Crypto Services PKCS #11 per la crittografia nativa di IBM Db2
La crittografia nativa IBM Db2® protegge i file del database delle chiavi e le immagini di backup del database dall'accesso inappropriato mentre sono memorizzati su un supporto di memoria esterno. Il sistema di database codifica e decodifica automaticamente i dati quando vengono utilizzati da utenti e applicazioni autorizzati. In genere, gli utenti del database non devono essere a conoscenza della crittografia nativa e le applicazioni client del database non devono essere adattate specificamente.
La codifica nativa Db2 usa una gerarchia di chiavi a due livelli: i dati vengono codificati con una chiave di codifica dati (DEK). La DEK è codificata con una chiave principale e viene memorizzata in formato codificato con il database o l'immagine di backup. Un DEK univoco viene generato da Db2 per ogni database codificato e per ogni backup codificato.
Una chiave principale viene utilizzata per codificare una DEK. Ogni database codificato è associato a una chiave principale alla volta.
Una domanda importante quando pianifichi la crittografia nativa Db2 è dove conservi la chiave master e come la proteggi.
Obiettivi
Questa esercitazione mostra come puoi mantenere il controllo completo ed esclusivo delle tue chiavi master memorizzandole in IBM Cloud® Hyper Protect Crypto Services. A questo scopo, devi utilizzare la funzione di integrazione PKCS #11 di Hyper Protect Crypto Services.
Con questa esercitazione, verrà implementata la configurazione illustrata nella seguente illustrazione.
In questa configurazione, Db2 deve richiamare le operazioni per gestire le chiavi master nella libreria Hyper Protect Crypto Services PKCS #11 . La libreria Hyper Protect Crypto Services PKCS #11 interagisce con la tua istanza Hyper Protect Crypto Services, che fornisce la migliore tecnologia di classe per archiviare e gestire le tue chiavi master.
Prima di iniziare
Per completare questa esercitazione, devi soddisfare i seguenti prerequisiti:
Flusso di fasi
Per completare questa soluzione, procedere come segue:
Inizializza la tua istanza Hyper Protect Crypto Services
-
Per questa esercitazione, devi inizializzare prima un'istanza Hyper Protect Crypto Services.
Prendi nota della tua istanza Hyper Protect Crypto Services e dell'indirizzo endpoint EP11. Queste informazioni sono necessarie per le fasi successive.
-
Crea un ruolo IAM personalizzato
Discover HPCS. Questo ruolo fornisce un'autorizzazione molto limitata per il rilevamento della tua istanza Hyper Protect Crypto Services, richiesta dalla libreria PKCS #11 . Questo ruolo non dispone delle autorizzazioni per utilizzare, creare o gestire le chiavi o i keystore EP11.- Dall'IU, vai a Gestisci > Access (IAM) e seleziona Roles e fai clic su Create.
- Immettere il nome
Discover HPCSper il ruolo. - Immettere un ID per il ruolo. Questo ID viene utilizzato nel CRN, che è utilizzato quando assegni l'accesso utilizzando l'API. L'ID ruolo deve iniziare con una lettera maiuscola e utilizzare solo caratteri alfanumerici, ad esempio
DiscoverHPCS. - Facoltativo: immettere una descrizione sintetica e utile che aiuti gli utenti che stanno assegnando l'accesso a conoscere il livello di accesso fornito dall'assegnazione ruolo a un utente. Questa descrizione viene visualizzata anche nell'IU quando un utente assegna l'accesso al servizio.
- Dall'elenco di servizi, seleziona Hyper Protect Crypto Services
- Selezionare Aggiungi per l'azione
hs-crypto.discovery.listserverse fare clic su Crea.
-
Segui le istruzioni in Impostazione dei tipi di utente API PKCS #11 per configurare gli ID servizio e le chiavi API per l'utente normale e l'utente anonimo.
Non impostare il tipo di utente SO indicato nelle istruzioni. Inoltre, a differenza delle istruzioni, non assegnare all'ID servizio utente anonimo il ruolo personalizzato
Key operator, ma assegnare invece il ruolo personalizzatoDiscover HPCS.Con questa configurazione, l'utente anonimo ha solo autorizzazioni molto limitate sulla tua istanza Hyper Protect Crypto Services e non può utilizzare, creare o gestire le chiavi o i keystore EP11.
-
Salvare il valore delle chiavi API per l'utente normale e l'utente anonimo per le fasi successive.
-
Seguire le istruzioni per creare un keystore EP11 privato e prendere nota dell'ID keystore per i passi successivi.
Configura la libreria Hyper Protect Crypto Services PKCS #11
1. Eseguire il contenitore Db2 Community Edition
-
Utilizzare il comando riportato di seguito per eseguire il contenitore Db2 Community Edition:
docker run -itd --name mydb --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=password -e DBNAME=testdb ibmcom/db2 -
Immettere il seguente comando da una riga comandi sul sistema host:
docker exec -it --user root --workdir / mydb bash
Questa shell deve essere utilizzata per eseguire i comandi come root per i passi successivi.
2. Crea il file di configurazione Hyper Protect Crypto Services PKCS #11
Ora, crea un file di configurazione per la funzione Hyper Protect Crypto Services PKCS #11 . Il file di configurazione è denominato grep11client.yaml.
Adattare il seguente modello di file e denominare grep11client.yaml:
- Sostituisci
<instance_ID>con l'ID della tua istanza Hyper Protect Crypto Services - Sostituisci
<EP11_endpoint_URL>e<EP11_endpoint_port_number>con i rispettivi parametri dell'indirizzo endpoint EP11 della tua istanza Hyper Protect Crypto Services. - Sostituisci
<private_keystore_id>con l'ID del keystore privato creato in precedenza - Sostituisci
<anonymous_user_api_key>con la rispettiva chiave API dell'utente anonimo
iamcredentialtemplate: &defaultiamcredential
enabled: true
endpoint: "https://iam.cloud.ibm.com"
# The Universally Unique IDentifier (UUID) of your Hyper Protect Crypto Services instance.
instance: "<instance_ID>"
tokens:
0:
grep11connection:
# The EP11 endpoint address starting from 'ep11'. For example: "<instance_ID>.ep11.us-south.hs-crypto.appdomain.cloud"
address: "<EP11_endpoint_URL>"
port: "<EP11_endpoint_port_number>" # The EP11 endpoint port number
tls:
enabled: true # EP11 requires TLS connection.
mutual: false
storage:
remotestore:
enabled: true
users:
# The Security Officer (SO) user
0: # The index of the Security Officer (SO) user MUST be 0.
# The name for the Security Officer (SO) user. For example: "Administrator":
name: "Administrator"
iamauth: *defaultiamcredential
# The normal user
1: # The index of the normal user MUST be 1.
# The name for the normal user. For example: "Normal user":
name: "Normal user"
# The 128-bit UUID of the private keystore which you created previously
tokenspaceID: "<private_keystore_id>"
iamauth: *defaultiamcredential
# The anonymous user
2: # The index of the anonymous user MUST be 2.
# The name for the anonymous user. For example: "Anonymous":
name: "Anonymous"
# The public keystore will not be used with this setup.
# Specify an arbitrary 128-bit UUID below, e.g.:
tokenspaceID: "12345678-1234-1234-1234-1234567890AB"
iamauth:
<<: *defaultiamcredential
# Provide the API key for the Anonymous user.
apikey: "<anonymous_user_api_key>"
logging:
# Set the logging level.
# The supported levels, in an increasing order of verboseness: 'panic', 'fatal', 'error', 'warning'/'warn', 'info', 'debug', 'trace'. The Default value is 'warning'.
loglevel: "info"
logpath: "/tmp/grep11client.log" # The full path of your logging file.
3. Installa la libreria Hyper Protect Crypto Services PKCS #11
-
Copiare il file di configurazione precedentemente creato
grep11client.yamle la libreria PKCS #11pkcs11-grep11-<platform>.so.<version>nel contenitore Db2. -
Immetti i seguenti comandi come
rootper installare la libreria Hyper Protect Crypto Services PKCS #11 nella tua configurazione Db2.mkdir /etc/ep11client chmod a+rx /etc/ep11client/ cp grep11client.yaml /etc/ep11client/grep11client.yaml chmod a+r /etc/ep11client/grep11client.yaml mkdir -p /pkcs11 cp pkcs11-grep11-<platform>.so.<version> /pkcs11/pkcs11-grep11.so chmod -R a+rwx /pkcs11 touch /tmp/grep11client.log chmod a+rw /tmp/grep11client.log
Imposta la codifica nativa Db2
Ora, configura la crittografia nativa Db2. Per farlo, assicurarsi di disporre di tutti i privilegi di amministratore del database.
-
Creare il file
/pkcs11/keystore.confcon il seguente contenuto:VERSION=1 PRODUCT_NAME=Other ALLOW_KEY_INSERT_WITHOUT_KEYSTORE_BACKUP=true LIBRARY=/pkcs11/pkcs11-grep11.so SLOT_ID=0 NEW_OBJECT_TYPE=PRIVATE KEYSTORE_STASH=/pkcs11/pkcs11_pw.sth -
Eseguire i seguenti comandi come
rootper aggiornare la proprietà e le autorizzazioni del file/pkcs11/keystore.conf:chown -R db2inst1:db2iadm1 /pkcs11/keystore.conf chmod ug+rw /pkcs11/keystore.conf -
Per creare un file stash delle password, esegui questi comandi e sostituisci < normal_user_api_key> con la chiave API dell'utente normale che hai creato.
su - db2inst1 db2credman -stash -password "<normal_user_api_key>" -to /pkcs11/pkcs11_pw.sth -
Per aggiornare la configurazione di Db2, eseguire il seguente comando come utente
db2inst1:db2 update dbm cfg using keystore_location /pkcs11/keystore.conf keystore_type pkcs11 -
Per impostare la variabile d'ambiente
DB2_DEK_MAC_TYPE, eseguire i seguenti comandi come utentedb2inst1e riavviare DB2:db2 terminate db2stop export DB2_DEK_MAC_TYPE=HMAC db2startÈ necessario specificare la variabile di ambiente
DB2_DEK_MAC_TYPE=HMACprima di avviare Db2. Se si utilizza Db2 in Windows, è necessario impostare la variabile di profilo Db2 utilizzando il seguente comando:db2set -g DB2_DEK_MAC_TYPE=HMAC -
Per creare un database codificato, eseguire i seguenti comandi:
db2 create db cryptdb1 encryptQuesto comando stampa le seguenti informazioni:
DB20000I The CREATE DATABASE command completed successfully. -
Per verificare il database codificato, eseguire i seguenti comandi:
db2 connect to cryptdb1 db2 "create table test (id int not null, data varchar(100))" db2 "insert into test values (1, 'This is a secret text')" db2 "select * from test"Questo comando stampa le seguenti informazioni:
ID DATA ----------- ---------------------------------------------------------------------------------------------------- 1 This is a secret text 1 record(s) selected.
Passi successivi
I tuoi dati sensibili sono ora archiviati in modo sicuro nell'archiviazione crittografata. E la chiave master viene mantenuta in Hyper Protect Crypto Services in modo altamente sicuro e a prova di manomissione.
In questa esercitazione, hai imparato come configurare la crittografia nativa Db2 con Hyper Protect Crypto Services.
- Ulteriori informazioni su PKCS #11.
- Ulteriori informazioni sull'API PKCS #11.
- Avvia l'utilizzo dell'API PKCS #11.