Как защитить базу данных от Администратора Сервера в SQL-сервере

Это помогло мне скопировать текстовый файл из jar-файла в другой текстовый файл

public static void copyTextMethod() throws Exception{
    String inputPath = "path/to/.jar";
    String outputPath = "Desktop/CopyText.txt";

    File resStreamOut = new File(outputPath);

     int readBytes;
     JarFile file = new JarFile(inputPath);

     FileWriter fw = new FileWriter(resStreamOut);

    try{
        Enumeration<JarEntry> entries = file.entries();
        while (entries.hasMoreElements()){
            JarEntry entry = entries.nextElement();
        if (entry.getName().equals("readMe/tempReadme.txt")) {

                System.out.println(entry +" : Entry");
            InputStream is = file.getInputStream(entry);
            BufferedWriter output = new BufferedWriter(fw);
                 while ((readBytes = is.read()) != -1) {
                    output.write((char) readBytes);
                 }
                System.out.println(outputPath);
                output.close();
            } 
        }
    } catch(Exception er){
        er.printStackTrace();
    }
        }
            }
9
задан julio.g 9 June 2009 в 15:37
поделиться

6 ответов

Об этом много спрашивали за последние несколько недель . Ответы обычно сводятся к следующему:

(

a) Если вы не контролируете приложение, вы обречены доверять администратору базы данных

или

b) Если вы контролируете приложение, вы можете зашифровать все с ключом, известным только приложению, и расшифровать на выходе. Однако это немного (или сильно) снизит производительность, поэтому TDE существует. Вариант этого для предотвращения взлома - использовать криптографический хэш значений в столбце, проверяя их при доступе к приложению.

)

и

c) Проведите обширный аудит, чтобы вы могли контролировать свои администраторы делают.

6
ответ дан 4 December 2019 в 14:31
поделиться

Аудиторы всегда просят об этом, как и они просить о других вещах, которые никогда не могут быть выполнены.

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

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

4
ответ дан 4 December 2019 в 14:31
поделиться

Я думаю, что правильным решением было бы позволить администраторам баз данных быть только доверенным людям. В качестве администратора баз данных подразумевается, что у вас есть полный доступ, поэтому, на мой взгляд, ваш аудитор должен потребовать, чтобы у вас были процедуры для ограничения доступа администраторов баз данных. Таким образом, вы будете работать с системой через процессы вместо работы с системой (например, сервером sql). Было бы безумием иметь человека, которому вы не доверяете, в качестве администратора базы данных ...

1
ответ дан 4 December 2019 в 14:31
поделиться

Если вы не хотите, чтобы кто-либо из группы администраторов на сервере имел доступ к базе данных, удалите пользователя «BUILTIN \ Administrators» на сервере.

Однако , убедитесь, что у вас есть другой пользователь, который является системным администратором на сервере!

0
ответ дан 4 December 2019 в 14:31
поделиться

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

Я не знаю, как именно это работает на более глубоком уровне.

0
ответ дан 4 December 2019 в 14:31
поделиться

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

1- Шифровать вне SQLServer перед вставкой и обновлением и расшифровывать после выбора. то есть: Использование шифрования .net. Оборотная сторона: вы теряете некоторые возможности индексирования и поиска, не можете использовать подобные и промежуточные.

2- Используйте сторонние инструменты (на уровне io), которые блокируют вход в базу данных, если не указан пароль. то есть: www.Blockkk.com Оборотная сторона: вам нужно будет доверять стороннему инструменту, установленному на вашем сервере. Он может не успевать за исправлениями SQL Server и т. Д.

3- Используйте решение для аудита, которое будет отслеживать выбор, вставку, удаление и т. Д. И будет уведомлять (по электронной почте или в журнале событий), если нарушения произошло. Примером нарушения может быть dba, выполняющая выбор в вашей таблице зарплат. затем запустите dba и измените зарплату всем.

3
ответ дан 4 December 2019 в 14:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: