Безопасность про зоопарка
Я столкнулся с проблемой безопасности зоопарка. У меня есть зоопарк и кафка, и я использую 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). (И случай использования был без Кафки!)