.jpg)
Cấu Hình Truy Cập Đơn Giản (Simple User Access) Trong Apache HBase
1 Kerberos là gì?
Kerberos là một giao thức xác thực mạng mạnh mẽ được thiết kế để bảo vệ các dịch vụ và người dùng trong môi trường mạng. Nó đảm bảo rằng các bên giao tiếp (ví dụ: máy khách và máy chủ) có thể xác thực lẫn nhau mà không cần phải trao đổi mật khẩu qua mạng, từ đó bảo mật hơn và tránh được các cuộc tấn công giả mạo.
Các thành phần chính của Kerberos:- Key Distribution Center (KDC): Là trung tâm phân phối khóa và có 2 phần chính:
- Authentication Server (AS): Xác thực người dùng khi họ đăng nhập và phát hành một Ticket Granting Ticket (TGT).
- Ticket Granting Server (TGS): Cung cấp ticket cho người dùng khi họ muốn truy cập các dịch vụ cụ thể.
- Ticket: Là chứng nhận mà người dùng nhận được từ KDC, cho phép truy cập vào dịch vụ mà không cần phải gửi lại mật khẩu. Tickets này có thời gian hết hạn và chứa thông tin như thời gian cấp và thời gian hết hạn.
- Client (Máy khách): Người dùng hoặc ứng dụng yêu cầu dịch vụ, cung cấp tên người dùng và mật khẩu để nhận TGT từ AS.
- Service (Dịch vụ): Các ứng dụng hoặc máy chủ mà người dùng muốn truy cập (ví dụ: HBase, HDFS, HTTP server).
Quy trình hoạt động:- Đăng nhập: Khi người dùng đăng nhập, họ cung cấp tên người dùng và mật khẩu. AS xác thực thông tin này và cấp TGT (ticket) cho người dùng.
- Yêu cầu dịch vụ: Khi người dùng muốn truy cập một dịch vụ (chẳng hạn như HBase), họ gửi yêu cầu đến TGS cùng với TGT đã nhận được.
- Cấp ticket dịch vụ: TGS xác minh TGT và cấp một service ticket cho người dùng.
- Truy cập dịch vụ: Người dùng sử dụng service ticket để truy cập dịch vụ mà không cần phải gửi lại mật khẩu.
Các ưu điểm của Kerberos:- Bảo mật: Không truyền mật khẩu qua mạng, sử dụng các ticket để xác thực.
- Xác thực lẫn nhau: Cả người dùng và dịch vụ đều xác thực nhau, tránh giả mạo.
- Mật mã mạnh mẽ: Dữ liệu trao đổi được mã hóa, bảo vệ thông tin trong quá trình truyền tải.
2. Run hadoop
$docker-compose up -d
- Khi chạy cụm hadoop ta thấy container master và slave1 không truy cập đc vào hdfs. Vì hdfs đang authen bằng kerberos, master, slave1 không có keytab hợp lệ nên không thể truy cập
- Truy cập vào kdc-server
$docker exec -it kdc-server bash
- Tạo hadoop.keytab cho master, slave1 (trên thực tế mỗi service, server sẽ có mỗi keytab khác nhau để bảo đảm bảo mật, ở đây chỉ dùng 1 keytab để xác thực cho tất cả service). File hadoop.keytab sẽ được copy sang các service khác để có thể login mà không cần mật khẩu (ở đây là service master, slave1)
- Tạo principal
bash> kadmin.local -q "addprinc -randkey hadoop/cluster@EXAMPLE.COM"
- Tạo keytab
bash> kadmin.local -q "ktadd -k /shared/keytabs/hadoop.keytab
hadoop/cluster@EXAMPLE.COM"
- Truy cập vào slave1
$docker exec -it slave1 bash
- Lấy ticket cho slave1
bash> kinit -kt /shared/keytabs/hadoop.keytab hadoop/cluster@EXAMPLE.COM
- Truy cập vào master
$docker exec -it master bash
- Lấy ticket cho master
bash> kinit -kt /shared/keytabs/hadoop.keytab hadoop/cluster@EXAMPLE.COM
- start hbase
bash> start-hbase.sh
bash> hbase shell (chạy được trên slave1 và master)
Kết quả lệnh whoami có (auth: KERBEROS) là thành công