monter un cluster AWS EMR avec encryption

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 :

monter cluster AWS EMR avec encryption

Cet autre schéma en donne une vision de l’architecture de chiffrement :

schema AWS architecture 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.

modification de la region dans 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 EMR importance des rôles

 

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 »).

 

configuration de la sécurisation du cluster

 

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 ».

EMR configuratoin avec securisation

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.

 

fichier chiffré sur S3 AWS

 

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