В общем, все, что вам нужно для подключения к memcached серверу, это имя хоста и порт. Учитывая, что это означает, что любой может подключиться к моему серверу и получить мою информацию, что является плохой вещью. Я прочитал, что могу реализовать SASL, требуя какие-то учетные данные, но не могу найти Как установить Memcached с SASL для начинающих статье, и мне было интересно, смогу ли я просто настроить его так, чтобы подключался только определенный IP?
У меня очень мало доступа к серверу, потому что я на виртуальном хостинге с самым дешевым тарифом.
Если ваше приложение работает на том же сервере, где находится memcached, вы можете использовать сокетные соединения вместо tcp:
memcached -s /tmp/memcached.socket -m 256 -u nobody
Затем вы можете получить доступ к memcached из вашего приложения (версия php):
$memcache = new Memcached;
$memcache->addServer('unix:///tmp/memcached.socket',0);
Кстати, memcache будет работать немного быстрее с сокетами, довольно стандартным TCP-соединением.
Если вы установили memcache на отдельном сервере, вы можете использовать Iptables фильтровать входящие соединения в memcached процесс. Или любой другой брандмауэр.
Memcached поддерживает только аутентификацию через SASL и только если она была скомпилирована с поддержкой SASL. Это означает, что вы, вероятно, не сможете установить его самостоятельно на эту машину.
Но это даже не имеет значения: даже если ваш поддерживаемый SASL поддерживает, он все равно предоставит аутентифицированному пользователю доступ к все данные. Memcached не «разбивает» данные пользователей. (Это по крайней мере, как я читаю документация. Пожалуйста, поправьте меня, если кто-нибудь найдет доказательства обратного.)
Поэтому вас должны беспокоить другие пользователи на том же сервере, имеющие доступ к Memcached. Они могут читать и изменять все, что вы сохранили в локальном экземпляре Memcache — SASL или нет.
Кстати, правильно настроенный Memcached будет прослушивать только локальные интерфейсы. Поэтому вам не нужно беспокоиться о том, что к нему можно получить доступ снаружи.