Безопасность GetReport

Безопасность

Данные физически разделены

Все приложения, созданные на сервисе GetReport физически хранят данные в разных базах данных на уровне СУБД. Это исключает возможность ошибочного пересечения данных в различных приложениях.

Для разных приложений GetReport используются разные ConnectionString до соответствующих баз данных на уровне СУБД. Каждый ConnectionString имеет права доступа только к своей базе данных. Это исключает возможность взлома (просмотра и модификации) данных одного приложения через другое приложение.

Проверка прав доступа

При входе в систему (API метод Login) пользователю выдаётся уникальный AccessToken. Данный AccessToken полностью определяет пользователя и всего его права в системе.

Вся работа с данными и метаданными приложения осуществляется через вызовы API. Перед осуществлением действия каждое API проверяет специальный ключ (AccessToken) пользователя. С помощью этого ключа система идентифицирует пользователя, определяет его права. Если у пользователя недостаточно прав на выполнения действия – система выдаёт сообщение об ошибке. Это исключает возможность просмотра и модификации «чужих данных».

В качестве дополнительной защиты выступает проверка AccessToken до обработки самого запроса. Это означает, что перед тем как начать выполнение запроса проверяется, что пользователь авторизован в систему. Данная операция выполняется централизованно, для всех API запросов, кроме метода Login. Это обеспечивает дополнительную безопасность в виде защиты системы от любого запроса от неавторизованного пользователя. Т.е. не зная логин и пароль от хотя бы одного пользователя системы, невозможно начать выполнение ни одного запроса, система даже не начнёт проверять права.

Автоматический выход из системы

Выдаваемый AccessToken является временным, при отсутствии запросов к серверу в течении 20 минут он истечёт. Это обезопашивает пользователя от того, что он забудет выйти из системы на чужом компьютере.

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

Логирование

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

Бекапирование

Каждый день GetReport делает бекапы баз данных всех оплаченных приложений в Amazon S3. Это один из мировых лидеров в области надёжного облачного хранения файлов. Данные там хранятся в большой безопасности. Каждый месяц наша команда вручную бекапит все оплаченные базы данных на отдельную локальную машину. Раз в несколько дней делается полный бекап серверов, на которых расположено приложение GetReport.

Фактически для потери данных необходимо чтобы Amazon потерял все бекапы, и они были стёрты с серверов GetReport, они были стёрты с отдельной локальной машины и были стёрты бекапы всего сервера в один день. Данное событие практически невозможно.