Как база данных Milvus Vector обеспечивает безопасность данных?
Изображение обложки
В полной мере заботясь о безопасности ваших данных, в Milvus 2.1 теперь официально доступны аутентификация пользователя и соединение с защитой транспортного уровня (TLS). Без аутентификации пользователя любой может получить доступ ко всем данным в вашей векторной базе данных с помощью SDK. Однако, начиная с Milvus 2.1, доступ к базе данных векторов Milvus могут получить только те, у кого есть действительное имя пользователя и пароль. Кроме того, в Milvus 2.1 безопасность данных дополнительно защищена с помощью TLS, который обеспечивает безопасные коммуникации в компьютерной сети.
Цель этой статьи - проанализировать, как векторная база данных Milvus обеспечивает безопасность данных с помощью аутентификации пользователей и TLS-соединения, и объяснить, как вы можете использовать эти две функции в качестве пользователя, который хочет обеспечить безопасность данных при использовании векторной базы данных.
Перейти к разделу:
- Что такое безопасность базы данных и почему она важна?
- Как векторная база данных Milvus обеспечивает безопасность данных?
Что такое безопасность базы данных и почему она важна?
Безопасность базы данных - это меры, принимаемые для обеспечения сохранности и конфиденциальности всех данных в базе. Недавние случаи утечки данных в Twitter, Marriott, Техасском департаменте страхования и т. д. заставляют нас все более бдительно относиться к проблеме безопасности данных. Все эти случаи постоянно напоминают нам о том, что компании и предприятия могут понести серьезные потери, если их данные не будут хорошо защищены, а используемые ими базы данных не будут надежно защищены.
Как векторная база данных Milvus обеспечивает безопасность данных?
В текущем выпуске 2.1 векторная база данных Milvus пытается обеспечить безопасность базы данных с помощью аутентификации и шифрования. Если говорить более конкретно, то на уровне доступа Milvus поддерживает базовую аутентификацию пользователей, чтобы контролировать, кто может получить доступ к базе данных. В то же время на уровне базы данных Milvus использует протокол шифрования транспортного уровня (TLS) для защиты обмена данными.
Аутентификация пользователей
Функция базовой аутентификации пользователей в Milvus поддерживает доступ к базе данных векторов с помощью имени пользователя и пароля для обеспечения безопасности данных. Это означает, что клиенты могут получить доступ к экземпляру Milvus только после предоставления аутентифицированного имени пользователя и пароля.
Процесс аутентификации в векторной базе данных Milvus
Все gRPC-запросы обрабатываются прокси Milvus, поэтому аутентификация выполняется прокси. Процесс входа в систему с учетными данными для подключения к экземпляру Milvus выглядит следующим образом.
- Создайте учетные данные для каждого экземпляра Milvus, а зашифрованные пароли хранятся в etcd. Для шифрования Milvus использует bcrypt, поскольку в нем реализован адаптивный алгоритм хеширования Провоса и Мазьера.
- На стороне клиента SDK отправляет шифртекст при подключении к сервису Milvus. Шифротекст в формате base64 (
: ) прикрепляется к метаданным с ключом authorization
. - Прокси-сервер Milvus перехватывает запрос и проверяет учетные данные.
- Учетные данные кэшируются локально в прокси.
процесс_автоматизации
Когда учетные данные обновляются, системный рабочий процесс в Milvus выглядит следующим образом
- Root coord отвечает за учетные данные при вызове API insert, query, delete.
- Когда вы обновляете учетные данные, например, потому что забыли пароль, новый пароль сохраняется в etcd. После этого все старые учетные данные в локальном кэше прокси становятся недействительными.
- Перехватчик аутентификации сначала ищет записи в локальном кэше. Если учетные данные в кэше не верны, то срабатывает вызов RPC для получения наиболее обновленной записи из корневой коорд. И учетные данные в локальном кэше обновляются соответствующим образом.
рабочий процесс_обновления_учетных_данных
Как управлять аутентификацией пользователей в векторной базе данных Milvus
Чтобы включить аутентификацию, необходимо сначала установить common.security.authorizationEnabled
на true
при настройке Milvus в файле milvus.yaml
.
После включения аутентификации для экземпляра Milvus будет создан пользователь root. Этот пользователь root может использовать начальный пароль Milvus
для подключения к базе данных векторов Milvus.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='root_user',
password='Milvus',
)
Мы настоятельно рекомендуем изменить пароль root-пользователя при первом запуске Milvus.
Затем пользователь root может создавать новых пользователей для аутентифицированного доступа, выполнив следующую команду для создания новых пользователей.
from pymilvus import utility
utility.create_credential('user', 'password', using='default')
При создании новых пользователей следует помнить две вещи:
Что касается имени пользователя, то оно не должно превышать 32 символов и должно начинаться с буквы. В имени пользователя допускаются только символы подчеркивания, буквы или цифры. Например, имя пользователя "2abc!" не принимается.
Что касается пароля, то его длина должна составлять 6-256 символов.
После того как новые учетные данные настроены, новый пользователь может подключиться к экземпляру Milvus с помощью имени пользователя и пароля.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='user',
password='password',
)
Как и во всех процессах аутентификации, не стоит беспокоиться, если вы забудете пароль. Пароль для существующего пользователя можно сбросить с помощью следующей команды.
from pymilvus import utility
utility.reset_password('user', 'new_password', using='default')
Подробнее об аутентификации пользователей читайте в документации Milvus.
TLS-соединение
Безопасность транспортного уровня (TLS) - это тип протокола аутентификации для обеспечения безопасности связи в компьютерной сети. TLS использует сертификаты для предоставления услуг аутентификации между двумя или более взаимодействующими сторонами.
Как включить TLS в базе данных векторов Milvus
Чтобы включить TLS в Milvus, вам нужно сначала выполнить следующую команду, чтобы подготовить два файла для генерации сертификата: файл конфигурации OpenSSL по умолчанию с именем openssl.cnf
и файл с именем gen.sh
, используемый для генерации соответствующих сертификатов.
mkdir cert && cd cert
touch openssl.cnf gen.sh
Затем вы можете просто скопировать и вставить конфигурацию, которую мы приводим здесь, в эти два файла. Вы также можете внести изменения в нашу конфигурацию, чтобы она лучше подходила для вашего приложения.
Когда два файла будут готовы, вы можете запустить файл gen.sh
для создания девяти файлов сертификатов. Аналогичным образом вы можете изменить конфигурацию девяти файлов сертификатов в соответствии с вашими потребностями.
chmod +x gen.sh
./gen.sh
Перед тем как подключиться к службе Milvus с помощью TLS, необходимо сделать еще один шаг. Вы должны установить tlsEnabled
на true
и настроить пути к файлам server.pem
, server.key
и ca.pem
для сервера в config/milvus.yaml
. В качестве примера ниже приведен код.
tls:
serverPemPath: configs/cert/server.pem
serverKeyPath: configs/cert/server.key
caPemPath: configs/cert/ca.pem
common:
security:
tlsEnabled: true
После этого все готово, и вы можете подключаться к сервису Milvus с помощью TLS, если при использовании Milvus connection SDK вы укажете пути к файлам client.pem
, client.key
и ca.pem
для клиента. Приведенный ниже код также является примером.
from pymilvus import connections
_HOST = '127.0.0.1'
_PORT = '19530'
print(f"\nCreate connection...")
connections.connect(host=_HOST, port=_PORT, secure=True, client_pem_path="cert/client.pem",
client_key_path="cert/client.key",
ca_pem_path="cert/ca.pem", server_name="localhost")
print(f"\nList connections:")
print(connections.list_connections())
Что дальше
После официального выхода Milvus 2.1 мы подготовили серию блогов, в которых рассказываем о новых возможностях. Читайте подробнее в этой серии блогов:
- Как использовать строковые данные для расширения возможностей приложений поиска по сходству
- Использование Embedded Milvus для мгновенной установки и запуска Milvus с Python
- Увеличение пропускной способности базы данных Vector с помощью реплик в памяти
- Понимание уровня согласованности в векторной базе данных Milvus
- Понимание уровня согласованности в векторной базе данных Milvus (часть II)
- Как база данных Milvus Vector обеспечивает безопасность данных?
- Что такое безопасность базы данных и почему она важна?
- Как векторная база данных Milvus обеспечивает безопасность данных?
- Что дальше
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word