История изменений
Исправление sanwashere, (текущая версия) :
Там только указанная реализация имеется, которая разрешает всех. Если нужен «белый» список адресов, то необходимо писать свою реализацию.
Что-то вроде этого:
package org.example.cassandra.auth;
import org.apache.cassandra.auth.IInternodeAuthenticator;
import org.apache.cassandra.exceptions.ConfigurationException;
import java.io.UncheckedIOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.file.Files;
import java.util.Objects;
import java.util.stream.Collectors;
public final class WhiteListAuthenticator
implements IInternodeAuthenticator
{
private static final File CONFIG_FILE = new File("/etc/cassandra/internode_whitelist");
private final Set<InetAddress> allowed;
public WhiteListAuthenticator()
{
try {
allowed = Files.readAllLines(CONFIG_FILE.toPath())
.stream()
.map(line -> {
try {
return InetAddress.getByName(line);
}
catch (UnknownHostException e) {
throw new RuntimeException(e);
}
})
.collect(Collectors.toSet());
}
catch (IOException e) {
throw new UncheckedIOException(e);
}
}
@Override
public boolean authenticate(InetAddress remoteAddress, int remotePort)
{
Objects.requireNonNull(remoteAddress, "null_remote_address");
return allowed.contains(remoteAddress);
}
@Override
void validateConfiguration()
throws ConfigurationException
{
// No-op.
}
}
И после компиляции подсунуть так, чтобы Cassandra его могла видеть. Дальше останется только прописать:
internode_authenticator: org.example.cassandra.auth.WhiteListAuthenticator
Ну и указать список адресов в /etc/cassandra/internode_whitelist.
Исходная версия sanwashere, :
Там только указанная реализация имеется, которая разрешает всех. Если нужен «белый» список адресов, то необходимо писать свою реализацию.