Segregation of Duties на примере SAP 

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Когда заходит речь о SoD (segregation of duties или разделении прав доступа) пользователей, то часто кажется что существует словно два мира – мир красивых презентаций о том, почему доверие в бизнесе это важно и мир реальности, где нужно конвертировать красивые слова о стратегии в реалистичную и, желательно, позитивную практику.


Под катом краткое объяснение что такое риск SoD, как это выглядит с точки зрения базы данных SAP, и как с этим работать. 

Предыстория


Segregation of duties (SoD) или разделение обязанностей, ролей это превентивный контроль для внутренних сотрудников, суть которого в том, чтобы не допустить концентрацию важных прав доступа в одних руках. Операции с высоким риском, должны быть разделены на несколько этапов, каждый из которых выполняется разными людьми, что позволяет предотвратить мошенничество, а заодно обезопасить сам процесс от ошибок. 

В значительной мере SoD как обязательный контроль в организации развился после принятия в США знаменитого Sarbannes Oxley act (SoX) в 2002 году. Закон был направлен на противодействие мошенничеству в финансовой сфере, и ужесточению контроля за финансовой отчетностью, при этом сам акт риски SoD изначально не прописывал, а скорее определял основные направления по которым компания должна была принять меры. Риски были доработаны позже.

Пример финансового риска: 

  • Открытие/закрытие бухгалтерских периодов проводки и записи в журнале проводок  / Maintain Posting Periods & Post Journal Entry >> может привести к тому, что сотрудник может потенциально публиковать записи за предыдущие периоды для достижения ожидаемых внутренних финансовых целей, например открыть закрытый отчетный период и провести проводку «задним» числом, из-за чего финансовая отчетность может быть сфальцифицирована. 

По мере развития аудита, понятие рисков SoD прочно вошло в практику. Если поначалу большинство рисков SoD были определены как финансовые, то впоследствии в матрицах SoD к ним были добавлены риски MM (материальных потоков) и BC (системного администрирования), а также другие. 

Риски, функциональность и набор правил


Набор правил (ruleset) или набор рисков SoD каждая организация определяет для себя сама. Внутренний аудитор или топ менеджмент вправе сказать – для нас рисков всего пять и они все сосредоточены вокруг открытия, закрытия отчетного периода. Или наоборот, рисков 525 и каждый из них считается уникальным. 

В действительности, чаще всего ruleset приходит вместе с командой аудиторов (что логично, если вас будут проверять на наличие рисков SoD, надо по крайней мере знать к чему готовиться) или вместе с софтом, который будет проверять систему (например для SAP – SAP GRC), и далее дорабатывается компанией в зависимости от внутренней оценки рисков и возможностей. 

Итак, словарь:

  • Ruleset – общий список-набор рисков SoD, их классификация и определение отдельных функциональных разрешений (query);
  • SoD – определенный риск, возникающий при комбинации двух функциональных разрешений. SoD может состоять как из двух разрешений, так и из трех, и даже из одного (uni-SoD) но очень важного, например кастомизация системы в продакшн (in SAP — SPRO);
  • Query – функциональное разрешение, кирпичик для матрицы SoD. Конкретный функционал, например – проводка в системе, или открытие отчетного периода;

Выглядит все это примерно так: 

SoD name Process Query A Query B Risk description
1 FI_01_High FI Изменение мастер данных клиентов Оплата счетов Обслуживание основных данных следует отделить от обработки транзакций. Существует риск того, что пользователь может создать несуществующие счета и переводить на них деньги.
2 FI_02_Medium FI Освободить заблокированные счета-фактуры Утверждение заказа на поставку Пользователь может подтвердить заказ на поставку и разблокировать ранее заблокированный счет-фактуру, что приведет к несанкционированной обработке счетов-фактур.

Матрица SoD это таблица сопересечения различных query. Многие организации любят изображать риски SoD в виде матрицы, хотя по сути это тот же самый ruleset, изображенный в двоичной системе координат. Просто так нагляднее. 


Вернемся к SAP


Риски SoD не привязаны к конкретной базе данных – 1С, Oracle, SAP – и сформулированы достаточно гибко, отражая самое главное – функционал, который может осуществить отдельно взятый сотрудник в случае обладания нужными правами. Но чтобы предотвратить риск, необходимо спуститься на более технический уровень и посмотреть как риск выглядит с точки зрения базы данных. 

Мне это удобнее рассматривать с точки зрения SAP, если в других базах данных это устроено по-другому, будет интересно если вы поделитесь опытом. 

Также отмечу что чаще всего в SAP аудиторы проверяют только главную систему – ECC или S4HANA, без того чтобы смотреть на права в системах CRM, SRM и других. 

Возьмем конкретный финансовый риск, описанный выше: 

Открытие/закрытие бухгалтерских периодов проводки и записи в журнале проводок / Maintain Posting Periods & Post Journal Entry

Риск состоит из двух частей, что в SAP означает доступ к определенным транзакциям

  1. Maintain Posting Periods

           OB52 C FI Maintain Table T001B
           F-60 Maintain Table: Posting Periods
           GCP1 FI-SL: Local Posting Periods
           GCP2 FI-SL Customizing: T001C
           ...
  2. Post Journal Entry

           FB01 Post Document
           FB02 Change Document
           FB08 Reverse Document
           F-02 Enter G/L Account Posting
           F-21 Enter Transfer Posting
           F-22 Enter Customer Invoice
           ....

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

