Статьи

Ключевые советы по управлению паролями в Sqoop

Sqoop — это популярный инструмент передачи данных для Hadoop. Sqoop позволяет легко импортировать и экспортировать данные из структурированных хранилищ данных, таких как реляционные базы данных, корпоративные хранилища данных и хранилища данных NoSQL. Sqoop также интегрируется с основанными на Hadoop системами, такими как Hive, HBase и Oozie.

В этой записи блога я расскажу о различных возможностях управления паролями в Sqoop. Sqoop — очень стабильный и простой в использовании инструмент для передачи данных в Hadoop и из него. Однако, если вы хотите автоматизировать процесс импорта / экспорта, пароль должен быть в тексте плана, и этим можно злоупотреблять. Вот несколько решений этой проблемы.

1. Используйте защищенный файл в файловой системе

Создайте отдельные файлы для Prod и Development (всегда полезно использовать отдельные учетные записи для Prod и Development).

Установить права доступа к файлам в зависимости от пользователя

ProdFile, только пользователи Prod имеют доступ

1
-rw-------  1 vgunnuProd  staff   1.1M Oct  6  2014 password.txt

Файл Dev, Предоставление группам доступа для чтения — для обмена файлом между членами команды

1
2
3
4
5
-rw-r-----  1 vgunnuDev  staff   1.1M Oct  6  2014 password.txt
 
sqoop import --connect jdbc:mysql://mapr.com/sqoop \
            --username sqoop \
            --password-file /mapr/democluster/opt/passwords/prodpass.txt --table vgunnu

2. Чтение паролей из базы данных

Ведение таблиц базы данных Dev и PROD и использование разрешений MySQL для блокировки таблиц паролей PROD с целью предоставления доступа определенным пользователям из edgodes Prod.

1
2
3
4
5
6
7
# Read password from database
# Select Password from mapr.Prod where applicationdb='mapr.vgunnu'
echo -n $Password > /mapr/democluster/opt/passwords/prodpass.txt
sqoop import --connect jdbc:mysql://mapr.com/sqoop \
            --username vgunnu \
            --password-file /mapr/democluster/opt/passwords/prodpass.txt --table vgunnu
rm /mapr/democluster/opt/passwords/prodpass.txt

3. Используйте базу данных и ожидайте сценарий

В приведенном выше варианте вместо сохранения пароля в файл мы можем использовать скрипт Linux Spawn и Expect.

01
02
03
04
05
06
07
08
09
10
11
12
#!/bin/bash
# Read password from database
# Select Password from mapr.Prod where applicationdb='mapr.vgunnu'
# Read password to variable pwd
/usr/bin/expect «EOF
    spawn sqoop import --connect jdbc:mysql://mapr.com/sqoop --username vgunnu -P --table vgunnu
    expect "Enter password:"
    send "$pwd\r\n"
    set timeout -1  # Wait for Sqoop to finish
    expect "~~~~~~~~~~~~"
    wait
EOF

4. Используйте API Hadoop CredentialProvider

В Hadoop 2.6 была представлена ​​фундаментальная функция — Credential API. API CredentialProvider в Hadoop позволяет разделять приложения и то, как они хранят свои необходимые пароли / секреты. В Sqoop 1.4.5 хранилище ключей API credentail поддерживается Sqoop.

Чтобы создать зашифрованное хранилище ключей учетных данных:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
[mapr@maprdemo ~]$ hadoop credential create msql.vgunnudb -provider jceks://maprfs/user/mapr/mysql.password.m.jceks
Enter password:
Enter password again:
msql.vgunnudb has been successfully created.
org.apache.hadoop.security.alias.JavaKeyStoreProvider has been updated.
 
[mapr@maprdemo ~]$ hadoop credential list -provider jceks://maprfs/user/mapr/mysql.password.m.jceks
Listing aliases for CredentialProvider: jceks://maprfs/user/mapr/mysql.password.m.jceks
msql.vgunnudb
 
sqoop import -Dhadoop.security.credential.provider.path=jceks://maprfs/user/mapr/mysql.password.m.jceks \
            --connect jdbc:mysql://mapr.com/sqoop \
            --username vgunnu \
            --password-file /mapr/democluster/opt/passwords/prodpass.txt --table vgunnu \
             -–password-alias msql.vgunnudb

В этом сообщении вы узнали о различных параметрах управления паролями в Sqoop. Если у вас есть какие-либо дополнительные вопросы, пожалуйста, задавайте их в разделе комментариев ниже.

Ссылка: Основные советы по управлению паролями в Sqoop от нашего партнера по JCG Венката Гунну в блоге Mapr .