РАЗРАБОТКА ABAPP1L2

ABAP: прикладные проверки полномочий

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

Ревизия 1 Применимость к указанным контекстам Частичное покрытие Контекст: CTX-GENERAL документальная опора: недостаточно данных
Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.

ABAP: прикладные проверки полномочий#

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

Определите защищаемое действие и объект#

Для каждой операции перечислите объект, действие и область: например, просмотр, создание, изменение, сторнирование или выпуск документа для заданной компании, ledger или организационной единицы. Сначала проверьте, подходит ли стандартный объект полномочий. Если требуется собственный объект, задайте поля под реальный сценарий и согласуйте его с владельцем ролей.

AUTHORITY-CHECK передаёт объект и значения его полей, например activity и область организации. Успешный результат нужно трактовать по контракту проверки; любой ненулевой sy-subrc должен приводить к безопасному отказу или диагностике. Не продолжайте операцию после ошибки проверки, не маскируйте неверный объект как обычный отказ и не показывайте пользователю данные, которые проверка должна была ограничить.

Проверку размещайте у серверного действия до чтения или изменения защищённых данных. В UI можно скрыть недоступное действие для удобства, но повторно проверяйте его в вызываемой программе или API. Для пакетных заданий отдельно зафиксируйте технического пользователя и нужный ограниченный набор полномочий; интерактивная проверка пользователя не переносится автоматически в background job.

Объектный доступ и доступ к данным CDS#

Классическая модель использует объекты полномочий с наборами полей и значений, назначаемыми пользователям через роли. Для ABAP CDS существует механизм access control на основе DCL; он может добавлять условия к чтению CDS entity через ABAP SQL. Эта модель сосуществует с классическими проверками, но защищает другой уровень.

DCL не заменяет start authorization приложения, а AUTHORITY-CHECK в одном действии не гарантирует фильтрацию всех последующих чтений CDS. Проверяйте, что нужный CDS entity действительно связан с access control и что потребитель не отключает её в сценарии, где ограничение требуется. Уточните поля области: отсутствие строки из-за фильтра не всегда равно отказу на команду изменения.

Отказы и диагностика#

Разделяйте ожидаемый отказ в доступе, отсутствие строки в области полномочий и техническую ошибку в объекте или параметрах проверки. Показывайте понятное сообщение без раскрытия запрещённых значений. Для расследования записывайте код действия, тип объекта, безопасный ключ корреляции и результат проверки; не помещайте секреты и полные персональные данные в журнал.

Не запрашивайте у пользователя широкую роль как универсальное исправление. Передайте администратору роль и объект полномочий, необходимые поля, фактические проверяемые значения, транзакцию или приложение, время и результат диагностики. Изменение назначений выполняет владелец процесса управления доступом согласно правилам организации.

Тестируйте обе стороны границы#

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

Убедитесь, что отказ не изменил документ, не выполнил update task и не оставил частичный пакет. Повторите проверку для фонового и внешнего вызова с его собственной идентичностью. Доступ и финансовый результат сверяйте отдельно: успешная проверка полномочий не подтверждает корректность проводки.

Источники описывают ABAP Authorization Concept и CDS authorization для указанных редакций и выпусков. Фактический объект полномочий, роли и политики определяются целевой системой. В этом проекте нет SAP runtime или матрицы ролей; AUTHORITY-CHECK, DCL и отказ доступа не запускались.

Источники и документация

  1. ABAP Authorization Concept ↗
  2. Checking User Authorizations ↗
  3. ABAP Authorization Concept for CDS Entities ↗
  4. Authorization Checks ↗

Источники нужны для самостоятельной проверки. Примеры и интерпретации на сайте могут быть учебными упрощениями.