SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
Ubuntu paris 1610 -
Chiffrer et sécuriser
MariaDB
Christophe Villeneuve
@hellosct1
Le 13 novembre 2016
Qui ???
Christophe
Villeneuve
mozilla reps - firefox os - B2GOS - ausy - afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – Libre@toi – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – elephpant - owasp -security
Ubuntu paris 1610 -
Aujourd'hui
● Les possibilités de MariaDB
● La sécurité
● Le chiffrement
Ubuntu paris 1610 -
✔ Fondé par
✔ Monty Widenius
✔ David Axmark
✔ 1983 – 1ère idée
✔ Fondé en 1995
✔ 2007 Préparation pour
Nasdaq
✔ 2008 Rachat par Sun
✔ 2009 Sun racheté par Oracle
✔ Promesse de Oracle sur 5
ans (fin 2014)
L'origine Dates importantes
Histoire de début
Ubuntu paris 1610 -
GO MariaDB
Ubuntu paris 1610 -
✔ Communauté d'amis
✔ 100 % Open source et
compatible MySQL
✔ Plateforme d'innovation
✔ Des commiteurs
✔
Dec 2008 Création de Monty 
Program 
 → Monty Widenius
✔
MariaDB 5.1 (Fev 2010)
✔
MariaDB 5.2 (Nov 2010)
✔
MariaDB 5.3 (Avril 2012)
✔
MariaDB 5.5 (Avril 2012)
✔
MariaDB 10.0 (Mars 2013)
✔
2013 Fondation
✔
MariaDB 10.1
(fin 2013)Galera people
Compression Multimaster
Replication
MariaDB : un jeune projet... MATURE
Ubuntu paris 1610 -
✔ PHP (driver natif) → BSD licence
✔ Python
✔ Perl
✔ Ruby
✔ .NET avec MyODBC
✔ JDBC (basé sur drizzle driver)
✔ C
✔ Oracle connector (licence GPL)
Tous sont LGPL → Aucune licence commerciale
Différents connecteurs avec MariaDB
Ubuntu paris 1610 -
Moteur de stockage
storage engine
Ubuntu paris 1610 -
Insertion de données : TokuDB
● Moteur de stockage
● Natif dans MariaDB 5.5 & MariaDB 10.0+
●
(R)Tokutek & MariaDB
● Technique utilise l'arbre fractal
– Amélioration indexation
– Amélioration des requêtes
●
Schéma de vitesse
●
Compression
●
Réplication
●
Souple
Ubuntu paris 1610 -
TokuDB : exemple
Ubuntu paris 1610 -
Manipuler les données : Connect
● Dispo MariaDB 10.0+
● ETL : Extract, transform et Load
● Lecture / Ecriture / MAJ
– TXT, DBF, INI, XML
– MS Access, MS Excel, TBL (similaire à MERGE)
– ODBC, MySQL,SQLite, Oracle, DB2, WMI...
● Locale ou distant
● Custom possible
● Accès en parallèle sur multitables
● Installation dans My.cnf
[mysqld]
plugin-load=ha_connect.so
Ubuntu paris 1610 -
Connect : exemple CSV
● Fichier
– first,last,birthday
– "Christophe","Villeneuve","Jan 1"
– "PHP","ODBC","Nov 22"
> CREATE TABLE users_csv (
first varchar(32) NOT NULL,
last varchar(32) NOT NULL,
birthday varchar(50) NOT NULL
) ENGINE=CONNECT TABLE_TYPE =CSV FILE_NAME ='/var/lib/mysql/users.csv'
HEADER=1 SEP_CHAR=',' QUOTED=1;
> SELECT * FROM users_csv;
| first | last | birthday |
+---------------+---------------+-------------+
| Christophe | Villeneuve | Jan 1 |
| PHP | ODBC | Nov 22 |
+---------------+---------------+-------------+
Ubuntu paris 1610 -
Connect : exemple ODBC
> create Table table2
ENGINE=CONNECT TABLE_TYPE=ODBC
SRCDEF='select key, sum(l_quantity) qt from dbt3.table1 group by key'
CONNECTION='DSN=oracle;UID=login;PWD=password';
> MariaDB [dbt3]> select sum(qt) from (select qt from table2) as
result;
→ 31444
Valeur de sum(qt)
Ubuntu paris 1610 -
Recherche SphinxSE
● Dispo MariaDB 5.2+
● Recherche Full-text
● Ne stocke pas les données
● Client haut pour permettre à MariaDB de parler à Sphinx
searchd
● Installation dans My.cnf
[mysqld]
plugin-load= 'ha_sphinx.so';
Ubuntu paris 1610 -
Exemple SphinxSE
● CREATE TABLE t1 (
id INTEGER UNSIGNED NOT NULL,
weight INTEGER NOT NULL,
query VARCHAR(3072) NOT NULL,
group_id INTEGER,
INDEX(query)
) ENGINE=SPHINX
CONNECTION="sphinx://localhost:9312/test";
● SELECT * FROM t1 WHERE query='test it;mode=any';
Poids
Entier
Votre requete
Indexation
Requete
Group
Ubuntu paris 1610 -
Ouverture vers le NewSQL
● Moteur de stockage : CassandraSE
● Dispo MariaDB 10.0+
● Brique de Apache Cassandra
● Données non relationnelles (NoSQL)
● Assurer l'intégration des données SQL / NoSQL
● Mapping possible
● Manipulations :
static columns, dynamic columns, rowkey
● Installation dans My.cnf
[mysqld]
plugin-load=ha_cassandra.so
Ubuntu paris 1610 -
CassandraSE : Utilisation (1/2)
> create table t2 (rowkey varchar(36) primary key,
data1 varchar(60),
data2 varchar(60)
) engine=cassandra
keyspace='mariadbtest'
thrift_host='localhost'
column_family='cf1';
Clé
primaire
obligatoire
Colonnes
statiques
Sous ensemble
des colonnes CF
Ubuntu paris 1610 -
CassandraSE : Utilisation (2/2)
> insert into t1 values
('rowkey10', 'data1-value', 123456),
('rowkey11', 'data1-value2', 34543);
> select * from t1 where rowkey='rowkey11';
Ubuntu paris 1610 -
XA en Spider
● Dispo MariaDB 10.0+
●
Moteur de stockage fédérés comme
– Sharding / partitionnement *
– Transactions *
– Intégré dans le pool de connexion
– Haute disponibilité Cluster Shared­Nothing
 
