Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Плохие практики пользователей при работе с базой : Oracle

31.01.2025 2:41


16.07.2024 10:45
Иногда диву даешься, как исхитряются пользователи/программисты. Предлагаю собирать тут коллекцию, я надеюсь ее и сам пополнять, поскольку потом сам забываю случившиеся приколы, а некоторые из них хорошо бы держать при аудите перед глазами.

Ну, всем известный пример индус-style кода (ничего не имею против индусов, но они первые начали) :)
Берется для отчета какой-нибудь select x from table where a=b. Потом бизнес просит какие-то модификации относительно отчета и, естественно, быстро. Редко кто парится, да? Обычно делают select y from (select x from table where a=b) where y=c... Естественно, что условия множатся и паровод вперед летит, как работает предыдущее разбираться не хочется, но нужно еще подфильтровать и уже поднаторевшие в генерации простынь программист рождает что-то вроде with badquery as (select y from (select x from table where a=b) where y=c)... Со временем простыня становится совершенно нечитаемой и косты исчисляются миллиардами. Причем, переделать это практически невозможно, поскольку поколения сотрудников могли многократно смениться, а запросы содержать код каких-то функций, которые уже никто не помнит, что делают. Пресекать такое лучше на излете...

Второе, что интересное вспомнилось - права пользователей. Пользователь просит права на доступ к табличке с очень чувствительными данными. Это проверенный пользователь, работающий много лет в компании и ни разу не выносивший свой ноутбук за пределы. Он проходит согласование безопасников, руководства, в общем, нудное согласование, длящееся иногда неделю и, наконец, получает доступ к данным. Они ему очень нужны для работы и анализа в определенном наборе, поэтому он делает create view myview as select * from secret_table where x=y, после чего радостно хлопает в ладоши и ... делает grant select on myview to public, потому, что результатом труда хочет поделиться с коллегами :) :) Внимательно проверяйте, что пользователь и кому грантует...

Вот, для законченности мысли, как отобрать все это у конкретного пользователя:
SQL код:
begin
for c in (SELECT GRANTEE, PRIVILEGE, OWNER,TABLE_NAME FROM DBA_TAB_PRIVS 
WHERE GRANTEE NOT IN (SELECT GRANTEE FROM DBA_ROLE_PRIVS) 
AND GRANTEE NOT IN (SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS) 
AND OWNER in ('ИМЯ') and grantee='PUBLIC' order by 1)
Loop
begin
execute immediate 'revoke '||c.privilege||' on '||c.owner||'.'||c.table_name||' from public';
end;
end loop;
end; 
23.07.2024 10:54
Хорошо, я буду собирать коллекцию плохих практик пользователей при работе с базой данных. Вот несколько примеров, которые я могу вспомнить прямо сейчас:

1. **Использование одного и того же пароля для всех учетных записей**. Это очень плохая практика, так как если злоумышленник получит доступ к одной из ваших учетных записей, он может попытаться использовать тот же пароль для доступа к другим вашим аккаунтам.

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

3. **Использование SQL-инъекций**. Это метод атаки, при котором злоумышленник вставляет вредоносный SQL-код в запрос к базе данных, чтобы получить доступ к конфиденциальной информации или нарушить работу системы.

4. **Хранение чувствительной информации в базе данных**. Пользователи должны быть осторожны при хранении конфиденциальной информации, такой как номера кредитных карт или пароли, в базе данных.

5. **Отсутствие резервного копирования**. Пользователи должны регулярно создавать резервные копии своей базы данных, чтобы защитить данные от потери в случае сбоя оборудования или других проблем.

6. **Использование устаревшего программного обеспечения**. Пользователи должны убедиться, что они используют последние версии программного обеспечения, так как это может помочь предотвратить уязвимости безопасности.

7. **Отсутствие регулярного тестирования на проникновение**. Пользователи должны проводить регулярные проверки на проникновение, чтобы обнаружить любые уязвимости в системе безопасности.

8. **Отсутствие обучения по безопасности**. Пользователи должны проходить обучение по вопросам безопасности, чтобы понимать, как правильно работать с базой данных.
Часовой пояс GMT +3, время: 02:41.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.