Як ви вирішуєте відсутність привілеїв рівня схеми в Oracle? Архітектура безпеки Oracle добре працює для програм, які потребують лише привілеїв рівня об'єкта, і вона добре працює для DBA, які потребують обмежень. Однак, мабуть, в архітектурі є великий проріз для програмістів, які займаються розробкою за допомогою додатка на передньому кінці та PL / SQL в декількох схемах. Ось кілька моїх варіантів із їхніми недоліками:
Змусити кожного програміста робити розробку за власною схемою. DBA надаватиме привілеї для об'єктного рівня програмістам, які їх потребують. Будь-яка розробка пакету повинна здійснюватися DBA. Основним недоліком є те, що програмісти будуть використовувати базу даних як бітове відшкодування на шкоду продуктивності бази даних. Я хочу, щоб програмісти розвивалися в базі даних, але цей метод сильно відлякує це.
Дайте кожному програмісту ім'я користувача / пароль для схеми десятка або близько того, для чого вони повинні розвиватися. Надайте цій схемі програми дозвіл на створення процедур, таблиць тощо. Деякі недоліки цього підходу полягають у тому, що програмістам доводиться підтримувати декілька входів і є рідко входили в систему як самі. Розробка схресної схеми також складна.
Надайте програмістам привілеї аутентифікації проксі для кожної схеми, для якої потрібно зробити розробку. Це дозволяє їм увійти в систему як самі, не надаючи їм інших привілеїв, крім привілеїв проксі. До недоліків можна віднести програмістів, які мають підтримувати окремі з'єднання для кожної схеми, для якої він є проксі-сервером, розробка крос-схеми є більш громіздкою, оскільки з'єднання потрібно постійно змінювати, а пакети, що використовують посилання загальнодоступної бази даних з пройденою автентифікацією, не збиратимуться всередині проксі-з'єднань.
Надайте кожному програмісту пільги DBA. - Мінусом тут є безпека. Жоден програміст схеми не може бути захищений від будь-якої схеми, і будь-який програміст може представити себе за будь-якого іншого програміста (DBA).
Здається, відсутній варіант надання кожному програмісту SELECT / INSERT / CREATE / тощо. привілеї схеми, в якій вони потребують розробки. Вони увійшли, як самі, щоб виконувати свою роботу, використовуючи одне з'єднання. Нові об’єкти в схемі, до якої вони мають доступ, негайно доступні.
Я щось пропускаю? Як ви поводитесь із прикладними програмістами, які займаються розробкою PL / SQL?