La plupart des acteurs exigent un respect de leurs directives de sécurité dans le cadre d’une gestion rigoureuse de leurs données surtout si elles relèvent d’un caractère confidentiel . Ces règles incluent la sécurité physique de l’infrastructure informatique (accès aux bâtiment, au centre de données, aux serveurs), la restriction de l’accès Internet entrant (accès réseaux, règle de pare-feu), l’authentification multifactorielle (MFA), les stratégies de mot de passe, le chiffrement des données, l’application du principe de moindre privilèges et la journalisation de l’accès aux données.
C’est dans ce contexte qu’évoluent de nos jours les fournisseurs de Cloud et les ESN.
Dans le cadre de nos projets Data Lake, nous travaillons avec différents acteurs du marché. Dans cet article, nous parlerons de la mise en place d’un cluster Hadoop au sein de la plateforme AWS. Il s’agira de chiffrer les données afin d’en garantir un accès uniquement au détenteur d’une clé l’autorisant.
Amazon EMR
L’une des fonctionnalités intéressante d’Amazon EMR est l’intégration étroite avec Amazon S3 via EMRFS. Cela permet de tirer parti de nombreuses fonctionnalités de S3, notamment la prise en charge du chiffrement S3 côté client et côté serveur. EMR supporte le chiffrement côté serveur S3 avec des clés AWS KMS (SSE-KMS), ainsi que le chiffrement SSE-S3 (clés gérées S3) et S3 côté client avec des clés KMS (CSE-KMS). Il est aussi possible de fournir ses propres clefs personnalisées.
Ce schéma offre une vision des flux sécurisés :
Cet autre schéma en donne une vision de l’architecture de chiffrement :
Cluster avec l’encryption
Clé d’encryption
La première des étapes consiste à créer la clé de chiffrement. Parmi les points auxquels il faut bien faire attention : la « région » AWS dans laquelle vous créez la clé. Il faut que ce soit la même région que celle où est démarré le cluster EMR.
De même, pour que le cluster EMR puisse être démarré et éviter des erreurs lors de sa construction, il est important que les rôles (de l’utilisateur AWS) soient associés à la possibilité de gestion des clés de chiffrement.
Configuration de la sécurisation du cluster
Avant de lancer le cluster EMR il faut créer une « Configuration de Sécurisation » de celui-ci. Ici, il est question d’attacher la clé de chiffrement (ici nous avons nommé cette configuration : « emr_encryption »).
Cluster EMR avec configuration de sécurisation
Une fois le cluster EMR lancé il sera possible de noter qu’il exploite bien la configuration de sécurisation « emr_encryption ».
La version du cluster EMR : emr-5.9.0
Les versions des composants Hadoop sélectionnés sont les suivantes :
- Spark 2.2.0
- Hive 2.3.0,
- Ganglia 3.7.2,
- Zeppelin 0.7.2,
- Hue 4.0.1,
- Pig 0.17.0
Fichier chiffré sur S3
Depuis le poste client, nous publions un fichier vers S3 qui est chiffré, avec la clé gérée, et enregistré dans AWS KMS. Ce fichier a été construit grâce à Mokaroo. Ce dernier permet de facilement créer des données fictives.
aws s3 cp 30Cols1000000.csv s3://emr-test-synaltic/customers/30Cols1000000.csv --sse aws:kms --sse-kms-key-id 4fe7ff5a-c432-4632-a08c-00506745cb2f
upload: ./30Cols1000000.csv to s3://emr-test-synaltic/customers/30Cols1000000.csv
Ici aussi, il est alors à noter que le client S3 d’AWS nous montre bien que ce fichier est actuellement chiffré avec la fameuse clé de KMS.
Accès au fichier chiffré depuis le cluster ERM
Connexion à la machine
Le petit test vise désormais à se connecter à une des machines cliente (edge node) du cluster Hadoop afin de vérifier l’accès au fichier chiffré sans nouvelle configuration. En effet, le cluster a été lancé avec la clé de chiffrement.
ssh hadoop@ec2-xxx-xxx-xxx-xxx.eu-central-1.compute.amazonaws.com
The authenticity of host 'ec2-xxx-xxx-xxx-xxx.eu-central-1.compute.amazonaws.com (18.197.157.7)' can't be established.
ECDSA key fingerprint is SHA256:WvE5UPXyVzlEy3Gv8Ebi285ytTeHyr3wea7dHz+tg+s.
ECDSA key fingerprint is MD5:bc:36:13:e4:dc:26:5c:51:6b:ec:cf:09:47:33:77:90.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-xxx-xxx-xxx-xxx.eu-central-1.compute.amazonaws.com,18.197.157.7' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2017.03-release-notes/
2 package(s) needed for security, out of 216 available
Run "sudo yum update" to apply all updates.
Amazon Linux version 2018.03 is available.
EEEEEEEEEEEEEEEEEEEE MMMMMMMM MMMMMMMM RRRRRRRRRRRRRRR
E::::::::::::::::::E M:::::::M M:::::::M R::::::::::::::R
EE:::::EEEEEEEEE:::E M::::::::M M::::::::M R:::::RRRRRR:::::R
E::::E EEEEE M:::::::::M M:::::::::M RR::::R R::::R
E::::E M::::::M:::M M:::M::::::M R:::R R::::R
E:::::EEEEEEEEEE M:::::M M:::M M:::M M:::::M R:::RRRRRR:::::R
E::::::::::::::E M:::::M M:::M:::M M:::::M R:::::::::::RR
E:::::EEEEEEEEEE M:::::M M:::::M M:::::M R:::RRRRRR::::R
E::::E M:::::M M:::M M:::::M R:::R R::::R
E::::E EEEEE M:::::M MMM M:::::M R:::R R::::R
EE:::::EEEEEEEE::::E M:::::M M:::::M R:::R R::::R
E::::::::::::::::::E M:::::M M:::::M RR::::R R::::R
EEEEEEEEEEEEEEEEEEEE MMMMMMM MMMMMMM RRRRRRR RRRRRR
Connexion Hive
Depuis hive il s’agit de construire une table qui se base sur le fichier chiffré et observer qu’il est possible de naviguer à travers ces données.
hive
Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j2.properties Async: false
Créons la table dont les données sont issues du fichier chiffré. C’est donc une table externe !
hive> CREATE EXTERNAL TABLE CUSTOMER_SSE(
> id INT
,
> first_name STRING
,
> last_name STRING
,
> emailgender STRING
,
> job_title STRING
,
> ip_address_v4 STRING
,
> ip_address_v6 STRING
,
> city STRING
,
> country STRING
,
> office_department STRING
,
> frequency STRING
,
> car STRING
,
> car_model STRING
,
> car_model_year STRING
,
> car_color STRING
,
> lat STRING
,
> long STRING
,
> stock_industry STRING
,
> stock_market STRING
,
> stock_name STRING
,
> stock_symbole STRING
,
> ssn STRING
,
> slogan STRING
,
> sentence STRING
,
> race STRING
,
> movie_genre STRING
,
> movie_title STRING
> )
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n
‘
> LOCATION 's3://emr-test-synaltic/customers';
OK
Time taken: 0.47 seconds
Cette table peut être interrogée.
Une première requête :
hive> select count(*) from CUSTOMER_SSE;
Query ID = hadoop_20180809072507_5897e4b9-9ed0-4034-903d-584a1048151a
Total jobs = 1
Launching Job 1 out of 1
Tez session was closed. Reopening...
Session re-established.
Status: Running (Executing on YARN cluster with App id application_1533795062292_0002)
-------------------------------------------------------------------------
VERTICES MODE STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED
--------------------------------------------------------------------------
Map 1 .......... container SUCCEEDED 7 7 0 0 0 0
Reducer 2 ...... container SUCCEEDED 1 1 0 0 0 0
---------------------------------------------------------------------------
VERTICES: 02/02 [==========================>>] 100% ELAPSED TIME: 23,53 s
---------------------------------------------------------------------------
OK
555111
Time taken: 34.983 seconds, Fetched: 1 row(s)
Une deuxième requête pour simplement lister le contenu de la table.
hive> select * from CUSTOMER_SSE limit 10;
OK
1 Madelyn Elderton melderton0@pagesperso-orange.fr Female Quality Engineer 15.80.90.47 9e8a:7982:e3c0:b5ed:3904:2dc4:d237:4571 Oster Ukraine Garden Never Lexus SC 2010 Pink 50.9486162 30.8786768 n/a NYSE
Nuveen Real Asset Income and Growth Fund JRI 400-25-0833 integrate leading-edge initiatives Phasellus sit amet erat. Nulla tempus. Chilean Adventure|Romance|Sci-Fi|IMAX
2 Akim Malafe amalafe1@thetimes.co.uk Male Senior Cost Accountant 70.107.168.139 815f:db95:7ef1:665:8266:9730:6dd6:13c5
Leiguan China Games Once Isuzu Hombre Space 1997 Puce 22.24416 108.214158 n/a NYSE Blackrock Municipal Bond Trust BBK 865-14-0427 exploit customized e-tailers "Cras pellentesque volutpat dui. Maecenas tristique est et tempus semper est quam pharetra magna
3 Pebrook Lichtfoth plichtfoth2@themeforest.net Male Business Systems Development Analyst 242.78.240.50 8eda:536b:5dae:e39f:f684:9d1c:bdd2:ae4 Nankou China Tools Daily Chevrolet Prizm 2002 Purple 40.23921 116.12895 Property-Casualty Insurers NYSE "AmTrust Financial Services Inc." AFSS 886-15-1536 incentivize ubiquitous markets In hac habitasse platea dictumst. Etiam faucibus cursus urna. Ut tellus. Nulla ut erat id mauris vulputate elementum. Nullam varius. Nulla facilisi. Cras non velit nec nisi vulputate nonummy. Maecenas tincidunt lacus at velit. Chinese
4 Shelby Annis sannis3@google.cn Female Operator 62.208.7.71 3e3f:d8c1:2d63:6d30:74c6:1bc:91f2:694 Cimanggu Indonesia Kids Monthly GMC Sierra 2500 2004 Turquoise -6.956164 106.7714 Transportation Services NASDAQ Tuniu Corporation TOUR 679-65-7015 engineer robust solutions Sed accumsan felis. Ut at dolor quis odio consequat varius.Chinese Horror|Thriller
5 Lorianna Renals lrenals4@privacy.gov.au Female Occupational Therapist 227.138.13.194 368e:8796:c847:8432:2bfb:ac01:6a45:720b Padre Bernardo Brazil Books Daily Mazda B2600 1987 Green -15.158624 -48.2802925 n/a NYSE Drive Shack Inc. DS^D 255-74-4840 evolve innovative e-services Nulla tellus. Chickasaw Documentary
6 Dirk Stoakley dstoakley5@bbb.org Male Nurse 240.239.205.200 601f:2260:5659:57be:4694:b4bc:89c9:7de0 Cibungur Indonesia Toys Seldom Hyundai Sonata 1994 Puce -6.4698758 107.4780383 Television Services NASDAQ Videocon d2h Limited VDTH 882-69-6339 extend e-business deliverables "Maecenas leo odio condimentum id luctus nec
7 Shoshanna Kitson skitson6@gmpg.org Female Graphic Designer 39.49.118.60 b411:502a:4cdc:260:f008:2019:5e71:ef25 Opinogóra Górna Poland Books Monthly Ford Club Wagon 1992 Red 52.9002738 20.7462079 Savings Institutions NASDAQ Access National Corporation ANCX 199-13-6079 envisioneer real-time interfaces "Quisque erat eros viverra eget congue eget
8 Buckie Simion bsimion7@wikipedia.org Male Project Manager 253.137.178.41 a90b:52dd:47aa:b5a:264f:b92a:e68e:e57e Picos Brazil Home Once Toyota Matrix 2007 Teal -7.0776163 -41.4673741 n/a NYSE BB&T Corporation BBT^H 458-83-4820 evolve out-of-the-box e-markets Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est. Venezuelan Documentary
9 Hali Haste hhaste8@ibm.com Female Analyst Programmer 199.209.135.74 d42a:7ddc:ac00:b1ce:5b0b:df1e:e1e2:fc13 Gandusari Indonesia Sports Never Subaru Loyale 1990 Aquamarine-8.1264039 111.7018452 Real Estate Investment Trusts NYSE "United Dominion Realty Trust Inc." UDR 653-63-7075 generate extensible mindshare Nullam porttitor lacus at turpis. Donec posuere metus vitae ipsum. Aliquam non mauris. Morbi non lectus. Aliquam sit amet diam in magna bibendum imperdiet. Spaniard
Time taken: 0.224 seconds, Fetched: 10 row(s)
hive> exit;
Connexion Spark (Spark Shell)
Nous poursuivons les tests avec Spark. Nous lançons le client Spark Shell :
spark-shell
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/09 07:28:20 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
Spark context Web UI available at http://ip-172-19-1-76.eu-central-1.compute.internal:4040
Spark context available as 'sc' (master = yarn, app id = application_1533795062292_0003).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0
/_/
Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_141)
Type in expressions to have them evaluated.
Type :help for more information.
Vérification du context Spark :
scala> sc
res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@5507584d
Nous montons le fichier chiffré :
scala> val textFile = sc.textFile("s3://emr-test-synaltic/customers/30Cols1000000.csv")
textFile: org.apache.spark.rdd.RDD[String] = s3://emr-test-synaltic/customers/30Cols1000000.csv MapPartitionsRDD[3] at textFile at <console>:24
Nous en vérifions le nombre de lignes:
scala> textFile.count()
18/08/09 07:31:55 WARN RoleMappings: Found no mappings configured with 'fs.s3.authorization.roleMapping', credentials resolution may not work as expected
res2: Long = 555111
Nous récupérons la première ligne :
scala> textFile.first()
1,Madelyn,Elderton,melderton0@pagesperso-orange.fr,Female,Quality Engineer,15.80.90.47,9e8a:7982:e3c0:b5ed:3904:2dc4:d237:4571,Oster,
Ukraine,Garden,Never,Lexus,SC,2010,Pink,50.9486162,30.8786768,n/a,NYSE,
Nuveen Real Asset Income and Growth Fund,JRI,400-25-0833,integrate leading-edge initiatives,Phasellus sit amet erat. Nulla tempus.,Chilean,Adventure|Romance|Sci-Fi|IMAX,Divergent
2,Akim,Malafe,amalafe1@thetimes.co.uk,Male,Senior Cost
scala> textFile.take(30).foreach(println)
1,Madelyn,Elderton,melderton0@pagesperso-orange.fr,Female,Quality Engineer,15.80.90.47,9e8a:7982:e3c0:b5ed:3904:2dc4:d237:4571,Oster,
Ukraine,Garden,Never,Lexus,SC,2010,Pink,50.9486162,30.8786768,n/a,NYSE,
Nuveen Real Asset Income and Growth Fund,JRI,400-25-0833,integrate leading-edge initiatives,Phasellus sit amet erat. Nulla tempus.,Chilean,Adventure|Romance|Sci-Fi|IMAX,Divergent
2,Akim,Malafe,amalafe1@thetimes.co.uk,Male,Senior Cost Accountant,70.107.168.139,815f:db95:7ef1:665:8266:9730:6dd6:13c5,Leiguan,China,Games,Once,Isuzu,Hombre Space,1997,Puce,22.24416,108.214158,n/a,NYSE,Blackrock Municipal Bond Trust,BBK,865-14-0427,exploit customized e-tailers,"Cras pellentesque volutpat dui. Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam.",Dominican (Dominican Republic),Romance,Love and Other Catastrophes
…
...
29,Hilary,Annes,hannesr@sbwire.com,Male,Project Manager,209.199.205.154,26e2:4129:f715:2dc8:5384:a62c:7b24:9aa0,Al Ghayl,Yemen,Electronics,Yearly,Ford,Bronco,1989,Pink,15.30487,47.83894,n/a,NYSE,
Eaton vance Floating-Rate Income Plus Fund,EFF,645-02-9928,synergize real-time
web services,Nulla tempus. Vivamus in felis eu sapien cursus vestibulum. Proin eu mi.,Fijian,Crime|Documentary|War,Night and Fog (Nuit et brouillard)
30,Muhammad,Somner,msomners@npr.org,Male,Community Outreach Specialist,97.113.239.160,3782:973d:962f:e5c5:4586:353b:7c9c:32e9,
Phoenix,United States,Grocery,Daily,Lincoln,Navigator L,2012,Maroon,
33.6289952,-112.1370601,Professional Services,NASDAQ,"Cross Country
Healthcare, Inc.",CCRN,833-93-3599,drive distributed metrics,"Vestibulum
ante ipsum primis in faucibus orci
luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est.
Donec odio justo, sollicitudin ut, suscipit a, feugiat et, eros.
Vestibulum ac est lacinia nisi venenatis
tristique. Fusce congue, diam id ornare imperdiet, sapien urna pretium
nisl, ut volutpat sapien arcu sed augue. Aliquam erat volutpat. In congue.
Etiam justo. Etiam pretium iaculis justo. In hac habitasse platea dictumst.
Etiam faucibus cursus urna.",Navajo,Drama|Romance,"Bodies, Rest & Motion"
scala>
Conclusion
Un des avantages à faire porter la clé de chiffrement par la configuration du cluster EMR vise surtout à faciliter les développements et traitements qui viennent s’y exécuter. Par exemple, pour nous, cela signifie que dans le cadre de nos projets Talend, nous n’avons pas à gérer cette sécurité au sein de nos jobs. La sécurité est bien gérée par l’infrastructure elle-même.
Bien entendu et pour aller plus loin dans la sécurisation du cluster EMR et de l’accès aux données, il sera utile :
- de mettre en place des mécanismes d’authentification des utilisateurs, par exemple, selon des rôles AWS IAM,
- d’utiliser la communication chiffrée entre les serveurs (TLS),
- d’utiliser Ranger pour sécuriser l’accès aux données au sein même du cluster Hadoop,
- etc
Liens
Process Encrypted Data in Amazon EMR with Amazon S3 and AWS KMS
AWS EMR Options de chiffrement
Securing enterprise big data workloads on AWS
Charly Clairmont
Source image : pixabay.com