Загрузка...
Поддержи Openmeetings

понедельник, 16 ноября 2015 г.

Проектирование баз данных

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

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

среда, 4 ноября 2015 г.

Первые шаги технического руководителя в новой компании

Продукты в современном мире надо проектировать и производить быстро. За первый месяц надо уже практически во всем разобраться:

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

Но сначала.

четверг, 6 августа 2015 г.

Программное обеспечение TSF вне ядра

Программное обеспечение TSF вне ядра состоит из доверяемых приложений, которые используются, чтобы реализовать функции безопасности. Обратите внимание на то, что совместно используемые библиотеки, включая модули PAM в некоторых случаях, используются доверяемыми приложениями. Однако, не существует экземпляра, где сама совместно используемая библиотека рассматривается как доверяемый объект. Доверяемые команды могут быть сгруппированы следующим образом.
  • Системная инициализация
  • Идентификация и аутентификация
  • Сетевые приложения
  • Пакетная обработка
  • Управление системой
  • Аудит пользовательского уровня
  • Криптографическая поддержка
  • Поддержка виртуальной машины

Компоненты исполнения Linux

Компоненты исполнения ядра могут быть разделены на три составляющие части: основное ядро, потоки ядра и модули ядра, в зависимости от того, как они будут выполняться.
  • Основное ядро включает код, который выполняется, чтобы предоставить услугу, такую как обслуживание системного вызова пользователя или обслуживание события исключения, или прерывание. Большинство скомпилированного кода ядра подпадает под эту категорию.
  • Потоки ядра. Чтобы выполнить определенные стандартные задачи, такие как очистка дисковых кэшей или освобождение памяти, путем выгрузки неиспользованных страничных блоков, ядро создает внутренние процессы или потоки. Потоки запланированы точно так же, как обычные процессы, но у них нет контекста в непривилегированном режиме. Потоки ядра выполняют определенные функции языка C ядра. Потоки ядра размещены в пространстве ядра, и работают только в привилегированном режиме.
  • Модуль ядра и модуль ядра драйверов устройств  — фрагменты кода, которые могут быть загружены и выгружены в и из ядра по мере необходимости. Они расширяют функциональные возможности ядра без необходимости перезагружать систему. После загрузки объектный код модуля ядра может получить доступ к другому коду ядра и данным таким же образом, как статически скомпонованный код объекта ядра.
Драйвер устройства  — специальный тип модуля ядра, который позволяет ядру получать доступ к аппаратным средствам, соединенным с системой. Эти устройства могут быть жесткими дисками, мониторами или сетевыми интерфейсами. Драйвер взаимодействует с остающейся частью ядра через определенный интерфейс, который позволяет ядру иметь дело со всеми устройствами универсальным способом, независимо от их базовых реализаций.

Логические компоненты Linux

Ядро состоит из логических подсистем, которые обеспечивают различные функциональные возможности. Даже при том, что ядро  — единственная исполняемая программа, различные сервисы, которые оно предоставляет, могут быть разделены и объединены в разные логические компоненты. Эти компоненты взаимодействуют, чтобы обеспечить определенные функции. Ядро состоит из следующих логических подсистем:
  • Файловая подсистема и подсистема ввода-вывода: Эта подсистема реализует функции, связанные с объектами файловой системы. Реализованные функции включают те, которые позволяют процессу создавать, поддерживать, взаимодействовать и удалять объекты файловой системы. К этим объектам относятся регулярные файлы, каталоги, символьные ссылки, жесткие ссылки, файлы, специфичные для определенных типов устройств, именованные каналы и сокеты.
  • Подсистема процессов: Эта подсистема реализует функции, связанные с управлением процессами и управлением потоками. Реализованные функции позволяют создавать, планировать, исполнять и удалять процессы и субъекты потоков.
  • Подсистема памяти: Эта подсистема реализует функции, связанные с управлением ресурсами памяти системы. Реализованные функции включают в себя те, которые создают и управляют виртуальной памятью, включая управление алгоритмами разбивки на страницы и таблицами страниц.
  • Сетевая подсистема: Эта подсистема реализует сокеты UNIX и Интернет-домена, а также алгоритмы, используемые для планирования сетевых пакетов.
  • Подсистема IPC: Эта подсистема реализует функции, связанные с механизмами IPC. Реализованные функции включают в себя те, которые упрощают управляемый обмен информацией между процессами, позволяя им совместно использовать данные и синхронизировать их выполнение при взаимодействии с общим ресурсом.
  • Подсистема модулей ядра: Эта подсистема реализует инфраструктуру, позволяющую поддерживать загружаемые модули. Реализованные функции включают загрузку, инициализацию и выгрузку модулей ядра.
  • Расширения безопасности Linux: Расширения безопасности Linux реализуют различные аспекты безопасности, которые обеспечиваются для всего ядра, включая каркас Модуля безопасности Linux (Linux Security Module, LSM). Каркас LSM служит основой для модулей, позволяющей реализовать различные политики безопасности, включая SELinux. SELinux  — важная логическая подсистема. Эта подсистема реализует функции мандатного управления доступом, чтобы добиться доступа между всеми предметами и объектами.
  • Подсистема драйвера устройства: Эта подсистема реализует поддержку различных аппаратных и программных устройств через общий, не зависящий от устройств интерфейс.
  • Подсистема аудита: Эта подсистема реализует функции, связанные с записью критических по отношению к безопасности событий в системе. Реализованные функции включают в себя те, которые захватывают каждый системный вызов, чтобы записать критические по отношению к безопасности события и те, которые реализуют набор и запись контрольных данных.
  • Подсистема KVM: Эта подсистема реализует сопровождение жизненного цикла виртуальной машины. Она выполняет завершение инструкции, используемое для инструкций, требующих только небольших проверок. Для любого другого завершения инструкции KVM вызывает компонент пространства пользователя QEMU.
  • Крипто API: Эта подсистема предоставляет внутреннюю по отношению к ядру криптографическую библиотеку для всех компонентов ядра. Она обеспечивает криптографические примитивы для вызывающих сторон.

