Эта статья посвящена добавлению SSL в существующую среду Presto. Конфигурация Presto и Hive Metastore предполагается как завершенная. Мы также освещаем, как подключиться к нему с помощью JDBC.
Однако на некоторое время мы использовали PRESTO без SSL, нам нужно было подключить нашу платформу для анализа микропротегии к PRESTO, и это требовало использования SSL -соединения.
- Создать сертификат самостоятельно подписанного
- Конфигурация безопасности EMR
- Создать EMR
- Подключите и загрузите TrustStore
- Подключите с помощью JDBC
Создать сертификат самостоятельно подписанного
Следуйте инструкциям Здесь Чтобы создать сертификат, подписанный. Мне также нужен был адрес псевдонима DNS Route53 для EMR, presto.mydomain.com. Это позволяет мне настроить клиент JDBC для использования presto.mydomain.com в качестве URL без необходимости обновлять клиента при восстановлении EMR. EMR обновит запись Route53 с помощью IP Master Node во время начальной загрузки. Я расширил запрос на сертификат, чтобы включить этот дополнительный домен.
cp /etc/ssl/openssl.cnf . echo '[ subject_alt_name ]' >> openssl.cnf echo 'subjectAltName = DNS:presto.mydomain.com, DNS:*.us-west-2.compute.internal'>> openssl.cnf openssl req -x509 -newkey rsa:1024 -keyout privateKey.pem -out certificateChain.pem -days 365 -nodes -config openssl.cnf -extensions subject_alt_name -subj '/C=US/ST=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.us-west-2.compute.internal' cp certificateChain.pem trustedCertificates.pem zip -r -X prestosslcerts.zip certificateChain.pem privateKey.pem trustedCertificates.pem
Теперь загрузите сертификат в место S3, которое EMR может прочитать.
aws s3 cp prestosslcerts.zip s3://my-emr-bucket/prestosslcerts.zip
Конфигурация безопасности EMR
Создайте новую конфигурацию безопасности EMR, которая использует ZIP сертификата для шифрования в транзите.
Создать EMR
Создайте свой EMR, но используйте его новую конфигурацию безопасности.
Подключите и загрузите TrustStore
SSH в ваш мастер EMR
[hadoop@ip-10-100-10-10 ~]$ cat /etc/hadoop/conf/ssl-client.xmlssl.client.keystore.keypassword xxxxxxxxxx ssl.client.truststore.reload.interval 10000 ssl.client.keystore.location /usr/share/aws/emr/security/conf/keystore.jks ssl.client.truststore.password xxxxxxxxxx ssl.client.truststore.type jks ssl.client.truststore.location /usr/share/aws/emr/security/conf/truststore.jks ssl.client.keystore.password xxxxxxxxxx ssl.client.keystore.type jks
Обратите внимание на следующее:
ssl.client.truststore.locationssl.client.truststore.password
Тот же файл TrustStore.jks можно использовать для подключения к любому EMR, если они используют ту же конфигурацию безопасности.
Посмотреть TrustStore
Необязательно: используйте команду ниже, чтобы просмотреть сертификат TrustStore
keytool -list -v -keystore /usr/share/aws/emr/security/conf/truststore.jks [ssl.client.truststore.password]
Измените пароль TrustStore
Необязательно: если вам потребуется, пароль TrustStore может быть изменен. Это полезно, если вы хотите загрузить сертификат снова без необходимости обновлять пароли клиентов.
cp /usr/share/aws/emr/security/conf/truststore.jks /root/truststore.jk keytool -storepasswd -keystore /root/truststore.jks Enter keystore password: <== ssl.client.truststore.password New keystore password: <== user specified password
Подключите с помощью JDBC
Скопируйте файл TrustStore.jks из TrustStore.Location, обычно /USR/Share/aws/emr/security/conf/truststore.jks вашему клиенту.
Либо скачать драйвер Presto JDBC https://prestosql.io/download.html Или копирование из EMR/USR/LIB/PRESTO/PRESTO-JDBC/
URL -адрес соединения будет выглядеть как jdbc: presto://presto.mydomain.com: 8446/hive/product_usage? ssl = true & ssltruststorepath =
Использование SQL Workbench/J
Откройте SQL Workbench/J File> Управление драйверами
- Создать новую запись
- Имя: Presto JDBC Driver
- Библиотека: C: \ local \ path \ presto-jdbc-0.228.jar
- ХОРОШО
Файл> Окно подключения
- Имя: Prestossl
- Водитель: Presto JDBC Driver
- URL: JDBC: Presto://presto.mydomain.com: 8446/каталог/схема
- Имя пользователя: Hadoop
- Пароль: пусто
Расширенные свойства
- SSL True
- Ssltruststorepath C: \ local \ path \ truststore.jks
- SsltrustStorePassword [ssl.client.truststore.password]
Оригинал: «https://dev.to/theyoungones2/creating-an-emr-with-presto-ssl-4091»