一、Apache Sentry
Apache Sentry 是一種輕量級的、適用於Hadoop的細粒度許可權控制系統,它可以提供靈活的基於角色的訪問控制,在集群中控制對數據的訪問。
Apache Sentry 可以在管理界面中配置數據許可權,創建角色並授權,由管理員進行賬號維護。它支持對Hadoop系統中的多種數據存儲方式,如Hive、HBase等。
使用 Apache Sentry 可以有效加強數據安全性,避免用戶惡意篡改、泄露數據等情況的發生。
二、Apache Sentry Plugin日誌
Apache Sentry Plugin 日誌 是 Apache Sentry 的一個插件,用於記錄許可權控制系統中用戶訪問的日誌信息。
它通過簡單配置參數可以與 Apache Sentry 現有系統整合,記錄用戶訪問數據時的詳細信息,如用戶ID、操作IP、操作時間等。這些信息可以通過工具進行分析,找出不合規的操作並及時糾正。
Apache Sentry Plugin 日誌 可以大幅提升系統的用戶安全審計效率,是一個非常有用的插件。
三、Apache Sentry和Ranger
Apache Sentry 和 Ranger 都是用於安全控制的Hadoop插件,它們的目標都是提供集中的管理系統,並且支持多個Hadoop組件。
但是Apache Sentry 和 Ranger 在設計理念上略有不同,Apache Sentry 更注重角色策略,提供了非常靈活的角色管理、授權和審計功能,而Ranger 更注重服務整體安全架構,同時最近對數據安全方面進行了多方面的優化升級。
根據實際需求,可以根據不同的場景和目標選擇使用 Apache Sentry 或 Ranger 進行數據安全控制管理。
四、Apache Sentry停止維護
Apache Sentry曾經是Hadoop生態環境中扮演著非常重要角色的開源許可權管理方案之一,但在2020年初,由於管理團隊沒有人繼續維護這個項目,官方決定停止維護和更新。這也標誌著 Apache Sentry 脫離了Hadoop的生態環境。
雖然 Apache Sentry 不再維護,但仍然有很多機構在使用它,因為它在安全性、易用性和穩定性方面的表現都非常出色。對於舊有的項目,繼續沿用 Apache Sentry 也是一種合理的選擇。
代碼示例
public class SentryAuthorizationPlugin implements AuthorizationPlugin { private final static String LOGGER_NAME = SentryAuthorizationPlugin.class.getName(); private final static Logger logger = LoggerFactory.getLogger(LOGGER_NAME); public SentryAuthorizationPlugin() { } @Override public synchronized void authorize(ConnectorSession session, SchemaTableName tableName) { String user = session.getUser(); if (user.equals("admin")) { return; } String databaseName = tableName.getSchemaName(); String tableNameStr = tableName.getTableName(); try { //獲取連接 Boolean[] result = SentryClientLookup.getSentryClientForDatabase(databaseName) .hasTablePrivileges(user, Collections.singletonList(tableNameStr), Collections.singletonList(SentryPrincipalType.USER), Privilege.ALL.toString()); for (Boolean bool : result) { if (!bool) { String msg = "User " + user + " is not authorized to access " + tableNameStr; //記錄日誌 logger.warn(msg); throw new AccessDeniedException(msg); } } } catch (Exception e) { throw new PrestoException(GENERIC_INTERNAL_ERROR, e); } } @Override public void onRolesChanged() { } }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152284.html