Какие гранты необходимы для подключаемого модуля SQL Server Telegraf в базе данных SQL Azure - PullRequest
0 голосов
/ 31 мая 2018

Я использую входной плагин Telegraf для SQL Server (https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sqlserver) для сбора метрик и создания отчетов для InfluxDB. Он хорошо работает для SQL Server, но хотя он поддерживает базу данных SQL Azure, документация немного скудна.

Пользователь базы данных должен быть создан следующим образом:

CREATE LOGIN [telegraf] WITH PASSWORD = N'password';
GRANT VIEW SERVER STATE TO [telegraf];
GRANT VIEW ANY DEFINITION TO [telegraf];

Это работает на SQL Server, но не работает в Azure:

Защищаемый класс 'сервер'не поддерживается в этой версии SQL Server.

Интересно, что мне нужно вместо этого предоставить, чтобы решить эту проблему наилучшим образом? У нас есть большое количество баз данных, работающих на одном сервере вэластичный пул, поэтому, если это возможно, я бы хотел использовать одного пользователя, который входит в систему с мастером и собирает метрики для всех баз данных одновременно (как это работает с SQL Server). Если это невозможно, я могу настроить несколькорегистрирует и обрабатывает одну базу данных за раз.

Возможно, я могу предоставить VIEW DEFINITION на уровне базы данных, но VIEW SERVER STATE, похоже, не поддерживается вообще.

Итак, как мне настроить логин (ы) базы данных SQL для Telegraf с помощью плагина SQL Server, чтобы он работал?

РЕДАКТИРОВАТЬ:

  • Запуск от имени суперпользователядля сервера работает без ошибок, но выдает только метрики для master и tempdb.Мне нужны показатели для многих баз данных приложений, и они отсутствуют.Плюс запуск в качестве суперпользователя менее чем идеален.
  • Запуск в качестве суперпользователя для сервера, но подключение к конкретной базе данных приложения (добавление базы данных в строке подключения) завершается с разыменованием нулевого указателя, и журнал жалуется наВ мастере базы данных отказано в разрешении VIEW DATABASE STATE (у суперпользователя есть доступ, но, видимо, нет при подключении к специальной базе данных).
  • Предоставление VIEW DATABASE и VIEW DEFINITION телеграфу в базе данных приложения и прямое подключение к этой базе данныхкогда телеграф завершает работу с разыменованием нулевого указателя и в журнале говорится, что соединение было закрыто.

РЕДАКТИРОВАТЬ 2:

Создан отчет об ошибках https://github.com/influxdata/telegraf/issues/4222.

РЕДАКТИРОВАТЬ 3:

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

1 Ответ

0 голосов
/ 04 июня 2018

Ответ: GRANT VIEW SERVER STATE не поддерживается в базе данных SQL Azure.

Для уровней базы данных SQL Premium требуется разрешение VIEW DATABASE STATE в базе данных.Разрешения не могут быть предоставлены в Master, но представления могут запрашиваться в пользовательских базах данных.В стандартном и базовом уровнях базы данных SQL требуется учетная запись администратора сервера базы данных SQL из-за требований безопасности, вытекающих из нескольких арендаторов этих уровней.

Причина: SQL Azure SQL - это решение PaaS,поэтому наиболее «специфичные» для сервера функции, DMV, настройки заблокированы по назначению

Ссылки:

Предоставить просмотр состояния сервера - возможно ли это ни для когоУ пользователя SA есть в Azure SQL?

SQL Azure Отказано в разрешении VIEW DATABASE STATE в базе данных "master"

Возможный обходной путь: (что, во всяком случае, не работает в случае с ewramner)

CREATE LOGIN [telegraf] WITH PASSWORD = N'password';

USE [yourDB]
GRANT VIEW DEFINITION TO [telegraf];
GRANT VIEW DATABASE STATE TO [telegraf];

Поэтому (ИМХО) невозможно заставить такое приложение работать в SQL Azure без изменения кода приложения

...