Моя команда недавно перешла в более формализованную систему элементов управления аудитом и развертыванием баз данных SQL Server, и в результате было ограничено несколько разрешений.Типы разрешений SQL Server
Многие из нас не знакомы с безопасностью SQL Server и столкнулись с ситуациями, когда мы развертываем что-то только для ограничения разрешений, например, для TRUNCATE TABLE
.
Это просто раздражение на данном этапе, но я попытался найти сводный список (cheatsheet? Cribsheet? Reference lookup?), Чтобы легко проверять такие функции, чтобы это не так просто, но я не нашли.
Я знаю, что статья MSN для каждой функции перечисляет эти данные, но я не хочу, чтобы каждый отдельный просмотр на конкретном веб-сайте для каждой общей и редкой функции просто для проверки, особенно если мне нужно сделать это больше, чем один раз, потому что я забыл (например).
Ближайший я нашел, были сайты, подобные этим:
https://www.mssqltips.com/sqlservertip/1718/database-level-permissions-for-sql-server-2005-and-2008/
https://www.simple-talk.com/sql/database-administration/sql-server-security-cribsheet/
... но они были неполными (не могли найти TRUNCATE в обоих из них) и немного долго: Я надеюсь, что где-то есть таблица, которая просто помещает «действие -> имя действия -> имя разрешения -> сервер/уровень таблицы -> роль по умолчанию» или что-то вместе в одном месте.
Есть ли такой список где-нибудь?
Фактически наткнулся на них почти после публикации этой статьи, но не через google (просматривается сайт mssqltips). Это определенно полезно, но все равно не покрывают разрешения на уровне таблиц, поэтому TRUNCATE по-прежнему отсутствует ... https://www.mssqltips.com/sqlservertip/1714/server-level-permissions-for-sql-server -2005-and-sql-server-2008/ https://www.mssqltips.com/sqlservertip/1718/database-level-permissions-for-sql-server-2005-and-2008/ –
Для целей развертывания, вы должны получить учетную запись пользователя, созданную с помощью функции 'db_owner' или' db_ddladmin', а затем использовать эту учетную запись (через утилиту развертывания?) для развертывания изменений базы данных в процессе производства. Это также поможет в аудите и улучшении управления развертыванием, поскольку будет только одна учетная запись, выполняющая развертывания. – AKS
Не ... совсем, что я имел в виду. Если урезать таблицу в качестве примера, действие должно было выполняться в хранимой процедуре регулярно, (в данном случае) учетной записью пользователя, которая еще не была 'db_owner'. Пользователем, выполнившим развертывание, был 'db_owner', но это была не учетная запись, которая должна была запускать этот SP. Поскольку мы закодированы как владельцы в наших локальных базах данных, проблема разрешения никогда не возникала, поэтому никто не подозревал ничего до ее развертывания и начал использоваться. –