HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

Cách thực hiện:Bật Xác thực và Ủy quyền Người dùng trong Apache HBase

Với cấu hình Apache HBase mặc định, mọi người được phép đọc và ghi vào tất cả các bảng có sẵn trong hệ thống. Đối với nhiều thiết lập doanh nghiệp, loại chính sách này không được chấp nhận.

Quản trị viên có thể thiết lập tường lửa quyết định máy nào được phép giao tiếp với HBase. Tuy nhiên, các máy có thể vượt qua tường lửa vẫn được phép đọc và ghi vào tất cả các bảng. Loại cơ chế này hiệu quả nhưng không đủ vì HBase vẫn không thể phân biệt giữa nhiều người dùng sử dụng cùng một máy khách và vẫn không có mức độ chi tiết liên quan đến quyền truy cập bảng HBase, họ cột hoặc bộ định tính cột.

Trong bài đăng này, chúng tôi sẽ thảo luận về cách Kerberos được sử dụng với Hadoop và HBase để cung cấp Xác thực người dùng Và cách HBase triển khai Ủy quyền người dùng để cấp cho người dùng quyền đối với các hành động cụ thể trên một tập dữ liệu cụ thể.

HBase bảo mật:Xác thực &Ủy quyền

HBase an toàn nhằm mục đích bảo vệ chống lại những kẻ đánh hơi, người dùng không được xác thực / trái phép và các cuộc tấn công dựa trên mạng. Nó không bảo vệ chống lại những người dùng được ủy quyền vô tình xóa tất cả dữ liệu.

HBase có thể được định cấu hình để cung cấp Xác thực người dùng , điều này đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể giao tiếp với HBase. Hệ thống ủy quyền được triển khai ở cấp RPC và dựa trên Lớp xác thực và bảo mật đơn giản (SASL), hỗ trợ (trong số các cơ chế xác thực khác) Kerberos. SASL cho phép xác thực, thương lượng mã hóa và / hoặc xác minh tính toàn vẹn của thư trên cơ sở mỗi kết nối (thuộc tính cấu hình “hbase.rpc.protection”).

Bước tiếp theo sau khi bật Xác thực người dùng là cấp cho quản trị viên khả năng xác định một loạt các quy tắc Cấp quyền người dùng cho phép hoặc từ chối các hành động cụ thể. Hệ thống ủy quyền, còn được gọi là Bộ đồng xử lý điều khiển truy cập hoặc Danh sách kiểm soát truy cập (ACL), có sẵn từ HBase 0.92 (CDH4) trở đi và cung cấp khả năng xác định chính sách ủy quyền (Đọc / Ghi / Tạo / Quản trị), với bảng / họ / tính chi tiết của bộ định tính, cho một người dùng được chỉ định.

Kerberos

Kerberos là một giao thức xác thực được nối mạng. Nó được thiết kế để cung cấp xác thực mạnh mẽ cho các ứng dụng máy khách / máy chủ bằng cách sử dụng mật mã khóa bí mật. Giao thức Kerberos sử dụng mật mã mạnh (AES, 3DES,…) để máy khách có thể chứng minh danh tính của mình với máy chủ (và ngược lại) qua kết nối mạng không an toàn. Sau khi máy khách và máy chủ đã sử dụng Kerberos để chứng minh danh tính của họ, họ cũng có thể mã hóa tất cả thông tin liên lạc của mình để đảm bảo quyền riêng tư và tính toàn vẹn của dữ liệu khi họ tiến hành công việc kinh doanh của mình.

Giao thức đổi vé