Программное обеспечение ядра функций безопасности Linux

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

1. У правление выполнением процессов, включая операции их создания, завершения или приостановки и межпроцессоного обмена данными. Они включают:
  • Равнозначное планирование процессов для выполнения на ЦП.
  • Разделение процессов в ЦП с использованием режима разделения по времени.
  • Выполнение процесса в ЦП.
  • Приостановка ядра по истечениии отведенного ему кванта времени.
  • Выделение времени ядра для выполнения другого процесса.
  • Перепланирование времени ядра для выполнения приостановленного процесса.
  • Управление метаданными, связанными с безопасностью процесса, такими как идентификаторы UID, GID, метки SELinux, идентификаторы функциональных возможностей.
2. Выделение оперативной памяти для исполняемого процесса. Данная операция включает в себя:
  • Разрешение, выдаваемое ядром для процессов, на совместное использование части их адресного пространства при определенных условиях; однако, при этом ядро защает собственное адресное пространство процесса от внешнего вмешательства.
  • Если система испытывает нехватку свободной памяти, ядро освобождает память путем записи процесса временно в память второго уровня или раздел подкачки.
  • Согласованное взаимодействие с аппаратными средствами машины, чтобы установить отображение виртуальных адресов на физические адреса, которое устанавливает соответствие между адресами, сгенерированными компилятором, и физическими адресами.
3. Обслуживание жизненного цикла виртуальных машин, которое включает:

  • Установление ограничений для ресурсов, сконфигурированных приложением эмуляции для данной виртуальной машины.
  • Запуск программного кода виртуальной машины на исполнение.
  • Обработка завершения работы виртуальных машин или путем завершения инструкции или задержкой завершения инструкции для эмуляции пространства пользователя.
4. Обслуживание файловой системы. Это включает в себя:
  • Выделение вторичной памяти для эффективного хранения и извлечения пользовательских данных.
  • Выделение внешней памяти для пользовательских файлов.
  • Утилизация неиспользованного пространства для хранения данных.
  • Организация структуры файловой системы (использование понятных принципов структурирования).
  • Защита пользовательских файлов от несанкционированного доступа.
  • Организация контролируемого доступа процессов к периферийным устройствам, таким как терминалы, лентопротяжные устройства, дисководы и сетевые устройства.
  • Организация взаимного доступа к данным для субъектов и объектов, предоставление управляемого доступа, основанного на политике DAC и любой другой политике, реализуемой загруженной LSM.
Ядро Linux относится к типу ядер ОС, реализующих планирование с вытеснением задач. В ядрах, не обладающих такой возможностью, выполнение кода ядра продолжается до завершения, т.е. планировщик не способен к перепланированию задачи в то время, когда она находится в ядре. Кроме того, планирование исполнения кода ядра осуществляется совместно, без вытесняющего планирования, и исполнение этого кода продолжается до момента завершения и возврата к пространству пользователя, либо до явной блокировки. В вытесняющих ядрах возможно выгрузить задачу в любой точке, пока ядро находится в состоянии, в котором безопасно выполнять перепланирование.


среда, 5 августа 2015 г.

Программы с привилегиями, связанными с программным обеспечением Linux

Примеры программ, работающих с привилегиями ,связанными с программным обеспечением:
  • Программы, исполняемые системой, например, демоны cron и init.
  • Программы, которые выполняются доверенными администраторами в рамках задач системного администрирования.
  • Программы, которые работают с привилегированными идентификаторами, выполняя программные файлы SUID.
Все программное обеспечение, которое работает с привилегиями, связанными с аппаратными средствами или привилегиями, связанными с программным обеспечением, является частью функций безопасности исследуемого ПО (TOE Security Functions, TSF).
В системе, которая администрируется надлежащим образом, непривилегированное программное обеспечение проверяется политикой безопасности системы и не имеет никаких средств обхода механизмов, обеспечивающих ее осуществление. Этому непривилегированному программному обеспечению нельзя доверять всегда; такое ПО упоминается как недостоверное программное обеспечение. Доверяемые процессы, которые не реализуют функции безопасности, должны быть защищены от несанкционированного вмешательства, с помощью функций безопасности Linux. Им необходимо доверять, чтобы не выполнить какую-либо функцию, которая нарушает политику безопасности Linux.