Например:

  1. Maintain Posting Periods

           S_TABU_DIS ACTVT 02
           S_TABU_DIS DICBERCLS FC31…
  2. Post Journal Entry

           F_BKPF_BUK ACTVT 01, 02, 06
           F_BKPF_KOA ACTVT 01, 02, 06
           F_BKPF_KOA KOART K

Таким образом чтобы иметь возможность использовать риск SoD, пользователь должен обладать и транзакциями и техническими объектами с нужными значениями. 

Еще один пример, риск BC (basic controls), за этот риск как правило отвечает главный администратор системы: 

Создание пользователей и предоставление им прав доступа / Maintain users & Assign roles/profiles to users

Как это выглядит технически:
Query Transaction Authorization object
Maintain users SU01 S_USER_GRP (01,02)
Assign roles/profiles to users PFCG S_USER_GRP (02)+S_USER_PRO (22)

В идеальном мире за создание пользователей и за предоставление им ролей (по крайней мере в продакшн) должны отвечать два разных человека. В реальности это часто не так, но это не мешает стремиться к идеальному. 

Избавляемся от SoD


Что происходит когда приходит аудитор и, проверив систему на наличие рисков, находит 3000 конфликтов SoD? Как правило решить их сразу нет никакой возможности. Но можно выбрать самые критические и сфокусироваться на том, чтобы избавиться от них. 

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

С транзакциями тем не менее проще: 

  • можно отследить по данным STAD какие сотрудники не использовали транзакции и забрать доступ в первую очередь у них
  • многие транзакции дублируются с доступом только в визуализации и большая часть пользователей именно этот доступ и просит

С тех.объектами сложнее: 

  • нельзя отследить (вернее достаточно сложно) какой объект был использован пользователем, а какой нет
  • часто объекты используются различными процессами. И забрав объект, и обезопасив один функционал, в итоге блокируешь другой. Например, как видно из примера с Maintain users & Assign roles/profiles to users, один объект S_USER_GRP – используется обеими query.

Другое коварство баз данных это Accumulation of rights или совмещение доступов – когда буффер авторизаций пользователя (SU56 — User Authorization Buffer) включает в себя все возможные объекты из всех возможных ролей пользователя, независимо от того, под какие процессы были определены роли. Другими словами мы можем создать две разные роли в одну для SU01, другую для PFCG, но если мы дадим обе роли одному пользователю, система будет думать что это одна роль, соответвенно она посчитает это за конфликт SoD. 

Стратегия избавления от SoD обычно идти от большого к меньшему. Сначала оценить насколько пользователю необходима сама роль (composite или single) и только потом идти в детали роли и корректировать ее. Но об этом можно поподробнее в другой раз, главное что нужно отметить что это не всегда очевидно, и часто есть предел в том, как сократить количество рисков (похожая аналогия с похудением) – невозможно полностью исключить все риски SoD из системы. 

Но если вдруг в системе не останется ни одного SoD... 


… вот тогда придет GDPR. 

Казалось бы, практики определения рисков SoD существуют без малого 20 лет. Крупные компании достаточно активно мониторят свои системы и уже выстроили отлаженные процессы по нахождению, предотвращению и избавлению от рисков SoD. B этот момент появляется нечто новое – закон о защите персональных данных. 

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

Если перевести это на технический язык SAP – появились новые query – для HR. Их нельзя в полной мере назвать SoD, потому что это не риск связанный с разделением функционала, но тем не менее компании проверяют свои системы на наличие вполне определенного доступа, а после проверки, стараются минимизировать риски. 

Пример query HR: 

Query Transaction Authorization object
Maintain PA master data IT 0000 PA30 P_ORGIN AUTHC W, P_ORGIN INFTY 0000

Уверена что когда компании приведут свои системы в порядок в соответствии с нормами GDPR, придет что-то новое. Но до этого пока еще далеко, а аудит SoD пока еще достаточно актуальная тема.

Источник: https://habr.com/ru/company/ruvds/blog/547324/


Интересные статьи

Интересные статьи

Сегодня мы хотим рассказать об одном из наших новых продуктов – SSD-накопителе Seagate FireCuda 520. Но не спешите листать ленту дальше с мыслями «ну вот, очередной хвалебный обзор гаджета от бре...
В этой части мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до CPU, будет очень много картинок и это не последняя часть. Я буду рассказывать об этом с точки зрения п...
Сравнивать CRM системы – дело неблагодарное. Очень уж сильно они отличаются в целях создания, реализации, в деталях.
Но если для интернет-магазина, разработанного 3–4 года назад «современные» ошибки вполне простительны потому что перед разработчиками «в те далекие времена» не стояло таких задач, то в магазинах, сдел...
От скорости сайта зависит многое: количество отказов, брошенных корзин. Согласно исследованию Google, большинство посетителей не ждёт загрузки больше 3 секунд и уходит к конкурентам. Бывает, что сайт ...