Безопасность про зоопарка

Я столкнулся с проблемой безопасности зоопарка. У меня есть зоопарк и кафка, и я использую sasl для защиты зоопарка. В то время как я обнаружил, что в zkcli есть ошибка, даже если я не предоставляю имя пользователя и пароль sasl, я все равно могу получить доступ к znode zoopkeeper. Проблема объясняется ниже:

http://zookeeper-user.578899.n2.nabble.com/SASL-for-Client-connections-td7583502.html

Интересно, есть ли способ сделать зоопарка безопаснее. Я знаю, что setacl может защитить znode zookeeper, но я обнаружил, что это вызовет некоторую ошибку kafka при использовании setcal в zookeeper. Есть ли способ лучше? Большое спасибо.

1 ответ

Решение

Не уверен, что это поможет вам, но, возможно,:)

Вот что я сделал для части вашей проблемы (без SASL): белый список действительных клиентских IP-адресов.

  • добавить в zkServer.sh-Dzookeeper.authProvider.1=MyCustomIPAuthenticationProvider

  • создать все znodes, используя withACL(ZooDefs.Ids.CREATOR_ALL_ACL) (при условии куратора)

а также

public class MyCustomIPAuthenticationProvider extends org.apache.zookeeper.server.auth.IPAuthenticationProvider {

    private static Set<String> validHosts = new HashSet<>(); // todo populate

    @Override
    public KeeperException.Code handleAuthentication(org.apache.zookeeper.server.ServerCnxn cnxn, byte[] authData) {
        String id = cnxn.getRemoteSocketAddress().getAddress().getHostAddress();
        if (! matches(id, null) || ! matches(new String(authData), null)) {
            return org.apache.zookeeper.KeeperException.Code.AUTHFAILED;
        }
        return super.handleAuthentication(cnxn, authData);
    }

    @Override
    public boolean matches(String id, String aclExpr) {
        return validHosts.contains(id);
    }

    @Override
    public boolean isAuthenticated() {
        return true;
    }
}

обратите внимание, что это не на 100% безопасно (клиент может подделать свой IP). (И случай использования был без Кафки!)

Другие вопросы по тегам