Cấu hình đăng nhập oAuth2 cho Kibana | Config login with Google by oAuth2 Proxy for Kibana

0
286

Mặc định Kibana chỉ hỗ trợ đăng nhập bằng tài khoản/mật khẩu với x-pack.

Tuy nhiên đăng nhập bằng user/pass rất khó quản lý, đối với môi trường công ty chúng ta nên sử dụng đăng nhập bằng tài khoản bên thứ 3 như Gsuite, Github…

Nhưng vì Kibana không hỗ trợ việc này nên chúng ta cần thông qua 1 thằng là oauth2_proxy

Mô hình như sau:

Cơ bản là chúng ta sẽ cần tạo các tài khoản trong Kibana theo đúng user của email

VD [email protected] > tạo user kiennd trong kibana. Khi đăng nhập oauth2_proxy bằng email [email protected], 1 cơ chế “mạo danh” sẽ cho phép đồng thời đăng nhập vào Kibana bằng đúng user kiennd.

Cách này yêu cầu tất cả user Kibana phải đặt chung 1 password (lý do sẽ giải thích bên dưới). Cũng không phải nguy cơ bảo mật gì vì chúng ta chỉ có thể đăng nhập bằng oAuth2 chứ không đăng nhập bằng pass.

Đầu tiên, cài đặt, cấu hình ELK với X-pack theo bài viết sau:

https://hoctapit.com/category/linux/elk-stack/

Lưu ý, từ phiên bản 6.3 X-pack đã được tích hợp sẵn vào trong Kibana và Elasticsearch, lên ver 7 còn được free luôn. Mình đang sử dụng ver 6.4.2, rảnh sẽ upgrade lên ver 7.

Cấu hình thêm trong kibana.yml:

Điều này sẽ cho phép chúng ta “mạo danh” theo cơ chế đã nói ở phía trên.

> restart Kibana.

Tạo Google credential để đăng nhập:

Tham khảo:https://o7planning.org/vi/11123/tao-google-api-console-project-va-oauth2-client-id

Lưu ý:

Authorized JavaScript origins: Domain trang log, ví dụ https://logs.thit1con.ga

Authorized redirect URIs: https://logs.thit1con.ga/oauth2/callback

Lưu lại client_id và secret.

Cài đặt oauth2_proxy:

https://github.com/bitly/oauth2_proxy/releases

Tạo file config /etc/oauth2_proxy/oauth2_proxy.cfg

https_address = “127.0.0.1:443” : Open oauth_proxy ở port 443 (mặc định là 4180)

## TLS Settings: Cấu hình https bằng cert Lets Encrypt

email_domains: domain của Gsuit.

upstreams: Port của nginx sẽ cấu hình phía sau.

Client_id và client_secret: đã tạo phía trên

Còn lại giữ nguyên.

Tạo service oauth2_proxy:

Start service oauth2_proxy:

Tạo file config nginx:

Lưu ý, nginx phải compli thêm module set-misc-nginx-module

https://github.com/openresty/set-misc-nginx-module

Giải thích: config này sẽ gọi đến Kibana với remote_user là user của email (vd [email protected] thì remote_user là kiennd)

Vì chỉ lấy được user, không thể lấy password nên phần password các bạn phải đặt phức tạp chút và tất cả các tài khoản Kibana đều phải tạo chung password này.

nginx sẽ mã hoá base64 cụm user:pass để mạo danh đăng nhập vào Kibana. Nếu user:pass này không trùng với user trong Kibana sẽ không đăng nhập được.

Start nginx lên và đăng nhập thử

LEAVE A REPLY

Please enter your comment!
Please enter your name here