В версиях до Redis 6, поскольку основным методом аутентификации безопасности было использование пароля экземпляра Redis для базового управления, было невозможно настроить разные учетные записи в соответствии с разными источниками приложений и управлять ими с помощью более детального контроля разрешений на операции. . Эта статья начинается с информации в списке клиентов и постепенно разъясняет настройки имени клиента, настройки пользователя и управление контролем разрешений Redis.
1. имя клиента
1.1 Проверьте статус подключения клиента
В версии Redis4, когда вы используете команду списка клиентов для проверки состояния подключения клиента, вы можете обнаружить, что у некоторых имен есть имена, но у большинства из них нет контента. Некоторые люди ошибочно полагают, что это имя является именем пользователя для входа в Redis. Например:
127.0.0.1:6379> client list
id=7 addr=127.0.0.1:50194 fd=7 name=testuser age=1222 idle=1185 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client
id=8 addr=127.0.0.1:50238 fd=8 name= age=1180 idle=1174 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client
id=9 addr=127.0.0.1:51394 fd=9 name= age=3 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
Значение каждого столбца в результате команды списка клиентов следующее:
id: 7, Уникальный идентификатор, представляющий клиентсоединять.
addr: 127.0.0.1:50194,клиент IP адрес и номер порта.
fd: 7. Файловый дескриптор клиента (File Descriptor)。
name: testuser, соединяя имя клиента, обычно имя, заданное клиентом самостоятельно, может использоваться для определения источник подключения
age: 1222, продолжительность клиентсоединять составляет 1222 Второй.
idle: 1185, время простоя клиента 1185 Второй.
flags: N, флаг состояния соединения клиента, может включать в себя ряд флагов, таких как "O" Указывает, что в выходном буфере есть неотправленные данные, «S». Указывает, что клиент заблокирован на сервере, «N» указывает на отсутствие специального флага.
db: 0 — база данных, в которой в данный момент находится клиент.
sub: 0, клиент Количество каналов, на которые подписан.
psub: 0, клиент Количество шаблонов, на которые подписана.
multi: -1, клиент не участвует в транзакции (не выполняется) MULTI Заказ). Если клиент выполняет транзакцию, транзакция идентификатор; в противном случае это так. "-1"
qbuf: 0 — длина буфера запроса, то есть длина буфера запроса, который еще не был прочитан.
qbuf-free: 0, Запросите свободную длину буфера.
obl: 0 — длина выходного буфера, то есть длина выходного буфера, который еще не был прочитан.
oll: 0 — длина списка выходного буфера.
omem: 0 — количество байтов памяти, занимаемых выходным буфером клиента.
events: r,выражатьклиентсосредоточиться читаемое событие.
cmd: клиент, указывая, что последняя команда, выполненная клиентом, была CLIENT
Как видно, имя выше — это имя клиента, а не имя пользователя.
1.2 Установите имя подключения клиента
Как видно из приведенного выше содержимого, имя подключения клиента Redis можно настроить. Вы можете использовать команду CLIENT SETNAME для его установки и команду CLIENT GETNAME для его просмотра. Конкретные операции заключаются в следующем:
# настраиватьимя клиента
127.0.0.1:6379> CLIENT SETNAME gjc
OK
#viewимя клиента
127.0.0.1:6379> CLIENT GETNAME
"gjc"
# Просмотр информации о клиентсоединять
127.0.0.1:6379> client list
id=7 addr=127.0.0.1:50194 fd=7 name=testuser age=2338 idle=2301 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client
id=8 addr=127.0.0.1:50238 fd=8 name= age=2296 idle=2290 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client
id=9 addr=127.0.0.1:51394 fd=9 name=gjc age=1119 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
Таким образом, вы можете настроить параметры имени клиента.
1.3 имя Преимущества и недостатки клиента
По умолчанию большинство людей не знают, как работать с Redis. на этой настройке. Но на самом деле клиенты выбирают, устанавливать ли его, исходя из ситуации. Для настроек имя Преимущества и недостатки клиентаследующее:
преимущество:
недостаток:
2. Имя пользователя для входа в базу данных
При выполнении операции со списком клиентов в версии Redis6 вы увидите, что в информации есть еще 2 столбца, например:
127.0.0.1:6479> client list
id=4 addr=127.0.0.1:54352 laddr=127.0.0.1:6479 fd=7 name= age=426 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
Значение двух дополнительных столбцов следующее:
user: по умолчанию — пользователь, которому принадлежит клиент.
redir: -1, флаг перенаправления, указывает на отсутствие перенаправления. 0: Указывает, что соединение клиента было закрыто или перенаправлено на другие узлы. Обычно, когда на узле происходит переключение «главный-подчиненный» или слот в кластере мигрирует, клиент может быть перенаправлен на новый узел. 1: Указывает, что клиент ожидает копирования с подчиненного узла. Обычно это происходит, когда Redis в кластере,Когда главный узел становится подчиненным узлом,Он будет ждать, пока новый главный узел синхронизирует данные с этим узлом.
Среди них мы можем обнаружить, что был добавлен пользовательский флаг. Это связано с тем, что в версию Redis6 была добавлена функция списка управления доступом (ACL), которая может значительно повысить безопасность Redis.
2.1 Создайте имя пользователя
#Создать пользователя,>Далее следует пароль в виде открытого текста.
127.0.0.1:6479> ACL SETUSER testuser1 on >Test123.com
OK
# Список пользователей
127.0.0.1:6479> ACL LIST
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user testuser1 on #b6d18faf7ebcfdce9f8782a0aad13c14e2662fcc08072e2738bcb27d04b96188 &* -@all"
2.2 Вход в систему с аутентификацией учетной записи и пароля
127.0.0.1:6479> AUTH testuser1 Test123.com
OK
127.0.0.1:6479> client list
NOPERM this user has no permissions to run the 'client' command or its subcommand
Поскольку вновь созданный пользователь не имеет разрешения на просмотр списка клиентов, запустите другой сеанс и используйте пользователя по умолчанию для просмотра состояния соединения.
127.0.0.1:6479> client list
id=4 addr=127.0.0.1:54352 laddr=127.0.0.1:6479 fd=7 name= age=9319 idle=12 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20504 events=r cmd=client user=testuser1 redir=-1
id=5 addr=127.0.0.1:56838 laddr=127.0.0.1:6479 fd=8 name= age=6773 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
127.0.0.1:6479>
Вы можете видеть, что соединение с id=4 зарегистрировано с помощью вновь созданной учетной записи testuser1.
3. Заключение
О Редисе Здесь будет кратко продемонстрирована разница между именами пользователей клиента и Авторизоваться. Однако об элементе управления «Разрешения» Redis еще многое предстоит узнать. В будущем мы продолжим демонстрировать, как управлять учетными записями и основными сценариями приложений.
Самое интересное из прошлого
1. Развертывание кластера MHA высокой доступности MySQL
5. Репликация Master-Slave PostgreSQL — физическая репликация.
6. Традиционная точечная репликация MySQL преобразуется в репликацию в режиме GTID онлайн.
7. Шифрование и дешифрование конфиденциальных данных MySQL