Передача аутентификации от API к Oracle Database по индивидуальному идентификатору пользователя и паролю? Это возможно?

Вопрос или проблема

Я немного неосведомлён в этой области разработки API/баз данных, поэтому, пожалуйста, будьте добры в своих ответах; я только начинаю изучать этот аспект.

Я создаю/поддерживаю API, которые используют базы данных Oracle в качестве источников данных. В прошлых проектах, над которыми я работал, вся авторизация контролировалась API, и она только определяла, какой доступ у вас есть к данным конечным точкам запросов API и, соответственно, к хранимым процедурам, которые читали, записывали, обновляли или удаляли записи.

На данный момент мы извлекаем имя пользователя на основе вызова к API, который возвращает “userSettings”, как этот идентификатор базы данных…что, я полагаю, не достаточно безопасно?

Наш CIO считает, что мы должны предоставить механизм передачи авторизации этого пользователя в базу данных Oracle? Ранее у нас был какой-то токен (или так мне сказали), который возвращался на настольное приложение на основе имени пользователя и пароля, затем передавался в базу данных из настольного приложения. Я знаю, это старое приложение. В старом настольном приложении поведение базы данных частично контролировалось идентификатором пользователя, и если пользователь джим вызывал хранимую процедуру getEmployees, он мог получить 300 записей, но если пользователь джон получал доступ к той же хранимой процедуре, он мог получить только 15 записей. Джон имел разрешение на доступ к 15 записям на основе своих правил авторизации (гранты, я полагаю)…но у джи́ма другой набор грантов или разрешений, и поэтому он получает 300 записей.

Ранее в других проектах, над которыми я работал, авторизация контролировалась исключительно механизмом безопасности в API (OAuth2, Bearer Token и т.д.) и это работало нормально, но в этом веб-приложении нам нужен более детализированный, безопасный способ изменения потока управления на основе авторизации или разрешений базы данных (возможно, грантов?) отдельного пользователя. Всё, о чём я прошу, это где, чёрт возьми, мне начать искать это?

Ответ или решение

Перенос аутентификации из API в базу данных Oracle для каждого отдельного пользователя: возможен ли этот подход?

Понимание вопросов аутентификации и авторизации имеет критическое значение для обеспечения безопасности веб-приложений. В данном контексте обсуждается необходимость переноса механизма авторизации из API в базу данных Oracle с целью достижения более детализированного контроля доступа, основанного на конкретном пользователе и его роли. Это может быть полезно для обеспечения строгой конфиденциальности данных и соблюдения норм безопасности.

1. Основные понятия и различия между аутентификацией и авторизацией

  • Аутентификация — это процесс, с помощью которого система проверяет личность пользователя. Обычно это включает проверку имени пользователя и пароля.
  • Авторизация — это определение прав доступа, которое определяет, что пользователь может или не может делать в системе.

2. Текущая ситуация

На данный момент у вас есть API, который использует механизмы аутентификации и авторизации, контролирующие доступ только на уровне API и в меньшей степени на уровне базы данных. Ваша текущая схема требует, чтобы отдельные пользователи имели разные наборы прав доступа на уровне хранимых процедур в Oracle, что требует более тщательной настройки механизмов безопасности.

3. Почему стоит рассмотреть переход на аутентификацию в базе данных?

Переход на управление авторизацией с помощью механизмов Oracle может предложить более высокую степень безопасности и гибкости. При таком подходе соблюдаются следующие преимущества:

  • Изоляция данных: разные пользователи могут получать доступ к разным наборам данных, что позволяет лучше управлять конфиденциальной информацией.
  • Отделение логики: разделение логики доступа между API и базой данных может упростить последующее управление и отладку системы.
  • Гранулярное управление: возможность применения детализированных политик доступа на уровне таблиц, строк и столбцов с помощью механизмов Oracle (например, Virtual Private Database).

4. Как реализовать аутентификацию в базе данных Oracle?

Вот некоторые шаги, которые помогут вам в переходе:

Шаг 1: Используйте аутентификацию Oracle

Oracle предоставляет встроенные механизмы аутентификации и управление пользователями. Настройте пользователей в Oracle с разными ролями и привилегиями в зависимости от их нужд.

Шаг 2: Изменение логики API

Измените ваше API так, чтобы оно не только проверяло аутентификацию пользователя, но и передавало учетные данные (например, имя пользователя и пароль) в базу данных:

  • Открытие соединения: используйте соединение пользователя для обращения к базе данных. Это может быть сделано через Oracle Client или JDBC.
  • Управление сессиями: следите за сессиями и аутентификациями. Это необходимо для корректной работы механизмов безопасности Oracle.

Шаг 3: Применение политик безопасности

Разработайте и внедрите политики безопасности, чтобы управлять правами доступа на уровне БД:

  • Права доступа: настройте права доступа для таблиц, хранимых процедур и функций для разных пользователей.
  • Virtual Private Database (VPD): рассмотрите возможность использования VPD для управления доступом на уровне строк.

5. Заключение

Переход к более детализированной аутентификации и авторизации, основанной на уровне базы данных, не только улучшит безопасность вашего приложения, но и повысит его устойчивость. Важно, чтобы вы начинали с тщательного планирования архитектуры ваших API и баз данных, учитывая стратегию управления пользователями и правами доступа. Чем больше вы изучаете и внедряете эти концепции, тем глубже будет ваше понимание возможностей безопасности, предоставляемых Oracle и современными API.

Если необходимо более глубокое понимание темы, рекомендуется обратиться к документации Oracle или пройти курсы по охране данных и управлению доступом.


Таким образом, эта область представляет собой одно из наиболее важных направлений в разработке безопасных веб-приложений, и освоение ее ключевых аспектов позволит вам повысить уровень вашей квалификации в области IT.

Оцените материал
Добавить комментарий

Капча загружается...