Ở cấp độ cao, để truy cập một dịch vụ bằng Kerberos, mỗi khách hàng phải thực hiện theo ba bước:

  • Xác thực Kerberos:Máy khách tự xác thực với Máy chủ Xác thực Kerberos và nhận Phiếu cấp vé (TGT).
  • Ủy quyền Kerberos:Máy khách yêu cầu một phiếu dịch vụ từ Máy chủ cấp vé, máy chủ này sẽ phát hành một vé và một khóa phiên nếu TGT của máy khách gửi kèm theo yêu cầu là hợp lệ.
  • Yêu cầu dịch vụ:Máy khách sử dụng phiếu dịch vụ để tự xác thực với máy chủ đang cung cấp dịch vụ mà máy khách đang sử dụng (ví dụ:HDFS, HBase,…)

HBase, HDFS, ZooKeeper SASL

Vì HBase phụ thuộc vào HDFS và ZooKeeper, nên HBase an toàn dựa vào HDFS an toàn và ZooKeeper an toàn. Điều này có nghĩa là máy chủ HBase cần tạo một phiên dịch vụ an toàn, như được mô tả ở trên, để giao tiếp với HDFS và ZooKeeper.

Tất cả các tệp được viết bởi HBase được lưu trữ trong HDFS. Như trong hệ thống tệp Unix, kiểm soát truy cập do HDFS cung cấp dựa trên người dùng, nhóm và quyền. Tất cả các tệp do HBase tạo đều có “hbase” là người dùng, nhưng quyền kiểm soát truy cập này dựa trên tên người dùng do hệ thống cung cấp và mọi người có thể truy cập vào máy đều có khả năng “sudo” với tư cách là người dùng “hbase”. HDFS bảo mật thêm các bước xác thực đảm bảo rằng người dùng “hbase” được tin cậy.

ZooKeeper có Danh sách kiểm soát truy cập (ACL) trên mỗi znode cho phép người dùng truy cập đọc / ghi dựa trên thông tin người dùng theo cách tương tự như HDFS.

HBase ACL

Giờ đây, người dùng của chúng tôi đã được xác thực qua Kerberos, chúng tôi chắc chắn rằng tên người dùng mà chúng tôi nhận được là một trong những người dùng đáng tin cậy của chúng tôi. Đôi khi điều này không đủ chi tiết - chúng tôi muốn kiểm soát rằng một người dùng được chỉ định có thể đọc hoặc ghi bảng. Để làm điều đó, HBase cung cấp cơ chế Ủy quyền cho phép truy cập hạn chế cho những người dùng được chỉ định.

Để bật tính năng này, bạn phải bật bộ đồng xử lý Access Controller bằng cách thêm nó vào hbase-site.xml dưới lớp bộ đồng xử lý máy chủ chính và khu vực. (Xem cách thiết lập cấu hình bảo mật HBase tại đây.)

Bộ đồng xử lý là mã chạy bên trong mỗi Máy chủ Vùng HBase và / hoặc Máy chủ. Nó có thể chặn hầu hết các hoạt động (đặt, lấy, xóa,…) và chạy mã tùy ý trước và / hoặc sau khi hoạt động được thực thi.

Sử dụng khả năng này để thực thi một số mã trước mỗi thao tác, bộ đồng xử lý Access Controller có thể kiểm tra các quyền của người dùng và quyết định xem người dùng có thể hoặc không thể thực hiện thao tác đó hay không.

Vỏ HBase có một số lệnh cho phép quản trị viên quản lý các quyền của người dùng:

  • grant [table] [family] [qualifier]
  • revoke [table] [family] [qualifier]

Như bạn thấy, quản trị viên có khả năng hạn chế quyền truy cập của người dùng dựa trên giản đồ bảng:

  • Chỉ cấp quyền đọc User-W cho Table-X / Family-Y (grant 'User-W', 'R', 'Table-X', 'Family-Y' )
  • Cấp cho User-W toàn quyền đọc / ghi đối với Qualifier-Z (grant 'User-W', 'RW', 'Table-X', 'Family-Y', 'Qualifier-Z' )