●
Load balancing : 
– Accès par Spider cluster avec plusieurs serveurs 
MariaDB
Ubuntu paris 1610 -
NewSQL
Ubuntu paris 1610 -
✔ Pont entre les BDD relationnelles et non relationnelles
✔ Toutes les colonnes stockées dans un « blob »
✔ Possibilité de le manipuler
✔ Possibilité de créer des index Virtuels
Colonnes Dynamiques
Ubuntu paris 1610 -
create table newsql( 
id int 
    auto_increment    
    primary key,
nom varchar(40),
type enum 
     ('animal',
     'ordinateur'),
prix int,
nosql blob);
COLUMN_CREATE(
column_nr, 
value [as type],
[
column_nr, 
value [as type]
], 
...)
Exemple (colonne dynamique) 1/3
ID nom type Prix blob
Multi produits
Ubuntu paris 1610 -
Exemple (colonne dynamique) 2/3
>INSERT into newsql values (NULL, 'Atari' ,'ordinateur',500, 
COLUMN_CREATE('couleur', 'Noir', 'type' , 'STe'));
>INSERT into newsql values (NULL, 'elePHPant','animal',20, 
COLUMN_CREATE('taille', 'normal', 'description' , 'peluche'));
>UPDATE newsql SET nosql = COLUMN_ADD(nosql, 'couleur' , 'blue') 
WHERE id=2;
ID Nom type prix couleur type taille description
1 Atari Ordinateur 500 Noir Ste
2 elePHPant animal 20 bleu normal peluche
>SELECT nom, column_list (nosql) FROM newsql;
Multi produits
Ubuntu paris 1610 -
Exemple (colonne dynamique) 3/3
>SELECT nom, COLUMN_JSON(nosql) FROM newsql;
>SELECT id,type,nom,
COLUMN_GET(nosql, 'couleur' as char) AS couleur,prix FROM newsql;
Multi produits
Ubuntu paris 1610 -
Utilisation / Installation
Ubuntu paris 1610 -
MariaDB Repositories
> sudo apt-get install software-properties-common
> sudo apt-key adv --recv-keys --keyserver
hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
> sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el]
http://fr.mirror.babylon.network/mariadb/repo/10.1/ubuntu
trusty main'
https://downloads.mariadb.org/mariadb/repositories/#mirror=babylon-fr&distro=Ubuntu&distro_release=trusty--ubuntu_trusty&version=10.1
Ubuntu paris 1610 -
✔ sudo apt-get install mariadb-server mariadb-client
✔ Vous retrouvez :
✔ /etc/mysql/my.cnf
✔ > mysql
✔ Au final
Linux
Ubuntu paris 1610 -
sécuriser
Ubuntu paris 1610 -
Lors de l'installation
> mysql_secure_installation
Enter current password for root (enter for none): ← Entrée
Set root password? [Y/n] ← y
New password: ← saisir nouveau Mot de passes
Re-enter new password: ← resaisir
Remove anonymous users? [Y/n] ← y
Disallow root login remotely? [Y/n] ← y
Reload privilege tables now? [Y/n] ← y
Ubuntu paris 1610 -
Les connexions 'SSL / TLS' sécurisés disponibles
● Connexions client / serveur → protocole TLS
– Les données peuvent être cryptées pendant le transfert à
l'aide du protocole TLS
● Variable système SSL / TLS
● Variable d'état SSL / TLS
● Réplication avec connexions sécurisées
– Maîtres / Esclaves avec des données cryptées
Ubuntu paris 1610 -
Connexion 'SSL / TLS'
● Par défaut
– Connexion non chiffré
● Si le serveur prend en charge les connexions sécurisées
→ OUI
● Pour activer TLS
– Démarrer le serveur avec l'option --ssl
> SHOW VARIABLES LIKE 'have_ssl';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_ssl | DISABLED |
+---------------+----------+
https://mariadb.com/kb/en/mariadb/secure-connections-overview/
Ubuntu paris 1610 -
● Cryptage de données
● Transfert TLS
● Exemple
– have_openssl
– have_ssl
● Interchangeable SSL
● SSL
n'est plus considéré comme sécurisé
● Exemple
– ssl_ca
– ssl_capath
– ...
Options 'SSL / TLS'
Système/Status de variables Attention
https://mariadb.com/kb/en/mariadb/ssltls-system-variables/
https://mariadb.com/kb/en/mariadb/ssltls-status-variables/
Ubuntu paris 1610 -
Réplication
https://mariadb.com/kb/en/mariadb/replication-with-secure-connections/
● Maître(s) / Esclave(s)
● Répliqués des données cryptées
● Activation des connexions sécurisées (obligatoire)
● Cluster
Attention
Si un des serveurs n'est pas configuré pour les connexions sécurisés
→ les connexions ne seront pas cryptées
Ubuntu paris 1610 -
Réplication : exemple (1/3)
● Création SSL dans chaque serveur
sudo mkdir -p /etc/mariadb/ssl
● Gestion des certificats
$ sudo openssl genrsa 4096 > ca-key.pem
$ sudo openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem
● Créer un certificat de serveur sur serveur1
$ sudo openssl req -newkey rsa:4096 -days 3600 -nodes -keyout server-key.pem -out
server-req.pem
$ sudo openssl rsa -in server-key.pem -out server-key.pem
$ sudo openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-
key.pem -set_serial 01 -out server-cert.pem
Ubuntu paris 1610 -
Réplication : exemple (2/3)
● Vérification des certificats (serveur1)
sudo openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
● Résultat
server-cert.pem: OK
client-cert.pem: OK
● Copier le certificat vers les autres serveurs
sudo scp /etc/mariadb/ssl/*.pem root@10.0.0.2:/etc/mariadb/ssl/
● Installation MariaDB
sudo apt-get install mariadb mariadb-server -y
Ubuntu paris 1610 -
Réplication : exemple (3/3)
● Configuration de my.cnf
– pour chaque serveur
# SSL
ssl-ca=/etc/mariadb/ssl/ca-cert.pem
ADD under [mysqld]:
# SSL
ssl-ca=/etc/mariadb/ssl/ca-cert.pem
ssl-cert=/etc/mariadb/ssl/server-cert.pem
ssl-key=/etc/mariadb/ssl/server-key.pem
CHANGE under [mysqld]:
server-id = 1
log-bin=mysql-bin
binlog_format=mixed
Pas de modifications (processus identique) pour :
La réplication / MariaDB Galera Cluster
Ubuntu paris 1610 -
Le chiffrement
Ubuntu paris 1610 -
Pourquoi chiffrer ?
● Avec MySQL / MariaDB / Percona
● Mariadb → cryptage au niveau des tables
– Innodb
– XtraDB (Percona)
$ INSERT INTO users (username, password)
VALUES ('root', AES_ENCRYPT('somepassword', 'key12346123'));
$ SELECT AES_DECRYPT(password, 'key12346123')
FROM users
WHERE username = 'admin';
Ubuntu paris 1610 -
Chiffrement (1/2)
● Disponible pour 10.1+
● Contribution Google
● Chiffrer
– Pas de modification pour vos applications
– Pas de dégradation des performances globales
– Une meilleure pratique en matière de sécurité de
données
● Storage engine supporté
– XtraDB
– InnoDB
Ubuntu paris 1610 -
Chiffrement (2/2)
● Chiffrement : support de clefs (AES Algorithm)
table individuel → PAGE_ENCRYPTION=1
tablespace encryption → Crypte tout ainsi que les logs
● Plugin : file_key_management
– Plugin de cryptage
– Lit les clés de cryptage d'un fichier
– Options :
● File_key_management_filename
→ Où se trouve le fichier
● File_key_management_filekey
→ Clé facultative pour déchiffrer le fichier de clés
● File_key_management_encryption_algorithm
→ Algorithme de cryptage à utiliser.
https://mariadb.com/kb/en/mariadb/data-at-rest-encryption/
Ubuntu paris 1610 -
Avantages
● Par rapport à d'autres BDD Open Source
– Chiffrement des données au repos
. Chiffrement au niveau des instances et des tables
. Avec support des clés tournantes (contribution Google)
– Validation des mots de passe
– Contrôle d'accès de base de profils (par défaut)
. Renforcé et optimisé
● Type de cryptage supporté
– Clefs de chiffrement identifier (32 bit)
– Advanced Encryption Standard (AES) 128 / 192 / 256 bit
– Exemple :
$ openssl enc -aes-256-cbc -md sha1 -k secret -in keys.txt -out keys.enc
Ubuntu paris 1610 -
config MariaDB : my.cnf
[mysqld]
plugin-load-add=file_key_management.so
file-key-management
file-key-management-filename = /home/mdb/keys.enc
innodb-encrypt-tables
innodb-encrypt-log
innodb-encryption-threads=4
aria-encrypt-tables=1 # PAGE row format
encrypt-tmp-disk-tables=1 # this is for Aria
Ubuntu paris 1610 -
Chiffrer une table
CREATE TABLE client (
client_id bigint not null primary key,
client_name varchar(80),
client_infosensible varchar(20)
)
ENGINE=InnoDB
page_encryption=1
page_encryption_key=1;
Clef 1
Chiffrement 1
Information très
sensible
Password...
● En mode fixe
Ubuntu paris 1610 -
Chiffrer : mode avancé
● Tablespace encrypton (Google)
● Choisir un algorithme de cryptage
● Spécifier ce qui doit être chiffrer
– Innodb-encrypt-tables
– Aria
– Aria-encrypt-tables
– Crypter-tmp-disk-tables
– Innodb-encrypt-log
● Prévoir les rotations (impératif)
– innodb-encryption-threads = 4
– innodb-encryption-rotate-key-age = 1800
Ubuntu paris 1610 -
Validation du mot de passe
● Les rappels du mot de passe
● MariaDB propose : Validation de mot de passe
– S'assurer que les mots de passe 'utilisateur'
répondent à certaines exigences de sécurité
– Plugin dédiée
– Contrôle par rapport à la configuration
● Fonctions : SET PASSWORD et GRAND
https://mariadb.com/kb/en/mariadb/password-validation/
Ubuntu paris 1610 -
Exemple (1/2)
SET PASSWORD = PASSWORD('plain-text password');
SET PASSWORD FOR `user`@`host` = PASSWORD('plain-text password');
SET PASSWORD = OLD_PASSWORD('plain-text password');
SET PASSWORD FOR `user`@`host` = OLD_PASSWORD('plain-text password');
CREATE USER `user`@`host` IDENTIFIED BY 'plain-text password';
GRANT privileges TO `user`@`host` IDENTIFIED BY 'plain-text password';
https://mariadb.com/kb/en/mariadb/password-validation/
SET PASSWORD = 'password hash';
SET PASSWORD FOR `user`@`host` = 'password hash';
CREATE USER `user`@`host` IDENTIFIED BY PASSWORD 'password hash';
CREATE USER `user`@`host` IDENTIFIED VIA mysql_native_password USING 'password hash';
CREATE USER `user`@`host` IDENTIFIED VIA mysql_old_password USING 'password hash';
GRANT privileges TO `user`@`host` IDENTIFIED BY PASSWORD 'password hash';
GRANT privileges TO `user`@`host` IDENTIFIED VIA mysql_native_password USING 'password
hash';
GRANT privileges TO `user`@`host` IDENTIFIED VIA mysql_old_password USING 'password hash';
● Avant
● Avec clé de hash
Ubuntu paris 1610 -
Exemple (2/2)
● Vérification
● Erreur de validation
$ UPDATE mysql.user
SET password='password hash'
WHERE user='user' AND host='host';
$ FLUSH PRIVILEGES;
SUCCES
> grant select on *.* to foobar identified by 'toto';
ERROR HY000: Your password does not satisfy the current policy requirements
> show warnings;
Ubuntu paris 1610 -
En résumé
Ubuntu paris 1610 -
Merci
Questions
Christophe Villeneuve
@hellosct1
Supports :
- MariaDB

Weitere ähnliche Inhalte

Was ist angesagt?

The Design of Blockchain-Based Apps (DApps)
The Design of Blockchain-Based Apps (DApps)The Design of Blockchain-Based Apps (DApps)
The Design of Blockchain-Based Apps (DApps)Erik Trautman
 
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTSERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTSAbdou Lahad SYLLA
 
Web3 Full Stack Development
Web3 Full Stack DevelopmentWeb3 Full Stack Development
Web3 Full Stack DevelopmentGene Leybzon
 
Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?Jedha Bootcamp
 
Scaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge ProofsScaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge ProofsHyojun Kim
 
Security in the blockchain
Security in the blockchainSecurity in the blockchain
Security in the blockchainBellaj Badr
 
Tp routage Linux
Tp routage LinuxTp routage Linux
Tp routage LinuxChris Dogny
 
A Complete Guide On Diem Blockchain
A Complete Guide On Diem BlockchainA Complete Guide On Diem Blockchain
A Complete Guide On Diem Blockchain101 Blockchains
 
Istio : Service Mesh
Istio : Service MeshIstio : Service Mesh
Istio : Service MeshKnoldus Inc.
 
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuliano Costa
 
Le système d'information unifié
Le système d'information unifiéLe système d'information unifié
Le système d'information unifiéitSMF France
 
4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...
4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...
4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...Autowerks
 
Installation de snort avec pulled pork
Installation de snort avec pulled porkInstallation de snort avec pulled pork
Installation de snort avec pulled porkSamiMessaoudi4
 
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis LabsRedis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis LabsHostedbyConfluent
 

Was ist angesagt? (20)

Grafana zabbix
Grafana zabbixGrafana zabbix
Grafana zabbix
 
Présentation transfleet ODOO
Présentation transfleet ODOO Présentation transfleet ODOO
Présentation transfleet ODOO
 
The Design of Blockchain-Based Apps (DApps)
The Design of Blockchain-Based Apps (DApps)The Design of Blockchain-Based Apps (DApps)
The Design of Blockchain-Based Apps (DApps)
 
Blockchain
BlockchainBlockchain
Blockchain
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTSERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
 
Blockchain Technology
Blockchain TechnologyBlockchain Technology
Blockchain Technology
 
Web3 Full Stack Development
Web3 Full Stack DevelopmentWeb3 Full Stack Development
Web3 Full Stack Development
 
Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?
 
MongoDB and BlockChain
MongoDB and BlockChainMongoDB and BlockChain
MongoDB and BlockChain
 
Scaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge ProofsScaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge Proofs
 
Security in the blockchain
Security in the blockchainSecurity in the blockchain
Security in the blockchain
 
Tp routage Linux
Tp routage LinuxTp routage Linux
Tp routage Linux
 
A Complete Guide On Diem Blockchain
A Complete Guide On Diem BlockchainA Complete Guide On Diem Blockchain
A Complete Guide On Diem Blockchain
 
Istio : Service Mesh
Istio : Service MeshIstio : Service Mesh
Istio : Service Mesh
 
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
 
Le système d'information unifié
Le système d'information unifiéLe système d'information unifié
Le système d'information unifié
 
4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...
4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...
4 Common Reasons Behind Mini Cooper Engine Stalling from Experts in College S...
 
Installation de snort avec pulled pork
Installation de snort avec pulled porkInstallation de snort avec pulled pork
Installation de snort avec pulled pork
 
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis LabsRedis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
 

Andere mochten auch

Contrôler votre matériel par les apps - JDLL
Contrôler votre matériel par les apps - JDLLContrôler votre matériel par les apps - JDLL
Contrôler votre matériel par les apps - JDLLChristophe Villeneuve
 
RGAA3 et votre projet drupal - drupalfr
RGAA3 et votre projet drupal - drupalfrRGAA3 et votre projet drupal - drupalfr
RGAA3 et votre projet drupal - drupalfrChristophe Villeneuve
 
MariaDB à l'assaut des developpeurs
MariaDB à l'assaut des developpeursMariaDB à l'assaut des developpeurs
MariaDB à l'assaut des developpeursChristophe Villeneuve
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCChristophe Villeneuve
 
La sécurité à tous les niveaux - JDLL
La sécurité à tous les niveaux - JDLLLa sécurité à tous les niveaux - JDLL
La sécurité à tous les niveaux - JDLLChristophe Villeneuve
 
Les réseaux Informatiques
Les réseaux InformatiquesLes réseaux Informatiques
Les réseaux InformatiquesKayl Mido
 
A la découverte de l'univers des échecs
A la découverte de l'univers des échecsA la découverte de l'univers des échecs
A la découverte de l'univers des échecsEchecs et Stratégie
 
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...Arnold Stellio
 
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...Jean-Antoine Moreau
 
Media center sous linux
Media center sous linuxMedia center sous linux
Media center sous linuxYannick Pavard
 
Forum aaf preuve sécurité 22 mars 2013 (2)
Forum aaf preuve  sécurité 22 mars 2013 (2)Forum aaf preuve  sécurité 22 mars 2013 (2)
Forum aaf preuve sécurité 22 mars 2013 (2)AssociationAF
 
Simulations et applications réparties sous LINUX
Simulations et applications réparties sous LINUXSimulations et applications réparties sous LINUX
Simulations et applications réparties sous LINUXFdiwa
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 

Andere mochten auch (20)

Les tests de securite devops
Les tests de securite devopsLes tests de securite devops
Les tests de securite devops
 
Contrôler votre matériel par les apps - JDLL
Contrôler votre matériel par les apps - JDLLContrôler votre matériel par les apps - JDLL
Contrôler votre matériel par les apps - JDLL
 
RGAA3 et votre projet drupal - drupalfr
RGAA3 et votre projet drupal - drupalfrRGAA3 et votre projet drupal - drupalfr
RGAA3 et votre projet drupal - drupalfr
 
MariaDB à l'assaut des developpeurs
MariaDB à l'assaut des developpeursMariaDB à l'assaut des developpeurs
MariaDB à l'assaut des developpeurs
 
Le service workers
Le service workersLe service workers
Le service workers
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
Les fonctions MariaDB - LeMug.fr
Les fonctions MariaDB - LeMug.frLes fonctions MariaDB - LeMug.fr
Les fonctions MariaDB - LeMug.fr
 
La sécurité à tous les niveaux - JDLL
La sécurité à tous les niveaux - JDLLLa sécurité à tous les niveaux - JDLL
La sécurité à tous les niveaux - JDLL
 
Comprendre la securite web
Comprendre la securite webComprendre la securite web
Comprendre la securite web
 
Les réseaux Informatiques
Les réseaux InformatiquesLes réseaux Informatiques
Les réseaux Informatiques
 
A la découverte de l'univers des échecs
A la découverte de l'univers des échecsA la découverte de l'univers des échecs
A la découverte de l'univers des échecs
 
Cours de tactique aux echecs
Cours de tactique aux echecsCours de tactique aux echecs
Cours de tactique aux echecs
 
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
 
Firefox OS - Api battery status
Firefox OS - Api battery statusFirefox OS - Api battery status
Firefox OS - Api battery status
 
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
LINUX Mise en place d’une exploitation industrialisée – automatisée – sécuris...
 
Media center sous linux
Media center sous linuxMedia center sous linux
Media center sous linux
 
Forum aaf preuve sécurité 22 mars 2013 (2)
Forum aaf preuve  sécurité 22 mars 2013 (2)Forum aaf preuve  sécurité 22 mars 2013 (2)
Forum aaf preuve sécurité 22 mars 2013 (2)
 
Simulations et applications réparties sous LINUX
Simulations et applications réparties sous LINUXSimulations et applications réparties sous LINUX
Simulations et applications réparties sous LINUX
 
Virtualisation
VirtualisationVirtualisation
Virtualisation
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 

Ähnlich wie Chiffrer et sécuriser MariaDB

Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017Christophe Villeneuve
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 
Gestion et surveillance du reseau syslogng
Gestion et surveillance du reseau  syslogngGestion et surveillance du reseau  syslogng
Gestion et surveillance du reseau syslogngKiemde Franck
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - GenèveaOS Community
 
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackLe cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackMicrosoft Décideurs IT
 
LPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxLPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxNoël
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc Boucho[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc BouchoCellenza
 
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris AZUG FR
 
09 01 configuration du serveur samba
09 01 configuration du serveur samba09 01 configuration du serveur samba
09 01 configuration du serveur sambaNoël
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...Cédrick Lunven
 
Install arch ultrabook full luks ssd
Install arch ultrabook full luks ssdInstall arch ultrabook full luks ssd
Install arch ultrabook full luks ssdAnthony Le Goff
 

Ähnlich wie Chiffrer et sécuriser MariaDB (20)

Le nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb phpLe nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb php
 
PHP et MariaDB dans le Cloud
PHP et MariaDB dans le CloudPHP et MariaDB dans le Cloud
PHP et MariaDB dans le Cloud
 
Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
1 2-3-grails
1 2-3-grails1 2-3-grails
1 2-3-grails
 
Gestion et surveillance du reseau syslogng
Gestion et surveillance du reseau  syslogngGestion et surveillance du reseau  syslogng
Gestion et surveillance du reseau syslogng
 
OpenNMS
OpenNMSOpenNMS
OpenNMS
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - Genève
 
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackLe cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
 
Inf208
Inf208Inf208
Inf208
 
LPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxLPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseaux
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc Boucho[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc Boucho
 
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
 
09 01 configuration du serveur samba
09 01 configuration du serveur samba09 01 configuration du serveur samba
09 01 configuration du serveur samba
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
 
Install arch ultrabook full luks ssd
Install arch ultrabook full luks ssdInstall arch ultrabook full luks ssd
Install arch ultrabook full luks ssd
 
Nagios twil
Nagios twilNagios twil
Nagios twil
 

Mehr von Christophe Villeneuve

La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxChristophe Villeneuve
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webChristophe Villeneuve
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Christophe Villeneuve
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le designChristophe Villeneuve
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activitesChristophe Villeneuve
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftChristophe Villeneuve
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthnChristophe Villeneuve
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueChristophe Villeneuve
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsChristophe Villeneuve
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsChristophe Villeneuve
 

Mehr von Christophe Villeneuve (20)

La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
pister les pisteurs
pister les pisteurspister les pisteurs
pister les pisteurs
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le web
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnante
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
Foxfooding semaine 3
Foxfooding semaine 3Foxfooding semaine 3
Foxfooding semaine 3
 
Foxfooding
FoxfoodingFoxfooding
Foxfooding
 
Accessibilite web wcag rgaa
Accessibilite web wcag rgaaAccessibilite web wcag rgaa
Accessibilite web wcag rgaa
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activites
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthn
 
Send large files with addons
Send large files with addonsSend large files with addons
Send large files with addons
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratique
 
Donnez la voix aux machines
Donnez la voix aux machinesDonnez la voix aux machines
Donnez la voix aux machines
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applications
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
 

Chiffrer et sécuriser MariaDB

  • 1. Ubuntu paris 1610 - Chiffrer et sécuriser MariaDB Christophe Villeneuve @hellosct1 Le 13 novembre 2016
  • 2. Qui ??? Christophe Villeneuve mozilla reps - firefox os - B2GOS - ausy - afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – Libre@toi – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – elephpant - owasp -security
  • 3. Ubuntu paris 1610 - Aujourd'hui ● Les possibilités de MariaDB ● La sécurité ● Le chiffrement
  • 4.
  • 5. Ubuntu paris 1610 - ✔ Fondé par ✔ Monty Widenius ✔ David Axmark ✔ 1983 – 1ère idée ✔ Fondé en 1995 ✔ 2007 Préparation pour Nasdaq ✔ 2008 Rachat par Sun ✔ 2009 Sun racheté par Oracle ✔ Promesse de Oracle sur 5 ans (fin 2014) L'origine Dates importantes Histoire de début
  • 6. Ubuntu paris 1610 - GO MariaDB
  • 7. Ubuntu paris 1610 - ✔ Communauté d'amis ✔ 100 % Open source et compatible MySQL ✔ Plateforme d'innovation ✔ Des commiteurs ✔ Dec 2008 Création de Monty  Program   → Monty Widenius ✔ MariaDB 5.1 (Fev 2010) ✔ MariaDB 5.2 (Nov 2010) ✔ MariaDB 5.3 (Avril 2012) ✔ MariaDB 5.5 (Avril 2012) ✔ MariaDB 10.0 (Mars 2013) ✔ 2013 Fondation ✔ MariaDB 10.1 (fin 2013)Galera people Compression Multimaster Replication MariaDB : un jeune projet... MATURE
  • 8. Ubuntu paris 1610 - ✔ PHP (driver natif) → BSD licence ✔ Python ✔ Perl ✔ Ruby ✔ .NET avec MyODBC ✔ JDBC (basé sur drizzle driver) ✔ C ✔ Oracle connector (licence GPL) Tous sont LGPL → Aucune licence commerciale Différents connecteurs avec MariaDB
  • 9. Ubuntu paris 1610 - Moteur de stockage storage engine
  • 10. Ubuntu paris 1610 - Insertion de données : TokuDB ● Moteur de stockage ● Natif dans MariaDB 5.5 & MariaDB 10.0+ ● (R)Tokutek & MariaDB ● Technique utilise l'arbre fractal – Amélioration indexation – Amélioration des requêtes ● Schéma de vitesse ● Compression ● Réplication ● Souple
  • 11. Ubuntu paris 1610 - TokuDB : exemple
  • 12. Ubuntu paris 1610 - Manipuler les données : Connect ● Dispo MariaDB 10.0+ ● ETL : Extract, transform et Load ● Lecture / Ecriture / MAJ – TXT, DBF, INI, XML – MS Access, MS Excel, TBL (similaire à MERGE) – ODBC, MySQL,SQLite, Oracle, DB2, WMI... ● Locale ou distant ● Custom possible ● Accès en parallèle sur multitables ● Installation dans My.cnf [mysqld] plugin-load=ha_connect.so
  • 13. Ubuntu paris 1610 - Connect : exemple CSV ● Fichier – first,last,birthday – "Christophe","Villeneuve","Jan 1" – "PHP","ODBC","Nov 22" > CREATE TABLE users_csv ( first varchar(32) NOT NULL, last varchar(32) NOT NULL, birthday varchar(50) NOT NULL ) ENGINE=CONNECT TABLE_TYPE =CSV FILE_NAME ='/var/lib/mysql/users.csv' HEADER=1 SEP_CHAR=',' QUOTED=1; > SELECT * FROM users_csv; | first | last | birthday | +---------------+---------------+-------------+ | Christophe | Villeneuve | Jan 1 | | PHP | ODBC | Nov 22 | +---------------+---------------+-------------+
  • 14. Ubuntu paris 1610 - Connect : exemple ODBC > create Table table2 ENGINE=CONNECT TABLE_TYPE=ODBC SRCDEF='select key, sum(l_quantity) qt from dbt3.table1 group by key' CONNECTION='DSN=oracle;UID=login;PWD=password'; > MariaDB [dbt3]> select sum(qt) from (select qt from table2) as result; → 31444 Valeur de sum(qt)
  • 15. Ubuntu paris 1610 - Recherche SphinxSE ● Dispo MariaDB 5.2+ ● Recherche Full-text ● Ne stocke pas les données ● Client haut pour permettre à MariaDB de parler à Sphinx searchd ● Installation dans My.cnf [mysqld] plugin-load= 'ha_sphinx.so';
  • 16. Ubuntu paris 1610 - Exemple SphinxSE ● CREATE TABLE t1 ( id INTEGER UNSIGNED NOT NULL, weight INTEGER NOT NULL, query VARCHAR(3072) NOT NULL, group_id INTEGER, INDEX(query) ) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312/test"; ● SELECT * FROM t1 WHERE query='test it;mode=any'; Poids Entier Votre requete Indexation Requete Group
  • 17. Ubuntu paris 1610 - Ouverture vers le NewSQL ● Moteur de stockage : CassandraSE ● Dispo MariaDB 10.0+ ● Brique de Apache Cassandra ● Données non relationnelles (NoSQL) ● Assurer l'intégration des données SQL / NoSQL ● Mapping possible ● Manipulations : static columns, dynamic columns, rowkey ● Installation dans My.cnf [mysqld] plugin-load=ha_cassandra.so
  • 18. Ubuntu paris 1610 - CassandraSE : Utilisation (1/2) > create table t2 (rowkey varchar(36) primary key, data1 varchar(60), data2 varchar(60) ) engine=cassandra keyspace='mariadbtest' thrift_host='localhost' column_family='cf1'; Clé primaire obligatoire Colonnes statiques Sous ensemble des colonnes CF
  • 19. Ubuntu paris 1610 - CassandraSE : Utilisation (2/2) > insert into t1 values ('rowkey10', 'data1-value', 123456), ('rowkey11', 'data1-value2', 34543); > select * from t1 where rowkey='rowkey11';
  • 20. Ubuntu paris 1610 - XA en Spider ● Dispo MariaDB 10.0+ ● Moteur de stockage fédérés comme – Sharding / partitionnement * – Transactions * – Intégré dans le pool de connexion – Haute disponibilité Cluster Shared­Nothing   ● Load balancing :  – Accès par Spider cluster avec plusieurs serveurs  MariaDB
  • 21. Ubuntu paris 1610 - NewSQL
  • 22. Ubuntu paris 1610 - ✔ Pont entre les BDD relationnelles et non relationnelles ✔ Toutes les colonnes stockées dans un « blob » ✔ Possibilité de le manipuler ✔ Possibilité de créer des index Virtuels Colonnes Dynamiques
  • 23. Ubuntu paris 1610 - create table newsql(  id int      auto_increment         primary key, nom varchar(40), type enum       ('animal',      'ordinateur'), prix int, nosql blob); COLUMN_CREATE( column_nr,  value [as type], [ column_nr,  value [as type] ],  ...) Exemple (colonne dynamique) 1/3 ID nom type Prix blob Multi produits
  • 24. Ubuntu paris 1610 - Exemple (colonne dynamique) 2/3 >INSERT into newsql values (NULL, 'Atari' ,'ordinateur',500,  COLUMN_CREATE('couleur', 'Noir', 'type' , 'STe')); >INSERT into newsql values (NULL, 'elePHPant','animal',20,  COLUMN_CREATE('taille', 'normal', 'description' , 'peluche')); >UPDATE newsql SET nosql = COLUMN_ADD(nosql, 'couleur' , 'blue')  WHERE id=2; ID Nom type prix couleur type taille description 1 Atari Ordinateur 500 Noir Ste 2 elePHPant animal 20 bleu normal peluche >SELECT nom, column_list (nosql) FROM newsql; Multi produits
  • 25. Ubuntu paris 1610 - Exemple (colonne dynamique) 3/3 >SELECT nom, COLUMN_JSON(nosql) FROM newsql; >SELECT id,type,nom, COLUMN_GET(nosql, 'couleur' as char) AS couleur,prix FROM newsql; Multi produits
  • 26. Ubuntu paris 1610 - Utilisation / Installation
  • 27. Ubuntu paris 1610 - MariaDB Repositories > sudo apt-get install software-properties-common > sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db > sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://fr.mirror.babylon.network/mariadb/repo/10.1/ubuntu trusty main' https://downloads.mariadb.org/mariadb/repositories/#mirror=babylon-fr&distro=Ubuntu&distro_release=trusty--ubuntu_trusty&version=10.1
  • 28. Ubuntu paris 1610 - ✔ sudo apt-get install mariadb-server mariadb-client ✔ Vous retrouvez : ✔ /etc/mysql/my.cnf ✔ > mysql ✔ Au final Linux
  • 29. Ubuntu paris 1610 - sécuriser
  • 30. Ubuntu paris 1610 - Lors de l'installation > mysql_secure_installation Enter current password for root (enter for none): ← Entrée Set root password? [Y/n] ← y New password: ← saisir nouveau Mot de passes Re-enter new password: ← resaisir Remove anonymous users? [Y/n] ← y Disallow root login remotely? [Y/n] ← y Reload privilege tables now? [Y/n] ← y
  • 31. Ubuntu paris 1610 - Les connexions 'SSL / TLS' sécurisés disponibles ● Connexions client / serveur → protocole TLS – Les données peuvent être cryptées pendant le transfert à l'aide du protocole TLS ● Variable système SSL / TLS ● Variable d'état SSL / TLS ● Réplication avec connexions sécurisées – Maîtres / Esclaves avec des données cryptées
  • 32. Ubuntu paris 1610 - Connexion 'SSL / TLS' ● Par défaut – Connexion non chiffré ● Si le serveur prend en charge les connexions sécurisées → OUI ● Pour activer TLS – Démarrer le serveur avec l'option --ssl > SHOW VARIABLES LIKE 'have_ssl'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_ssl | DISABLED | +---------------+----------+ https://mariadb.com/kb/en/mariadb/secure-connections-overview/
  • 33. Ubuntu paris 1610 - ● Cryptage de données ● Transfert TLS ● Exemple – have_openssl – have_ssl ● Interchangeable SSL ● SSL n'est plus considéré comme sécurisé ● Exemple – ssl_ca – ssl_capath – ... Options 'SSL / TLS' Système/Status de variables Attention https://mariadb.com/kb/en/mariadb/ssltls-system-variables/ https://mariadb.com/kb/en/mariadb/ssltls-status-variables/
  • 34. Ubuntu paris 1610 - Réplication https://mariadb.com/kb/en/mariadb/replication-with-secure-connections/ ● Maître(s) / Esclave(s) ● Répliqués des données cryptées ● Activation des connexions sécurisées (obligatoire) ● Cluster Attention Si un des serveurs n'est pas configuré pour les connexions sécurisés → les connexions ne seront pas cryptées
  • 35. Ubuntu paris 1610 - Réplication : exemple (1/3) ● Création SSL dans chaque serveur sudo mkdir -p /etc/mariadb/ssl ● Gestion des certificats $ sudo openssl genrsa 4096 > ca-key.pem $ sudo openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem ● Créer un certificat de serveur sur serveur1 $ sudo openssl req -newkey rsa:4096 -days 3600 -nodes -keyout server-key.pem -out server-req.pem $ sudo openssl rsa -in server-key.pem -out server-key.pem $ sudo openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca- key.pem -set_serial 01 -out server-cert.pem
  • 36. Ubuntu paris 1610 - Réplication : exemple (2/3) ● Vérification des certificats (serveur1) sudo openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem ● Résultat server-cert.pem: OK client-cert.pem: OK ● Copier le certificat vers les autres serveurs sudo scp /etc/mariadb/ssl/*.pem root@10.0.0.2:/etc/mariadb/ssl/ ● Installation MariaDB sudo apt-get install mariadb mariadb-server -y
  • 37. Ubuntu paris 1610 - Réplication : exemple (3/3) ● Configuration de my.cnf – pour chaque serveur # SSL ssl-ca=/etc/mariadb/ssl/ca-cert.pem ADD under [mysqld]: # SSL ssl-ca=/etc/mariadb/ssl/ca-cert.pem ssl-cert=/etc/mariadb/ssl/server-cert.pem ssl-key=/etc/mariadb/ssl/server-key.pem CHANGE under [mysqld]: server-id = 1 log-bin=mysql-bin binlog_format=mixed Pas de modifications (processus identique) pour : La réplication / MariaDB Galera Cluster
  • 38. Ubuntu paris 1610 - Le chiffrement
  • 39. Ubuntu paris 1610 - Pourquoi chiffrer ? ● Avec MySQL / MariaDB / Percona ● Mariadb → cryptage au niveau des tables – Innodb – XtraDB (Percona) $ INSERT INTO users (username, password) VALUES ('root', AES_ENCRYPT('somepassword', 'key12346123')); $ SELECT AES_DECRYPT(password, 'key12346123') FROM users WHERE username = 'admin';
  • 40. Ubuntu paris 1610 - Chiffrement (1/2) ● Disponible pour 10.1+ ● Contribution Google ● Chiffrer – Pas de modification pour vos applications – Pas de dégradation des performances globales – Une meilleure pratique en matière de sécurité de données ● Storage engine supporté – XtraDB – InnoDB
  • 41. Ubuntu paris 1610 - Chiffrement (2/2) ● Chiffrement : support de clefs (AES Algorithm) table individuel → PAGE_ENCRYPTION=1 tablespace encryption → Crypte tout ainsi que les logs ● Plugin : file_key_management – Plugin de cryptage – Lit les clés de cryptage d'un fichier – Options : ● File_key_management_filename → Où se trouve le fichier ● File_key_management_filekey → Clé facultative pour déchiffrer le fichier de clés ● File_key_management_encryption_algorithm → Algorithme de cryptage à utiliser. https://mariadb.com/kb/en/mariadb/data-at-rest-encryption/
  • 42. Ubuntu paris 1610 - Avantages ● Par rapport à d'autres BDD Open Source – Chiffrement des données au repos . Chiffrement au niveau des instances et des tables . Avec support des clés tournantes (contribution Google) – Validation des mots de passe – Contrôle d'accès de base de profils (par défaut) . Renforcé et optimisé ● Type de cryptage supporté – Clefs de chiffrement identifier (32 bit) – Advanced Encryption Standard (AES) 128 / 192 / 256 bit – Exemple : $ openssl enc -aes-256-cbc -md sha1 -k secret -in keys.txt -out keys.enc
  • 43. Ubuntu paris 1610 - config MariaDB : my.cnf [mysqld] plugin-load-add=file_key_management.so file-key-management file-key-management-filename = /home/mdb/keys.enc innodb-encrypt-tables innodb-encrypt-log innodb-encryption-threads=4 aria-encrypt-tables=1 # PAGE row format encrypt-tmp-disk-tables=1 # this is for Aria
  • 44. Ubuntu paris 1610 - Chiffrer une table CREATE TABLE client ( client_id bigint not null primary key, client_name varchar(80), client_infosensible varchar(20) ) ENGINE=InnoDB page_encryption=1 page_encryption_key=1; Clef 1 Chiffrement 1 Information très sensible Password... ● En mode fixe
  • 45. Ubuntu paris 1610 - Chiffrer : mode avancé ● Tablespace encrypton (Google) ● Choisir un algorithme de cryptage ● Spécifier ce qui doit être chiffrer – Innodb-encrypt-tables – Aria – Aria-encrypt-tables – Crypter-tmp-disk-tables – Innodb-encrypt-log ● Prévoir les rotations (impératif) – innodb-encryption-threads = 4 – innodb-encryption-rotate-key-age = 1800
  • 46. Ubuntu paris 1610 - Validation du mot de passe ● Les rappels du mot de passe ● MariaDB propose : Validation de mot de passe – S'assurer que les mots de passe 'utilisateur' répondent à certaines exigences de sécurité – Plugin dédiée – Contrôle par rapport à la configuration ● Fonctions : SET PASSWORD et GRAND https://mariadb.com/kb/en/mariadb/password-validation/
  • 47. Ubuntu paris 1610 - Exemple (1/2) SET PASSWORD = PASSWORD('plain-text password'); SET PASSWORD FOR `user`@`host` = PASSWORD('plain-text password'); SET PASSWORD = OLD_PASSWORD('plain-text password'); SET PASSWORD FOR `user`@`host` = OLD_PASSWORD('plain-text password'); CREATE USER `user`@`host` IDENTIFIED BY 'plain-text password'; GRANT privileges TO `user`@`host` IDENTIFIED BY 'plain-text password'; https://mariadb.com/kb/en/mariadb/password-validation/ SET PASSWORD = 'password hash'; SET PASSWORD FOR `user`@`host` = 'password hash'; CREATE USER `user`@`host` IDENTIFIED BY PASSWORD 'password hash'; CREATE USER `user`@`host` IDENTIFIED VIA mysql_native_password USING 'password hash'; CREATE USER `user`@`host` IDENTIFIED VIA mysql_old_password USING 'password hash'; GRANT privileges TO `user`@`host` IDENTIFIED BY PASSWORD 'password hash'; GRANT privileges TO `user`@`host` IDENTIFIED VIA mysql_native_password USING 'password hash'; GRANT privileges TO `user`@`host` IDENTIFIED VIA mysql_old_password USING 'password hash'; ● Avant ● Avec clé de hash
  • 48. Ubuntu paris 1610 - Exemple (2/2) ● Vérification ● Erreur de validation $ UPDATE mysql.user SET password='password hash' WHERE user='user' AND host='host'; $ FLUSH PRIVILEGES; SUCCES > grant select on *.* to foobar identified by 'toto'; ERROR HY000: Your password does not satisfy the current policy requirements > show warnings;
  • 49. Ubuntu paris 1610 - En résumé
  • 50. Ubuntu paris 1610 - Merci Questions Christophe Villeneuve @hellosct1 Supports : - MariaDB