По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Когда мы, разговаривая по IP телефону, слышим голос собеседника в трубке, или, используя систему видеоконференцсвязи, общаемся со своими коллегами и родственниками, то обмениваемся непрерывным потоком данных. При передаче потоковых данных, таких как голос и видео через пакетную сеть, очень важно использовать такие механизмы, которые решали бы следующие задачи: Устранение эффекта потери пакетов Восстановление порядка и контроль поступления пакетов Сглаживание эффекта задержки (джиттера) Именно для этих целей был разработан RTP (Real-time Transport Protocol) - протокол передачи в реальном времени, о котором пойдет речь в сегодняшней статье. Протокол разрабатывался в IETF группой Audio-Video Transport Working Group и описывается в рекомендации RFC 3550. Как правило, RTP работает поверх протокола UDP (User Datagram Protocol), так как при передаче мультимедийных данных очень важно обеспечить их своевременную доставку. RTP включает возможность определения типа полезной нагрузки и назначения последовательного номера пакета в потоке, а также применение временных меток. На передающей стороне каждый пакет помечается временной меткой, принимающая сторона получает ее и определяет суммарную задержку, после чего вычисляется разница в суммарных задержках и определяется джиттер. Таким образом, появляется возможность установить постоянную задержку выдачи пакетов и тем самым снизить влияние джиттера. Ещё одна функция RTP связана с возможными потерями пакетов при прохождении по IP сети, что выражается в появлении кратковременных пауз в разговоре. Внезапная тишина в телефонной трубке, как правило, очень негативно действует на слушателя, поэтому возможностями протокола RTP такие периоды тишины заполняются, так называемым,“комфортным шумом” RTP работает в связке с еще одним протоколом IETF, а именно RTCP (Real - time Transport Control Protocol), который описывается в RFC 3550. RTCP предназначен для сбора статистической информации, определения качества обслуживания QoS (Quality of Service), а также для синхронизации между медиа потоками RTP-сессии. Основная функция RTCP – установление обратной связи с приложением для отчета о качестве получаемой информации. Участники RTCP сессии обмениваются сведениями о числе полученных и утраченных пакетов, значении джиттера, задержке и т.д. На основе анализа этой информации принимается решение об изменении параметров передачи, например, для уменьшения коэффициента сжатия информации с целью улучшения качества ее передачи. Для выполнения этих функций RTCP передает специальные сообщения определенных типов: SR - Sender Report - отчёт источника со статистической информацией о RTP сессии RR - Receiver Report - отчёт получателя со статистической информацией о RTP сессии SDES - содержит описание параметров источника, включая cname (имя пользователя) BYE – Инициирует завершение участия в группе APP - Описание функций приложения RTP является протоколом однонаправленного действия, поэтому для организации двусторонней связи необходимо две RTP сессии, по одной с каждой стороны. RTP-сессия определяется IP адресами участников, а также парой незарезервированных UDP портов из диапазона 16384 - 32767. Кроме того, для организации обратной связи с приложением необходимо также установить двустороннюю RTCP сессию. Для RTCP сессии занимаются порты с номером на единицу большим чем RTP. Так например, если для RTP выбран 19554 порт, то RTCP сессия займет 19555 порт. Наглядно формирование RTP/RTCP сессии представлено на рисунке ниже. Стоит также отметить, что сам протокол RTP не имеет механизмов для самостоятельного установления сессии, эта задачу выполняют протоколы сигнализации, такие как SIP,H.323,SCCP , которые мы подробно рассматривали в предыдущих статьях.
img
Друг, начнем с цитаты: Redis – это высокопроизводительная БД с открытым исходным кодом (лицензия BSD), которая хранит данные в памяти, доступ к которым осуществляется по ключу доступа. Так же Редис это кэш и брокер сообщений. Надо признаться, определение не дает точного понимания, что же такое Redis. Если это так круто, то зачем вообще нужны другие БД? На самом деле, Redis правильнее всего использовать в определенных кейсах, само собой, зная про подводные камни – именно об этом и поговорим. Про установку Redis в CentOS 8 мы рассказываем в этой статье. Redis как база данных Говорим про случай, когда Redis выступает в роли базы данных: Пару слов про ограничения такой модели: Размер БД ограничен доступной памятью Шардинг (техника масштабирования) ведет к увеличению задержки Это NoSQL - никакого языка SQL LUA скриптинг в качестве альтернативы Это нереляционная СУБД! Нет сегментации на пользователей или группы пользователей. Отсутствует контроль доступа Доступ по общему паролю. Что скажут ваши безопасники? Теперь про преимущества модели: Скорость Хранение данных в памяти делает быстрее работу с ними Скрипты на LUA Выполнение прямо в памяти, опять же, ускоряет работу Удобные форматы запросов/данных Geospatial – геоданные (высота, ширина, долгота и так далее) Hyperloglog – статистическе алгоритмы Hash – если коротко, то хэш в Redis делают между строковыми полями и их значениями Алгоритмы устаревания данных Примеры использования Представь, у нас есть приложение, где пользователям необходимо авторизоваться, чтобы выполнять какие – либо действия внутри приложения. Каждый раз, когда мы обновляем авторизационные данные клиента, мы хотим их получать для последующего контроля. Мы могли бы отправлять лист авторизационных параметров (с некими номерами авторизаций, сроком действия с соответствующими подписями), чтобы каждое действие внутри приложения, сопровождалось авторизацонной транзакцией из листа, который мы прислали клиенту. С точки зрения безопасности, в этом подходе нет ничего плохого, если мы храним на своей стороне данные в безопасности и используем Javascript Object Signing and Encryption (JOSE), например. Но проблема появится в том случае, когда наш пользователь имеет более одной авторизации внутри приложения – такие схемы плохо поддаются масштабированию. А что если вместо отправки листа авторизационных параметров, мы сохраним его у себя, а пользователю отправим некий токен, который они должны отправлять для авторизации? Далее, по этому токену, мы легко сможем найти авторизации юзера. Это делает систему гораздо масштабируемой. Redis, такой Redis. Итого, для указанной выше схемы, мы хотим: Скорость Мы не хотим, чтобы пользователь долго ожидал авторизации Масштабирумость системы Сопоставление ключа (токена) с авторизациями юзера А вот, что на эти вызовы может ответить Redis: Redis хранит данные в памяти – он быстрый. Redis можно кластеризовать через компонент Sentinel. Масштабируемость? Пожалуйста. В Redis куча вариантов хранения списков. Самый простой будет являться набором данных. В качестве бонуса от Redis, вы получите механизм экспайринга токенов (устаревания). Все будет работать. Redis как кэш! Redis почти заменил memcached в современных приложениях. Его фичи делают супер – удобным кэширование данных. Ограничения: Значения не могут превышать 512 МБ Отсутствует искусственный интеллект, который будет очищать ваше хранилище данных Профит: Совместное использование кэша разными сервисами по сети Удобные фичи, такие как LUA скриптинг, который упрощает работы с кэшом Временные ограничения для данных Еще один кейс Предположим, перед нами такая задача: приложение, отображает пользователям данные с определенными значениями, которые можно сортировать по множеству признаков. Все наши данные хранятся в БД (например, MySQL) и показывать отсортированные данные нужно часто. Дергать БД каждый раз весьма тяжело и ресурсозатратно, а значит, нам нужно кэшировать данные в отсортированном порядке. Окей, кейс понятен. Рэдис, что скажешь на такие требования? Кэш должен хранить сортированные наборы данных Нам нужно вытаскивать наборы данных внутри наборов данных (для пагинации, например, то есть для переключения между страницами) Это должно быть быстрее, чем пересчет данных с нуля Что скажет Redis: Хранить наборы данных - легко Может вытаскивать сабсеты из наборов - легко Конечно быстрее. Ведь данные хранятся в памяти Redis как брокер сообщений Редис может выступать в качестве брокера сообщений. Схема обычная и весьма базовая - publish–subscribe (pub/sub), или как можно перевести на русский язык «Издатель - подписчик». Как и раньше, давайте обсудим плюсы и минусы, хотя их тут и не так много. Минусы: Только тривиальная модель pub/sub Отсутствие очередей сообщений Ну а плюсы, как обычно для Редиса – скорость и стабильность. Кейс напоследок Простой пример – коллаборация сотрудников одной компании. Предположим, у них есть приложение, где они работают над общими задачами. Каждый пользователь делает свой набор действий, о котором другие пользователи должны знать. А так же, юзеры могут иметь разные экземпляры приложений – десктоп, мобильный или что то еще. Требования по этой задаче: Низкая задержка Мы не хотим иметь трудности в процессе совместной работы сотрудников Стабильная работа и непрерывность Масштабирование Кампания растет и развивается Редис, твой выход! Низкая задержка – да, говорили об этом ранее Стабильность – минимальное количество точек отказа в Redis Стабильная работа и непрерывность Масштабирование – сделаем кластер, нет проблем. Выводы Redis - крутая штука, которая позволяет объединять сервисы и следовать 12 принципам приложений. Для приложений, в которых нагрузка ориентирована на быстрое изменение наборов данных и высокая безопасность данных не имеет завышенных требований – Redis прекрасный выбор. Если данные нуждаются в усиленной защите, Редис подойдет в меньшей степени, лучше посмотрите в сторону MongoDB или Elasticsearch.
img
Контейнеры Docker и Kubernetes - движущая сила современного жизненного цикла разработки программного обеспечения. Хотя Docker - более безопасный вариант, чем работа непосредственно на главном компьютере, при работе с контейнерами может возникнуть множество потенциальных проблем безопасности. В эту статью включены десять рекомендаций по безопасности контейнеров, которые помогут предотвратить атаки и нарушения безопасности. 1. Регулярно обновляйте Docker и хост Убедитесь, что ваш хост и Docker обновлены. Используйте последнюю версию ОС и программное обеспечение для контейнеризации, чтобы предотвратить уязвимости системы безопасности. Каждое обновление включает критические исправления безопасности, необходимые для защиты хоста и данных. Обновление Docker не ограничивается самой платформой. Запущенные контейнеры не обновляются автоматически. Вы также должны обновить контейнеры и образы, на которых они основаны. 2. Настройте квоты ресурсов. Чтобы избежать взлома контейнеров, которые чрезмерно потребляют ресурсы, установите ограничения на использование памяти и ЦП Docker. Не настраивая квоты ресурсов, вы предоставляете контейнеру доступ ко всем ресурсам ОЗУ и ЦП хоста. Поскольку это настройка по умолчанию, рекомендуется ограничить количество ресурсов, которые может использовать контейнер, чтобы это не нарушило работу других служб. Это не только предотвращает использование контейнером всех ресурсов, но также помогает поддерживать эффективность среды Docker. Квоты ресурсов обеспечивают работу контейнеров с ожидаемой скоростью и повышают безопасность. 3. Используйте пользователей без полномочий root Docker позволяет запускать контейнер в привилегированном режиме. Хотя это может быть более быстрый способ обойти некоторые протоколы безопасности, вы всегда должны воздерживаться от использования этой практики. Опасность запуска привилегированного контейнера заключается в том, что он открывает дверь для потенциальной вредоносной активности. Привилегированный пользователь Docker имеет те же привилегии, что и root. Это означает, что у него есть доступ к функциям ядра и другим устройствам на хосте. Злоумышленник может войти в вашу хост-систему через контейнер и подвергнуть опасности все, что находится на ней. Придерживаться исключительно пользователей без полномочий root просто, так как это настройки Docker по умолчанию. Чтобы изменить конфигурацию по умолчанию, вам нужно будет добавить флаг --privileged в команду docker run. Однако это серьезная угроза безопасности и не должна использоваться. 4. Ограничьте возможности Контейнеры имеют ограниченный набор возможностей Linux. Например, они могут позволить пользователю запускать контейнер с эффективностью root, но без полных привилегий root. Ограниченные возможности Docker являются настройками безопасности по умолчанию, и они одинаковы для каждого контейнера. Поэтому рекомендуется изменить возможности, чтобы включить только то, что необходимо. Администратор управляет ими с помощью параметров --cap-add и --cap-drop. Самый безопасный способ настроить возможности контейнера - удалить все (используя параметр --cap-drop = ALL), а затем добавить необходимые. 5. Запретить новые привилегии Как видно из приведенного выше примера, Docker позволяет изменять возможности и привилегии контейнеров после их запуска. Чтобы предотвратить атаки повышения привилегий, рекомендуется определить привилегии контейнера. Чтобы запретить процессам-контейнерам получать новые привилегии, используйте флаг --security-opt со значением no-new-privileges: true. Добавление флага в команду docker run перезаписывает все правила, которые вы установили с помощью параметров --cap-add и --cap-drop. Кроме того, вы можете удалить или отключить двоичные файлы setuid и setgid в образах. Это гарантирует, что функция не будет использоваться для обхода/инъекции пути, переполнения буфера и атак с повышением привилегий. 6. Используйте надежные образы При извлечении образа из онлайн-реестров убедитесь, что оно из безопасного и надежного источника. Самый безопасный вариант - использовать официальный центр Docker. Избегайте общедоступных сторонних реестров, в которых отсутствуют политики контроля. При использовании онлайн-библиотек всегда просматривайте содержимое внутри образа. Кроме того, используйте инструменты сканирования образов для поиска уязвимостей перед загрузкой чего-либо в хост-систему. Лучше всего зайти в Docker Hub и посмотреть, сможете ли вы найти там нужный образ. Это крупнейшая в мире библиотека и сообщество Docker с более чем 100 000 образов контейнеров. 7. Держите образы и контейнеры легковесными Сведите к минимуму поверхность атаки контейнеров Docker, используя минимальный базовый образ и уменьшив количество компонентов контейнера. Сохранение небольшого размера образа помогает предотвратить нарушения безопасности и ускоряет работу контейнера. 8. Безопасные реестры Реестр Docker - это система доставки контента, используемая для хранения и предоставления образов для ваших контейнеров. Вы можете использовать официальный онлайн-реестр Docker или настроить частный реестр на своем хосте. Для решения для хранения образов корпоративного уровня следует использовать доверенный реестр Docker (DTR - Docker Trusted Registry ). Вы можете установить реестр за брандмауэром, чтобы предотвратить возможные нарушения. 9. Не открывайте сокет демона Docker Docker взаимодействует с сокетом домена UNIX, который называется /var/run/docker.sock. Это основная точка входа для Docker API. Любой, у кого есть доступ к сокету демона Docker, также имеет неограниченный root-доступ. Разрешение пользователю писать в /var/run/docker.sock или открывать сокет контейнеру - это серьезная угроза безопасности для остальной системы. По сути, это дает ему привилегии root. Установка сокета Docker внутри контейнера не ограничивает его привилегированным доступом внутри контейнера. Это позволяет контейнеру полностью контролировать хост и все другие контейнеры. Следовательно, это не рекомендуемая практика. 10. Отслеживайте API и сетевую активность. API и сети играют решающую роль в безопасности Docker. Контейнеры Docker обмениваются данными через API и сети. Следовательно, чтобы избежать вторжения, архитектура должна быть настроена безопасно. Администраторы безопасности недавно обнаружили новый тип атаки, использующий неправильно настроенные API-интерфейсы Docker. Хакеры используют плохо настроенные API-интерфейсы и сетевую безопасность, используют их для развертывания образа и запуска вредоносного контейнера в хост-системе. Помимо безопасной настройки сетей и API, вам также необходимо отслеживать действия для выявления потенциальных аномалий.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59