Quản trị viên cũng có khả năng cấp quyền toàn cầu, hoạt động ở cấp cụm, chẳng hạn như tạo bảng, cân bằng vùng, tắt cụm, v.v.:

  • Cung cấp cho User-W khả năng tạo bảng (grant 'User-W', 'C' )
  • Cung cấp cho Người dùng-W khả năng quản lý cụm (grant 'User-W', 'A' )

Tất cả các quyền được lưu trữ trong một bảng được tạo bởi bộ đồng xử lý Access Controller, được gọi là _acl_. Khóa chính của bảng này là tên bảng mà bạn chỉ định trong lệnh cấp. Bảng _acl_ chỉ có một họ cột và mỗi định tính mô tả mức độ chi tiết của quyền đối với một bảng / người dùng cụ thể. Giá trị chứa các quyền thực tế được cấp.

Như bạn có thể thấy, các lệnh của vỏ HBase có liên quan chặt chẽ đến cách dữ liệu được lưu trữ. Lệnh cấp thêm hoặc cập nhật một hàng và lệnh thu hồi sẽ xóa một hàng khỏi bảng _acl_.

Bộ điều khiển truy cập ẩn

Như đã đề cập trước đây, bộ đồng xử lý Access Controller sử dụng khả năng chặn từng yêu cầu của người dùng và kiểm tra xem người dùng có quyền thực thi các hoạt động hay không.

Đối với mỗi thao tác, Access Controller cần truy vấn bảng _acl_ để xem liệu người dùng có quyền thực thi thao tác hay không.

Tuy nhiên, hoạt động này có thể có tác động tiêu cực đến hiệu suất. Giải pháp để khắc phục sự cố này là sử dụng bảng _acl_ cho sự bền bỉ và ZooKeeper để tăng tốc độ tra cứu quyền. Mỗi máy chủ khu vực tải bảng _acl_ trong bộ nhớ và nhận thông báo về các thay đổi bởi ZkPermissionWatcher. Theo cách này, mọi máy chủ khu vực đều có giá trị được cập nhật mọi lúc và mỗi lần kiểm tra quyền được thực hiện bằng cách sử dụng bản đồ trong bộ nhớ.

Lộ trình

Mặc dù Kerberos là một hệ thống xác thực ổn định, đã được kiểm tra và chứng minh, tính năng HBase ACL vẫn rất cơ bản và ngữ nghĩa của nó vẫn đang phát triển. HBASE-6096 là JIRA ô làm tài liệu tham khảo cho tất cả các cải tiến để vận chuyển trong phiên bản 2 của tính năng ACL.

Một chủ đề mở khác về ủy quyền và kiểm soát truy cập đang triển khai hệ thống bảo mật per-KeyValue ( HBASE-6222 ) sẽ cung cấp khả năng có các giá trị khác nhau trên cùng một ô được liên kết với thẻ bảo mật. Điều đó sẽ cho phép hiển thị một phần thông tin cụ thể dựa trên quyền của người dùng.

Kết luận

HBase Security bổ sung hai tính năng bổ sung cho phép bạn bảo vệ dữ liệu của mình trước những kẻ dòm ngó hoặc các cuộc tấn công mạng khác (bằng cách sử dụng Kerberos để xác thực người dùng và mã hóa thông tin liên lạc giữa các dịch vụ) và cho phép bạn xác định các chính sách Cấp quyền của Người dùng, hạn chế hoạt động và giới hạn khả năng hiển thị dữ liệu cho người dùng cụ thể.

Matteo Bertozzi là Kỹ sư phần mềm tại Spotify và Nhà tư vấn HBase tại Cloudera.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đưa hỗ trợ giao dịch vào Cơ sở dữ liệu hoạt động của Cloudera

  2. 20 Sự khác biệt đáng chú ý giữa Hadoop 2.x và Hadoop 3.x

  3. Apache HBase I / O - HFile

  4. 6 tính năng hàng đầu của HDFS - Hướng dẫn sử dụng Hadoop HDFS

  5. Tương lai của Hadoop - Dự đoán về tiền lương và công việc trong phân tích dữ liệu lớn