Система управления разрешениями Redis (1): имя клиента и имя пользователя.
Система управления разрешениями Redis (1): имя клиента и имя пользователя.

В версиях до Redis 6, поскольку основным методом аутентификации безопасности было использование пароля экземпляра Redis для базового управления, было невозможно настроить разные учетные записи в соответствии с разными источниками приложений и управлять ими с помощью более детального контроля разрешений на операции. . Эта статья начинается с информации в списке клиентов и постепенно разъясняет настройки имени клиента, настройки пользователя и управление контролем разрешений Redis.

1. имя клиента

1.1 Проверьте статус подключения клиента

В версии Redis4, когда вы используете команду списка клиентов для проверки состояния подключения клиента, вы можете обнаружить, что у некоторых имен есть имена, но у большинства из них нет контента. Некоторые люди ошибочно полагают, что это имя является именем пользователя для входа в Redis. Например:

Язык кода:javascript
копировать
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

Значение каждого столбца в результате команды списка клиентов следующее:

Язык кода:javascript
копировать
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 для его просмотра. Конкретные операции заключаются в следующем:

Язык кода:javascript
копировать
# настраиватьимя клиента
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. на этой настройке. Но на самом деле клиенты выбирают, устанавливать ли его, исходя из ситуации. Для настроек имя Преимущества и недостатки клиентаследующее:

преимущество:

  • Определите источник подключения:настраиватьимя клиента Слова можно использовать для идентификациисоединятьисточник。В многопользовательской системе,Можно установить уникальное имя для каждого пользователя,Легко идентифицировать и различать отдельные соединения.
  • Мониторинг и протоколирование:Мониторинг Redis соединятьчас,проходитьимя Слово клиента облегчает выявление и диагностику проблем. В журнале есть имя Клиентское слово может сделать журнал более читабельным и удобным в обслуживании.
  • Управление разрешениями:в некоторых сценариях,Управление может производиться от имени клиента разрешениями. По названию можно определить, имеет ли определенное соединение Разрешения на выполнение определенной операции, тем самым повышая безопасность.

недостаток:

  • дополнительные накладные расходы:каждый разсоединять都需要настраивать名字,Это может добавить некоторые дополнительные накладные расходы. Имя не является необходимой информацией,Когда количество подключений очень велико,Это может оказать некоторое влияние на производительность.
  • вопросы конфиденциальности:имя Слово клиент может содержать некоторую конфиденциальную информацию, особенно в некоторых случаях, если имя Слово «клиент» — это имя пользователя и другая личная информация пользователя. Это может вызвать вопросы конфиденциальности, следует обращаться с осторожностью.
  • Не подходит для анонимных подключений:в некоторых сценариях,Может возникнуть необходимость в анонимном подключении. Установка имени может не подойти анонимным пользователям.,Потому что анонимные пользователи не хотят раскрывать личную информацию.

2. Имя пользователя для входа в базу данных

При выполнении операции со списком клиентов в версии Redis6 вы увидите, что в информации есть еще 2 столбца, например:

Язык кода:javascript
копировать
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

Значение двух дополнительных столбцов следующее:

Язык кода:javascript
копировать
user: по умолчанию — пользователь, которому принадлежит клиент.
redir: -1, флаг перенаправления, указывает на отсутствие перенаправления. 0: Указывает, что соединение клиента было закрыто или перенаправлено на другие узлы. Обычно, когда на узле происходит переключение «главный-подчиненный» или слот в кластере мигрирует, клиент может быть перенаправлен на новый узел. 1: Указывает, что клиент ожидает копирования с подчиненного узла. Обычно это происходит, когда Redis в кластере,Когда главный узел становится подчиненным узлом,Он будет ждать, пока новый главный узел синхронизирует данные с этим узлом.

Среди них мы можем обнаружить, что был добавлен пользовательский флаг. Это связано с тем, что в версию Redis6 была добавлена ​​функция списка управления доступом (ACL), которая может значительно повысить безопасность Redis.

2.1 Создайте имя пользователя

Язык кода:javascript
копировать
#Создать пользователя,>Далее следует пароль в виде открытого текста.
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 Вход в систему с аутентификацией учетной записи и пароля

Язык кода:javascript
копировать
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

Поскольку вновь созданный пользователь не имеет разрешения на просмотр списка клиентов, запустите другой сеанс и используйте пользователя по умолчанию для просмотра состояния соединения.

Язык кода:javascript
копировать
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

2. Mysql8.0 новые пользователи и изменения правил шифрования

3. Инструмент запроса больших данных, который в 10 раз быстрее, чем Hive – вуаля!

4. Инструменты мониторинга выходят за рамки: Prometheus+Grafana отслеживает базы данных MySQL и Redis.

5. Репликация Master-Slave PostgreSQL — физическая репликация.

6. Традиционная точечная репликация MySQL преобразуется в репликацию в режиме GTID онлайн.

7. Шифрование и дешифрование конфиденциальных данных MySQL

8. Резервное копирование и восстановление данных MySQL (1)

9. Резервное копирование и восстановление данных MySQL (2)

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода