Giới thiệu Apache Knox
1. Apache Knox
Apache Knox Gateway là REST API Getway để tương tác với Apache Hadoop. Nó cung cấp 1 điểm truy cập duy nhất cho tất cả các REST tương tác với các Apache Hadoop cluster.
Knox tích hợp với các hệ thống: Identity Management, SSO.
1.1 Luồng bảo mật
Knox có thể sử dụng cho cả với Hadoop clusters không thiết lập bảo mật và có thiết lập bảo mật. Hình trên là luồng bảo mật khi ứng dụng Knox vào các cluster thiết lập bảo mật với Kerberos:
- Knox tích hợp tốt với các giải pháp quản lý định danh (identity management solutions) như LDAP, Kerberos
- Bảo vệ các thông tin chi tiết của Hadoop cluster: người dùng cuối truy cập qua 1 điểm duy nhất – Knox, các thông tin cụ thể về các host port được ẩn đi
- Đơn giản hóa việc tương tác với các dịch vụ: như ảnh dưới, thay vì phải biết nhiều host và port khác nhau để tương tác với các dịch vụ, người dùng chỉ cần biết 1 host và 1 port duy nhất
1.2 Điểm mạnh
- Truy cập đơn giản với một host, một port duy nhất
Như ảnh dưới, có thể thấy trong Hadoop cluster, các dịch vụ có thể nằm trên các host khác nhau, với các port khác nhau. Với Knox, việc sử dụng các dịch vụ này đơn giản hơn nhiều khi chỉ cần biết một host và một port duy nhất.
Và khi làm việc với hệ thống Multi-Cluster, việc dùng Knox với một host một port cho nhiều cluster khiến việc truy cập các dịch vụ thuận tiện hơn.
- Tăng cường bảo mật
Với Knox, thông tin chi tiết về hệ thống sẽ được ẩn đi (các host, port). Ngoài ra, Knox có thể tích hợp các plugin Vulnerability filter. Và có thể thiết lập SSL cho các dịch vụ không có thiết lập SSL (như hình dưới).
- Kiểm soát tập trung
Với Knox, việc kiểm soát truy nhập/truy xuất hệ thống được tập trung hơn, thuận tiện cho việc quản lý hệ thống.
- Tích hợp hệ thống xác thực
Hỗ trợ LDAP, Active Directory, SSO, SAML và các hệ thống xác thực khác.
2. Các Hadoop Service được hỗ trợ
2.1 Hadoop Services
- Ambari
- WebHDFS (HDFS)
- Templeton (HCatalog)
- Stargate (HBase)
- Oozie
- Hive/JDBC
- Yarn RM
- Storm
2.2 Hadoop UIs
- Name Node UI
- Job History UI
- Oozie UI
- HBase UI
- Yarn UI
- Spark UI
- Ambari UI
- Ranger Admin Console
3. Kết nối Hive Server 2 với JDBC qua Knox
3.1 Hive Server2
Hive là component dùng để truy xuất SQL cho Hadoop. Và Hive Server 2 hỗ trợ kết nối JDBC qua giao thức HTTP.
Sau đây là cách thiết lập cho phép JDBC client kết nối với Hive Server 2 qua Knox với flow:
Beeline (JDBC client) -> JDBC over HTTPS -> Knox -> HTTP -> Hive Server2
3.2 Thiết lập cho Hive
Dùng Ambari (WebUI cho Hadoop), chọn Hive Service > Config và thêm các thiết lập sau:
Lưu thiết lập và restart Hive Service với Ambari.
3.3 Thiết lập cho Knox
Dùng Ambari, chọn Knox > Config > Advanced topology và thêm thiết lập
<service>
<role>HIVE</role>
<url>http://{{hive_server_host}}:{{hive_http_port}}/{{hive_http_path}}</url>
</service>
Lưu thiết lập và restart Knox với Ambari.
3.4 Kết nối Hive Server 2 với JDBC
# Chạy beeline client
/usr/bin/beeline
Hoặc
beeline
# Kết nối Hive Server2
beeline> !connect jdbc:hive2://{{server hostname}}:8443/;ssl=true;sslTrustStore={{SSL TrustStore File}};trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive
# Ví dụ: beeline> !connect jdbc:hive2://oide-hdp24-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.4.0.0-169/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive
# Dùng tài khoản guest
# user: guest
# password: guest-password
# Test
beeline> !connect jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive
Connecting to jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive
Enter username for jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive: guest
Enter password for jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive: **************
Connected to: Apache Hive (version 1.2.1.2.3.2.0-2950)
Driver: Hive JDBC (version 1.2.1.2.3.2.0-2950)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://dev-m1:8443/> # Kết nối thành công
0: jdbc:hive2://dev-m1:8443/> show databases;
+------------------+--+
| database_name |
+------------------+--+
| default |
| test_db |
+------------------+--+
7 rows selected (0.119 seconds)
4. Kết luận
- Knox cung cấp 1 điểm truy cập an toàn duy nhất cho tất cả các tương tác REST với Hadoop.
- Từ đó giúp cho việc kiểm soát, tích hợp, giám sát và tự động hóa việc quản lý, phân tích
5. Tham khảo
- Apache Knox Home Page
- Hadoop REST API Security with Apache Knox Gateway
- Don’t Let Security Be The ‘Elephant in the Room’
- Apache Knox Gateway Overview
- Apache Knox Gateway 0.6.x User’s Guide
- Enable Perimeter Security: Enable Knox to work with kerberos enabled cluster to enable perimeter security using single end point
- HDP Security Overview