О коннекторе Snowflake
Коннектор Snowflake позволяет запрашивать данные в хранилище данных Snowflake непосредственно из Perplexity. Вы можете искать и комбинировать информацию в базах данных Snowflake, других подключенных приложениях и в Интернете — без необходимости писать SQL вручную или переключаться на консоль Snowflake.
Он доступен на Perplexity Pro, Perplexity Max, Enterprise Pro, и Enterprise Max. Подключение Snowflake осуществляется для каждого пользователя — никто в вашей организации не сможет запросить ваши данные, пока вы не синхронизируете их с общим проектом.
В этом руководстве описано, как работает коннектор, как выбрать метод аутентификации, как настроить роли и доступ только для чтения, а также пошаговую настройку. Если вам просто нужен самый быстрый путь: большинству организаций следует использовать User OAuth — перейти к Руководство по настройке.
К чему может получить доступ коннектор
После включения коннектор безопасно подключается к вашей учетной записи Snowflake и позволяет вам выполнять поиск по базам данных, схемам, таблицам и представлениям, доступ к которым вам разрешен. Когда ваши данные Snowflake изменяются, коннектор автоматически отражает эти изменения при следующем запросе.
Поддерживаемые объекты данных:
-
Таблицы
-
Представления и материализованные представления
-
Схемы
-
Базы данных
-
Структурированные данные (таблицы на основе CSV, JSON и Parquet)
Неструктурированные данные (изображения, аудио и видео, хранящиеся на этапах Snowflake) не поддерживаются.
Выбор метода аутентификации
Аутентификация Snowflake имеет два независимых измерения: ВОЗ запросы выполняются как (идентичность) и как эта идентичность доказывает себя (удостоверение). Perplexity поставляется в каталоге с двумя соединителями, каждый из которых соответствует рекомендуемой комбинации:
-
Snowflake (User OAuth) — каждый пользователь Perplexity входит в систему под своей учетной записью Snowflake (
TYPE = PERSON) через OAuth. Рекомендуется для большинства организаций. -
Snowflake — все пользователи Perplexity выполняют запросы через одну общую учетную запись службы (
TYPE = SERVICE) с использованием пары ключей. Используйте это, если у ваших конечных пользователей нет отдельных учетных записей Snowflake.
Рекомендуется: User OAuth
С помощью User OAuth каждый человек проходит аутентификацию с использованием своих собственных учетных данных, запросы выполняются с использованием его собственных разрешений Snowflake, и вы получаете четкий контрольный журнал для каждого пользователя — нет общей учетной записи службы и нет необходимости воссоздавать управление доступом на основе ролей (RBAC) внутри Perplexity. Это также соответствует собственному направлению Snowflake: управляемому серверу MCP. поддерживает только OAuth 2.0 сегодня.
Примечание: При использовании OAuth токен доступа привязывается к одной основной роли при входе в систему — роли пользователя. DEFAULT_ROLE. Чтобы пользователи могли получить доступ ко всему, что им предоставлено, настройте второстепенные роли (см. Конфигурация роли User OAuth).
Резервный вариант: сервисная учетная запись (пара ключей)
Общий сервисный аккаунт (TYPE = SERVICE + пара ключей) подходит, когда:
-
У ваших конечных пользователей нет индивидуальных учетных записей Snowflake (например, бизнес-пользователи, которые делают запросы через Perplexity, но не имеют прямого доступа к Snowflake).
-
Вы хотите, чтобы все запросы Perplexity выполнялись под одним общим идентификатором для упрощения аудита.
-
Вы настраиваете внутреннюю или тестовую среду, в которой не требуется удостоверение личности каждого пользователя.
Настройте учетную запись службы с выделенной ролью с узким диапазоном — см. Конфигурация роли учетной записи службы.
Примечание о токенах программного доступа (PAT): Snowflake также поддерживает учетные данные PAT, и коннектор их принимает. Мы делаем нет рекомендуйте PAT для новых настроек — срок действия токенов истекает по короткому графику и жестко привязан к одной роли во время создания, поэтому в примерах в этом руководстве мы используем пару ключей. Если вам необходимо использовать PAT, установите ROLE_RESTRICTION вашей выделенной роли Perplexity во время создания.
Настройка ролей и доступа
Конфигурация роли User OAuth
Сессия OAuth открывается с именем пользователя. DEFAULT_ROLE как основная роль; переключение ролей внутри сессияа не поддерживается, и Perplexity не отображает средство выбора роли. Итак, все, что установил каждый пользователь DEFAULT_ROLE и DEFAULT_SECONDARY_ROLES это именно то, что использует их сессия Perplexity.
Установите это один раз на уровне интеграции безопасности:
OAUTH_USE_SECONDARY_ROLES = IMPLICIT
Snowflake’s по умолчанию для этого параметра установлено значение NONE, что означает, что сессии OAuth открываются только с активной основной ролью. Установка его на IMPLICIT сообщает Snowflake также активировать учетную запись каждого пользователя DEFAULT_SECONDARY_ROLES автоматически. Без него пользователи видят только данные, доступные через их DEFAULT_ROLE — редко то, что хочешь.
Затем обработайте один из двух случаев:
Случай А — у пользователей уже есть роли по умолчанию. Если ваши пользователи DEFAULT_ROLE и DEFAULT_SECONDARY_ROLES уже настроены так, как вы хотите, больше ничего не делайте. IMPLICIT настройки достаточно — существующие настройки по умолчанию каждого пользователя — это те, которые использует его сессия Perplexity.
Случай Б — у пользователей еще нет ролей по умолчанию. Дайте каждому сессияу объединение всех ролей, предоставленных этому пользователю, установив DEFAULT_ROLE к PUBLIC и DEFAULT_SECONDARY_ROLES к ALL:
ALTER USER <username> SET DEFAULT_ROLE = PUBLIC, DEFAULT_SECONDARY_ROLES = ('ALL');
Примечание: После изменения Snowflake в августе 2024 г. DEFAULT_SECONDARY_ROLES = ('ALL') является значением по умолчанию для вновь созданных пользователей, поэтому во многих организациях этот набор уже есть. Бегать DESC USER <username> проверить, прежде чем что-то менять.
Конфигурация роли учетной записи службы
Учетная запись службы — это отдельный выделенный пользователь, который работает под одной конкретной ролью. Обычно PERPLEXITY_ROLE. PUBLIC + ('ALL') шаблон, используемый для OAuth, делает нет подать заявку здесь. Вместо этого установите пользователя службы DEFAULT_ROLE вашей выделенной роли и предоставьте этой роли только те привилегии, которые необходимы Perplexity. Это следует за Snowflake рекомендации по сервисному аккаунту.
Полный SQL для создания этого пользователя находится в файле Руководство по настройке ниже.
(Необязательно) Ограничение ролей, которые можно использовать, с помощью OAuth.
Чтобы ограничить роли Snowflake, в которых пользователи могут проходить аутентификацию посредством интеграции Perplexity OAuth, ограничьте ее на уровне интеграции безопасности:
-
PRE_AUTHORIZED_ROLES_LIST— список разрешенных ролей, разрешенных посредством этой интеграции. -
BLOCKED_ROLES_LIST— список запрещенных ролей, заблокированных для этой интеграции.
ALTER SECURITY INTEGRATION PERPLEXITY_OAUTH
SET PRE_AUTHORIZED_ROLES_LIST = ('ANALYST_ROLE', 'READ_ONLY_ROLE');
Используйте это, чтобы сохранить конфиденциальные роли (например, ACCOUNTADMIN) полностью из сессияа OAuth.
Контроль того, что может сделать Perplexity
Коннектор выполняет SQL через поверхность инструмента (полученную из Объединить коннектор Snowflake). Snowflake (User OAuth) Коннектор предоставляет детальные именованные инструменты, включая специальный инструмент запросов только для чтения (execute_sql_readonly), который принимает только SELECT, WITH, SHOW, DESCRIBE, EXPLAIN, VALUES, и LIST, и отклоняет DDL/DML и ввод с несколькими операторами. Сервис-аккаунт Snowflake коннектор представляет собой общий execute_sql инструмент, который принимает произвольные SQL, включая DDL и DML.
Авторитетный контроль — Snowflake RBAC. Независимо от того, какой инструмент вызывается, запросы выполняются под ролью, разрешенной вашей конфигурацией, поэтому принудительное использование режима «только чтение» на уровне роли Snowflake является надежной защитой и единственной границей применения на соединителе служебной учетной записи.
Рекомендуемый шаблон — включите режим только для чтения с выделенной ролью. Предоставьте такую роль, как PERPLEXITY_READ_ONLY что дает только USAGE и SELECT в базах данных, схемах и таблицах, которые вы хотите запросить Perplexity, и делает нет предоставить INSERT, UPDATE, DELETE, CREATE, DROP, OWNERSHIP, или склад MODIFY. Затем убедитесь, что пользователи проходят аутентификацию в этой роли:
-
Установите его как пользователя
DEFAULT_ROLE, или -
Оцените интеграцию OAuth с
PRE_AUTHORIZED_ROLES_LISTи/или исключить роли с возможностью записи с помощьюBLOCKED_ROLES_LIST(видеть Ограничение ролей, которые можно использовать через OAuth).
Если RBAC настроен таким образом, Snowflake отклоняет любые попытки записи Perplexity, независимо от того, какой инструмент вызывается.
Примечание: В настройках коннектора есть Разрешения для инструмента панель со списком доступных инструментов. На Snowflake (User OAuth) коннектор, вы можете сузить список доступных инструментов — для настройки только для чтения включите только инструменты чтения (например, execute_sql_readonly, list_*, describe_*, get_*), чтобы инструменты записи/DDL не появлялись на поверхности. Считайте это глубокоэшелонированной защитой, а не авторитетной границей: Snowflake RBAC (выше) — это то, что надежно обеспечивает доступ.
Конфиденциальность и безопасность данных
При подключении коннектор Snowflake может выполнять от вашего имени следующие действия:
-
Выполняйте запросы SQL к вашим данным Snowflake.
-
Запрос Cortex Search и Cortex Analyst
-
Запуск пользовательских пользовательских функций и хранимых процедур
Если вы отзовете доступ или удалите роль в Snowflake, эти данные немедленно станут недоступными из Perplexity. Если вы отключите Snowflake в Perplexity, вы сможете выбрать, сохранить или удалить любые кэшированные данные.
Безопасность и контроль уровня Enterprise
Для организаций Enterprise Perplexity предлагает сертификацию SOC 2 Type II, сквозное шифрование, строгие меры конфиденциальности данных и детальный контроль доступа пользователей. Ваши данные Snowflake никогда не используются для обучения ИИ.
Подключение Snowflake осуществляется для каждого пользователя — никто другой в вашей организации не может запрашивать ваши данные. Однако если вы синхронизируете данные с общим проектом, любой, у кого есть доступ к этому проекту, сможет выполнять поиск по нему.
Администраторы организации могут включать или отключать коннектор для всех пользователей из Разрешения экран в настройках организации. Принудительное чтение/запись осуществляется на уровне роли Snowflake (см. Контроль того, что может сделать Perplexity).
Руководство по настройке
Выберите путь, соответствующий вашему методу аутентификации:
-
User OAuth (рекомендуется): Администратор организации один раз настраивает приложение OAuth, после чего пользователи входят в систему индивидуально. Перейти прямо к Подключите Snowflake к Perplexity. — SQL в шагах 1–6 предназначен только для настроек сервисной учетной записи.
-
Учетная запись службы (пара ключей): Запустите настройку SQL в шагах 1–6, затем подключитесь в шаге 7.
Предварительные условия
-
ACCOUNTADMINроль (или роль сCREATE USERиGRANTпривилегии) -
OpenSSL установлен локально (предварительно установлен на macOS) — только настройки сервисной учетной записи.
Шаг 1. Создайте пару ключей (служебную учетную запись).
На своем терминале сгенерируйте закрытый ключ RSA:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out snowflake_computer_key.p8 -nocrypt
Затем сгенерируйте соответствующий открытый ключ:
openssl rsa -in snowflake_computer_key.p8 -pubout -out snowflake_computer_key.pub
Шаг 2. Создайте роль и хранилище.
USE ROLE ACCOUNTADMIN;
-- Create a dedicated role
CREATE ROLE IF NOT EXISTS PERPLEXITY_ROLE
COMMENT = 'Role for Perplexity service account';
-- Create a warehouse (or use an existing one)
CREATE WAREHOUSE IF NOT EXISTS PERPLEXITY_WAREHOUSE
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE
COMMENT = 'Warehouse for Perplexity queries';
-- Grant warehouse usage to the role
GRANT USAGE ON WAREHOUSE PERPLEXITY_WAREHOUSE TO ROLE PERPLEXITY_ROLE;
Шаг 3. Создайте пользователя сервисной учетной записи.
Запустите это как ACCOUNTADMIN. Замените RSA_PUBLIC_KEY значение с содержимым вашего snowflake_computer_key.pub файл (без строк верхнего и нижнего колонтитула).
USE ROLE ACCOUNTADMIN;
CREATE USER PERPLEXITY_USER
TYPE = SERVICE
DEFAULT_ROLE = PERPLEXITY_ROLE
DEFAULT_WAREHOUSE = PERPLEXITY_WAREHOUSE
COMMENT = 'Service account for Perplexity'
RSA_PUBLIC_KEY = 'MIIBIjANBgkqhki...your_public_key_here...IDAQAB';
-- Grant the dedicated role to the service account
GRANT ROLE PERPLEXITY_ROLE TO USER PERPLEXITY_USER;
Примечание: TYPE = SERVICE помечает это как нечеловеческую учетную запись — не устанавливайте пароль. DEFAULT_ROLE = PERPLEXITY_ROLE ограничивает его одной выделенной ролью только с теми привилегиями, которые нужны Perplexity.
Шаг 4. Предоставьте доступ к вашим данным
-- Grant access to a specific database
GRANT USAGE ON DATABASE MY_DATABASE TO ROLE PERPLEXITY_ROLE;
-- Grant access to all schemas in a database (current and future)
GRANT USAGE ON ALL SCHEMAS IN DATABASE MY_DATABASE TO ROLE PERPLEXITY_ROLE;
GRANT USAGE ON FUTURE SCHEMAS IN DATABASE MY_DATABASE TO ROLE PERPLEXITY_ROLE;
-- Grant read access to all tables and views (current and future)
GRANT SELECT ON ALL TABLES IN DATABASE MY_DATABASE TO ROLE PERPLEXITY_ROLE;
GRANT SELECT ON FUTURE TABLES IN DATABASE MY_DATABASE TO ROLE PERPLEXITY_ROLE;
GRANT SELECT ON ALL VIEWS IN DATABASE MY_DATABASE TO ROLE PERPLEXITY_ROLE;
GRANT SELECT ON FUTURE VIEWS IN DATABASE MY_DATABASE TO ROLE PERPLEXITY_ROLE;
Для более избирательного доступа см. Snowflake ГРАНТ-документация.
Шаг 5. Предоставьте доступ к истории запросов и истории доступа.
Perplexity использует два представления в SNOWFLAKE.ACCOUNT_USAGE Схема для построения карты данных для точного формирования запросов:
|
Вид |
Цель |
|
|
Метаданные запросов, производительность и шаблоны использования |
|
|
Журнал аудита на уровне объекта (только версия Enterprise) |
USE ROLE ACCOUNTADMIN;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE PERPLEXITY_ROLE;
Примечание: ACCESS_HISTORY доступно только в версии Snowflake Enterprise или выше; Perplexity возвращается к QUERY_HISTORY в стандартной версии автоматически. Пропуск этого шага снижает точность запроса. О том, как Perplexity использует эти представления, см. Понимание карты данных.
Подтвердить доступ
USE ROLE ACCOUNTADMIN;
GRANT ROLE PERPLEXITY_ROLE TO USER <your_username>;
USE ROLE PERPLEXITY_ROLE;
USE WAREHOUSE PERPLEXITY_WAREHOUSE;
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY LIMIT 5;
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY LIMIT 5;
Шаг 6. (Необязательно) IP-адреса из белого списка
Если ваша учетная запись Snowflake ограничивает входящие соединения по IP, добавьте в белый список IP-адреса от эта страница:
USE ROLE ACCOUNTADMIN;
CREATE NETWORK POLICY PERPLEXITY_COMPUTER_POLICY
ALLOWED_IP_LIST = (...US IPs from the link above...);
ALTER USER PERPLEXITY_USER SET NETWORK_POLICY = PERPLEXITY_COMPUTER_POLICY;
Шаг 7. Подключите Snowflake к Perplexity.
Для User OAuth: сначала настройте администратора
Если ваша организация использует OAuth, администратор организации настраивает Snowflake (User OAuth) коннектор один раз, прежде чем отдельные пользователи смогут пройти аутентификацию. В Настройки организации → Соединители → Snowflake (User OAuth), администратор увидит трехэтапную панель:
-
Управление приложением OAuth — зарегистрируйте Perplexity в качестве клиента OAuth для своей учетной записи Snowflake. Это поможет вам создать собственный Snowflake.
SECURITY INTEGRATIONи вставьте полученный идентификатор клиента и секрет клиента обратно в Perplexity. -
Аутентификация с помощью Snowflake (User OAuth) — администратор проходит аутентификацию один раз, чтобы убедиться, что интеграция работает от начала до конца.
-
Создайте карту данных (необязательно) — опционально сгенерировать карту данных для организации (см. Понимание карты данных) и добавьте дополнительный контекст для повышения точности.
На шаге 1 создайте интеграцию безопасности на стороне Snowflake. Запустите это как ACCOUNTADMIN:
USE ROLE ACCOUNTADMIN;
CREATE SECURITY INTEGRATION PERPLEXITY_OAUTH
TYPE = OAUTH
ENABLED = TRUE
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://ah.merge.dev/oauth/callback'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = 7776000
OAUTH_USE_SECONDARY_ROLES = IMPLICIT
COMMENT = 'OAuth security integration for Perplexity';
Получите идентификатор клиента и секрет клиента, чтобы вставить их обратно в Perplexity:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('PERPLEXITY_OAUTH');
После завершения настройки администратора отдельные пользователи смогут подключиться, выполнив следующие действия.
Подключиться (все пользователи)
Пользователи видят только метод аутентификации, соответствующий соединителю, настроенному их администратором.
-
Перейти к Коннекторы в настройках и найдите Snowflake или Snowflake (User OAuth) коннектор.
-
Нажмите Включить → Добавить коннектор.
-
Выполните аутентификацию, используя настроенный вами метод (см. ниже).
-
Нажмите Позволять для завершения настройки.
Аутентификация по паре ключей (коннектор Snowflake). Введите идентификатор своей учетной записи Snowflake, имя пользователя и закрытый ключ (snowflake_computer_key.p8).
OAuth (коннектор Snowflake (User OAuth)). Вы будете перенаправлены на Snowflake для входа. Выбор роли отсутствует — ваш сессия использует ваш DEFAULT_ROLE в качестве основной роли, с вашей DEFAULT_SECONDARY_ROLES активирован через OAUTH_USE_SECONDARY_ROLES = IMPLICIT. Если параметры роли по умолчанию уже настроены, никаких действий не требуется.
Если в вашем сессияе отсутствуют данные, которые вы ожидаете увидеть, попросите администратора Snowflake проверить ваши данные. DEFAULT_ROLE и DEFAULT_SECONDARY_ROLES (видеть Конфигурация роли User OAuth).
Использование ваших данных Snowflake
После подключения укажите данные Snowflake в Computer сессии. Упоминайте базы данных, схемы или таблицы, и Perplexity будет запрашивать их в рамках многоэтапных рабочих процессов — и все это асинхронно в безопасной облачной песочнице. Попробуйте такие запросы, как:
-
«Обобщите тенденции доходов из таблицы продаж за четвертый квартал и выделите ключевые показатели»
-
«Найдите все записи клиентов, обновленные за последние 30 дней»
-
«Какие продукты на основе схемы аналитики являются наиболее эффективными?»
-
«Сравните данные о трубопроводе за этот квартал с показателями за предыдущий квартал»
Устранение неполадок
Snowflake не включен для вашей организации.
Если вы находитесь в организации Enterprise и не можете включить коннектор, возможно, администратор отключил его. Свяжитесь с администратором вашей организации или обратитесь в службу поддержки Perplexity.
Проблемы с подключением и аутентификацией
-
Убедитесь, что IP-адреса Perplexity внесены в список разрешенных в вашей сетевой политике Snowflake.
-
Подтвердите, что роль
USAGEпривилегии на необходимые хранилища, базы данных и схемы. -
Попросите пользователей повторно подключить коннектор после любых изменений политики.
Ошибка «Неверный закрытый ключ»
Убедитесь, что вы вставляете закрытый ключ (snowflake_computer_key.p8), а не открытый ключ. Файл должен начинаться с -----BEGIN PRIVATE KEY-----.
Аутентификация отклонена текущей политикой аутентификации
Бегать SHOW AUTHENTICATION POLICIES как ACCOUNTADMIN и обеспечить PERPLEXITY_USER покрывается полисом, который включает в себя KEYPAIR. Если необходимо:
CREATE AUTHENTICATION POLICY PERPLEXITY_AUTH_POLICY
AUTHENTICATION_METHODS = ('KEYPAIR')
CLIENT_TYPES = ('DRIVERS');
ALTER USER PERPLEXITY_USER SET AUTHENTICATION POLICY PERPLEXITY_AUTH_POLICY;
OAuth: пользователь видит ограниченные данные после подключения
Сессия OAuth использует имя пользователя. DEFAULT_ROLE в качестве основной роли, а второстепенные роли активируются через OAUTH_USE_SECONDARY_ROLES = IMPLICIT. Если пользователю не хватает ожидаемого доступа:
-
Убедитесь, что интеграция безопасности выполнена.
OAUTH_USE_SECONDARY_ROLES = IMPLICIT. -
Бегать
DESC USER <username>и проверьDEFAULT_ROLEиDEFAULT_SECONDARY_ROLES— в сессии используется именно то, что там настроено. -
Если у пользователя нет конфигурации ролей для каждого пользователя и вы хотите, чтобы он имел доступ ко всему, что ему предоставлено, установите
DEFAULT_ROLE = PUBLICиDEFAULT_SECONDARY_ROLES = ('ALL'). -
Попросите их отключить и снова подключить коннектор, чтобы выдать новый токен после изменения любого из этих параметров.
Представление ACCESS_HISTORY возвращает ошибку
Подтвердите, что ваша учетная запись Snowflake имеет версию Enterprise или выше.
Недостаточно прав для представлений ACCOUNT_USAGE
Проверять GRANT IMPORTED PRIVILEGES был запущен как ACCOUNTADMIN и это PERPLEXITY_ROLE предоставляется пользователю.
Аутентификация пары ключей не удалась
Повторный запуск DESC USER PERPLEXITY_USER чтобы подтвердить, что отпечаток открытого ключа заполнен.
Если после обновления этих настроек проблемы не исчезнут, обратитесь за помощью в службу поддержки Perplexity.
