По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Когда вы входите на финансовый или медицинский веб-сайт и входите в систему, вы должны ожидать, что полученная вами информация не будет перехвачена и прочитана кем-либо на пути между вашим компьютером и сервером. Менее очевидная, но не менее важная проблема заключается в том, что информация, которую вы отправляете на сайт, не должна быть открыта для изменения во время ее передачи по сети. Но как это можно обеспечить? Это две области, для решения которых можно использовать транспортную безопасность. В этой серии статей будет рассмотрено пространство проблем транспортной безопасности, а затем будет проведено исследование нескольких видов решений, включая шифрование. Наконец, в этой серии статей мы рассмотрим спецификацию безопасности транспортного уровня (TLS) в качестве примера шифрования транспортного уровня. Проблемное пространство Безопасность обычно решает одну из четырех проблем: подтверждение того, что данные не были изменены при передаче, предотвращение доступа к информации никому, кроме предполагаемого получателя, защита конфиденциальности людей, использующих сеть, и подтверждение того, что информация была доставлена. Вторая и третья проблемы, предотвращение несанкционированного доступа к данным при их передаче по сети и защита конфиденциальности пользователей, являются связанными проблемами, но будут рассматриваться отдельно в следующих разделах. Последняя отмеченная проблема, проблема доказательства обхода (которая аналогична проблеме доказательства работы, которая встречается в других контекстах информационных технологий), здесь не рассматривается, поскольку это область активных исследований с небольшим количеством развернутых систем. Проверка данных Если вы войдете на сайт своего банка и переведете 100 рублей с одного счета на другой, вы, скорее всего, будете расстроены, если на самом деле сумма перевода составит 1000 рублей или если номера счетов будут изменены, так что 100 рублей окажутся на чьем-то другом счете. Существует ряд других ситуаций, когда необходимо убедиться, что передаваемые данные совпадают с полученными, например: Если вы покупаете пару синих туфель, вы не хотите, чтобы вместо них доставили комплект красных. Если ваш врач дает вам рецепт на лекарство от изжоги (вероятно, вызванной стрессом от работы сетевым инженером), вы не хотите, чтобы вам доставляли лекарство от артрита (вероятно, из-за того, что вы печатаете так много документов и книг). Существует множество ситуаций, когда полученные данные должны совпадать с переданными, а отправитель и/или получатель должны быть поддающимися проверке. Защита данных от проверки Примеры защиты данных, приведенные выше, позволяют сделать еще один шаг вперед: вы не хотите, чтобы кто-то видел номер вашего счета, рецепт или другую информацию, когда она передается по сети. Номера счетов, пароли и любая личная информация (PII) очень важны, поскольку эти виды информации могут быть использованы для взлома счетов с целью кражи денег или даже для кражи конфиденциальной информации. Как можно защитить такую информацию? Основным средством защиты, используемым для предотвращения неавторизованных пользователей (или злоумышленников), является шифрование. Защита конфиденциальности пользователей Конфиденциальность - это не просто приятно особенность глобального интернета, это требование пользователей доверять системе. Это верно и для локальных сетей, если пользователи считают, что за ними каким-то образом шпионят, они вряд ли будут использовать сеть. Скорее всего, они будут использовать sneakernet, распечатывая информацию и перенося ее вручную, а не передавая по сети. Хотя многие люди считают, что конфиденциальность не является обоснованной проблемой, в этой области существует много обоснованных проблем. Например, в области управления информацией часто говорят: "Знание - сила". Информация о компьютере или сети дает вам определенную власть над компьютером, сетью или системой. Например, предположим, что банк настраивает автоматическое резервное копирование для определенной таблицы базы данных; когда остатки на счете, хранящемся в таблице, изменяются на определенную величину, резервное копирование запускается автоматически. Это может показаться вполне разумным вариантом резервного копирования, но оно требует исчерпания некоторого объема данных. Примечание: исчерпание данных - это информация о физических движениях людей или информация, которая может быть использована для вывода о том, что делают эти люди или эта информация. Например, если вы каждое утро едете на работу одним и тем же маршрутом, кто-то может сделать вывод, что после того, как вы проделали какую-то небольшую часть поездки в сочетании со временем суток, вы собираетесь работать. Такие же типы данных существуют и в сетевом мире; если каждый раз, в определенное время суток, через сеть передается определенный фрагмент данных определенного размера, и он случайно совпадает с определенным событием, таким как перевод денег между двумя счетами, то, когда появляются эти конкретные данные, передача должна иметь место. Просмотр, история электронной почты и другие действия в интернете-все это приводит к исчерпанию данных, которые иногда могут быть использованы для вывода содержимого потока данных, даже если поток зашифрован. Уязвимость здесь заключается в следующем: если злоумышленник создает резервную копию вместе с изменением значения учетной записи, этот человек будет точно знать, какова модель активности учетной записи. Достаточное количество таких подсказок можно превратить в целый набор планов атаки. То же самое верно и в отношении людей; знание о людях может дать вам некоторую способность влиять на людей в определенных направлениях. Хотя влияние на людей не так велико, как влияние на машины, передача власти одному человеку над другим всегда несет в себе моральные последствия, с которыми нужно обращаться осторожно. Область решений Хотя каждое решение проблем безопасности и конфиденциальности, описанных в предыдущих разделах, обычно включает в себя сложные математические вычисления, в этом разделе будут (попытаемся) описать решения без математических расчетов. Шифрование Шифрование берет блок информации (открытый текст) и кодирует его, используя некоторую форму математической операции, чтобы скрыть текст, в результате чего получается зашифрованный текст. Чтобы восстановить исходный простой текст, математические операции должны быть отменены. Хотя шифрование часто рассматривается как математическая конструкция, иногда проще начать думать о нем как о шифре подстановки с таблицей подстановок, которая меняется в зависимости от используемого ключа. Рисунок 1 иллюстрирует это. Кстати, про типы шифрования в России и за рубежом можно почитать тут. На рисунке 1 показан четырехбитовый блок информации - тривиальный пример, но все же полезный для демонстрации. Процесс шифрования концептуально представляет собой серию прямых замен: Рис. 1 Блок шифрования как таблица подстановки Если 0001 находится в исходном блоке данных (открытый текст) и используется ключ 1, то 1010 подставляется в фактический передаваемый поток (зашифрованный текст). Если 0010 обнаружен в открытом тексте и используется ключ 1, то 0100 подставляется в передаваемые данные. Если 0001 найден в открытом тексте и используется ключ 2, то в передаваемые данные подставляется 0000. Если 0110 находится в открытом тексте и используется ключ 2, то в передаваемые данные подставляется 1001. Процесс замены одного блока бит на другой называется преобразованием. Эти преобразования должны быть симметричными: они должны не только позволять шифрование открытого текста в зашифрованный текст, но они также должны позволять восстанавливать открытый текст (незашифрованный) из зашифрованного текста. В таблице подстановок этот процесс включает поиск ключа на стороне зашифрованного текста таблицы и замену эквивалента открытого текста. Размер таблицы подстановки определяется размером блока или количеством битов, кодируемых за один раз. Если, например, используется 128-битный блок, в поисковой таблице должно быть 2128 записей - действительно, очень большое количество. Этот вид пространства все еще можно быстро найти с помощью эффективного алгоритма, поэтому блок должен иметь некоторые другие особенности, кроме просто большого размера. Во-первых, шифротекстовая сторона блока подстановки должна быть как можно более случайной. Чтобы преобразование было идеальным, любой шаблон, найденный в открытом тексте, не должен быть доступен для анализа в результирующем зашифрованном тексте. Выход зашифрованного текста должен выглядеть как можно ближе к случайному набору чисел, независимо от того, какой вход. Во-вторых, блок подстановки должен быть настолько большим, насколько это практически возможно. Чем более случайным и большим является блок подстановки, тем труднее вернуться от открытого и зашифрованного текста к обнаружению используемого шаблона подстановки. Чтобы выполнить brute-force атаку против подстановки с использованием 128-битного размера блока, злоумышленник должен соотнести как можно больше из 2128 записей в блоке открытого текста с 2128 записями в блоке подстановки зашифрованного текста-если информация использует только небольшой (или разреженный) набор возможных записей из исходного 128-битного пространства, практически нет способа сделать корреляцию достаточно быстрой, чтобы сделать такую атаку практичной, учитывая, что шифрующий отправитель достаточно часто меняет свой ключ. Примечание. Когда дело доходит до размера блока, существует закон убывающей доходности; в какой-то момент увеличение размера блока не увеличивает эффективность шифра при сокрытии информации. Плотность лучше всего объяснить на примере. Предположим, что вы используете шифр прямой подстановки в английском языке, где каждая буква заменяется буквой, смещенной на четыре шага в алфавите. В этом виде (тривиального) шифра: Каждая буква А будет заменена буквой Е. Каждая буква B будет заменена буквой F. Каждая буква С будет заменена буквой G. и т.д. Теперь попробуйте зашифровать два разных предложения с помощью этого преобразования: THE SKY IS BLUE == XLI WOC MW FPYI THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG == XLI UYMGO FVSAR JSB NYQTIH SZIV XLI PEDC HSK Для злоумышленника, пытающегося выяснить, как версия предложения с зашифрованным текстом соотносится с версией открытого текста, первое предложение представляет 9 совпадающих пар букв из пространства, содержащего 26 возможных букв. Есть хороший шанс, что вы сможете угадать правильное преобразование - переместитесь на четыре шага вправо - из этого небольшого образца, но возможно, что здесь задействован какой-то "трюк", из-за которого будущие сообщения, зашифрованные с помощью этого преобразования, не будут расшифрованы правильно. Однако второе предложение - это хорошо известный пример предложения, содержащего все возможные буквы английского алфавита. Преобразование может быть проверено на соответствие каждому возможному значению во всем диапазоне ввода и вывода, что делает обнаружение преобразования тривиальным. В этом примере первое предложение будет менее плотным, чем второе. В реальных криптографических системах общая идея состояла бы в том, чтобы использовать всего несколько тысяч возможных символов из 2128 или 2512 возможных символов, что создает гораздо менее плотный набор информации для работы. В какой-то момент плотность становится достаточно низкой, преобразование - достаточно сложным, а зашифрованный текст - достаточно случайным, так что не существует практического способа вычислить взаимосвязь между входом (открытым текстом) и выходом (зашифрованный текст). В реальной жизни блоки замены не вычисляются заранее таким образом. Скорее, для вычисления значения замены в реальном времени используется криптографическая функция. Эти криптографические функции принимают входной размер блока, открытый текст, выполняют преобразование и выводят правильный зашифрованный текст. Ключ - это второй вход, который изменяет выходные данные преобразования, поэтому каждый ключ приводит к тому, что преобразование производит разные выходные данные. Если размер ключа равен 128 битам, а размер блока равен 256 битам, существует 2128 × 2256 возможных выходных комбинаций из преобразования. Рисунок 2 иллюстрирует это. На рисунке 2 каждая таблица подстановки представляет собой размер блока. Если размер блока составляет 256 бит, то в каждой таблице имеется 2256 возможных замен. Каждый ключ создает новую таблицу, поэтому, если ключ составляет 128 бит, то существует 2128 возможных таблиц. Есть два основных способа атаковать такую систему шифрования. Первый способ атаковать этот тип системы шифрования-попытаться сопоставить каждое возможное входное значение с каждым возможным выходным значением, раскрывая всю таблицу подстановок. Если входные данные представляют только небольшой набор возможных входных данных (таблица используется редко или, точнее, представляет собой разреженный массив), эта задача практически невыполнима. Если пользователь меняет свой ключ, а следовательно, и конкретную таблицу среди возможного набора таблиц, достаточно часто, нет никакого способа выполнить это сопоставление быстрее, чем изменяется ключ. Примечание. Даже в больших блоках, объединенных с преобразованиями, все еще есть потенциальные слабые места, позволяющие получить почти случайный результат-другими словами, даже если преобразование близко к идеалу. Если вы соберете 23 человека в одной комнате, есть большая вероятность, что у двух из них будет один и тот же день рождения-но это кажется иррациональным, потому что есть 365 потенциальных дней (не считая високосные года), в которые человек может родиться. Причина несоответствия между тем, что должно произойти, и тем, что происходит, заключается в следующем: в реальном мире дни рождения людей группируются по очень небольшому числу дней в течение года. Таким образом, входные данные представляют собой очень плотное "пятно" в умеренно большом наборе возможных значений. Когда это происходит, разреженность данных может работать против системы шифрования. Если небольшой набор данных повторяется в большом наборе на регулярной основе, злоумышленник может сосредоточиться только на наиболее часто используемых заменах и потенциально обнаружить содержимое сообщения, достаточное для восстановления большей части смысла. Второй способ атаковать систему шифрования такого типа - атаковать само преобразование - криптографическую функцию. Помните, что эти большие таблицы подстановки часто невозможно сгенерировать, сохранить и транспортировать, поэтому используется некоторая форма криптографической функции, чтобы принимать блок открытого текста в качестве входных данных и генерировать блок зашифрованного текста в качестве выходных данных. Если бы вы могли обнаружить эту функцию преобразования, то вы могли бы вычислить вывод таким же образом, как передатчик и приемник, и расшифровать открытый текст в реальном времени. В реальном мире эта проблема усложняется из-за: Принцип Керкхоффа, согласно которому само преобразование не должно быть секретом. Скорее, только ключ, используемый для выбора таблицы из возможных, должен храниться в секрете. По крайней мере, некоторый открытый и зашифрованный текст иногда может быть восстановлен из текущей зашифрованной передачи данных по различным причинам-возможно, ошибка, или, возможно, смысл шифрования заключается в проверке текста, а не в том, чтобы не дать тексту быть прочитанным. Учитывая эти ограничения, следует учитывать несколько ключевых моментов: Сложность вычисления ключа из открытого текста, зашифрованного текста и криптографической функции (преобразования) должна быть очень высокой. Случайность вывода криптографической функции должна быть очень высокой, чтобы снизить вероятность успешных brute-force атак - просто перебора всех возможных ключей в пространстве. Ключевое пространство должно быть большим, опять же, чтобы предотвратить успешные brute-force атаки. Качество криптографической функции определяется способностью функции выдавать максимально близкий к случайному результату практически любой вход таким образом, чтобы злоумышленник не мог обнаружить, какой ключ используется, даже если у них есть как открытый текст, так и зашифрованный текст. Таким образом, криптографические функции обычно используют ту или иную форму одной из самых сложных для вычисления задач. В частности, часто используется вычисление множителей очень больших простых чисел. Что произойдет, если вы используете 128-битный блок и у вас есть 56 бит данных для транспортировки? В этой ситуации наиболее естественным образом было бы дополнить открытый текст некоторым числом: скорее всего, всеми нулями или единицами. Качество вывода в некоторой степени зависит от разреженности ввода, чем меньше диапазон чисел используется как вход, тем более предсказуемым будет выход криптографической функции. В этом случае важно использовать заполнение, максимально приближенное к случайному. Существует целая область изучения того, как дополнять блоки открытого текста, чтобы "помочь" криптографической функции создавать зашифрованный текст, максимально приближенный к случайному. Несколько раундов шифрования Одну и ту же информацию можно обрабатывать с помощью криптографической функции несколько раз. Например, если у вас есть 128-битный блок и 128-битный ключ, вы можете: Возьмите открытый текст и с помощью ключа вычислите зашифрованный текст. Назовите это ct1. Возьмите ct1 и с помощью ключа вычислите шифротекст второго раунда; назовите это ct2. Возьмите ct2 и, используя ключ, вычислите шифротекст третьего раунда; назовите это ct3. Фактический передаваемый шифротекст будет последним ct3. К чему приводит этот процесс? Помните, что качество процесса шифрования связано со случайностью выхода по отношению к входу. Каждый раунд во многих ситуациях лишь немного увеличивает случайность. В этом процессе есть точка уменьшения отдачи; обычно после третьего раунда данные не становятся "более случайными", и, следовательно, больше раундов, по сути, просто тратят вычислительную мощность и время для очень небольшого выигрыша. Криптография с открытым и закрытым ключом Существует класс криптографических функций, которые могут преобразовывать открытый текст в зашифрованный текст и обратно, используя два разных ключа. Эта возможность полезна, когда вы хотите иметь возможность зашифровать блок данных одним ключом и позволить кому-то другому расшифровать данные, используя другой ключ. Ключ, который вы держите в секрете, называется закрытым ключом, а ключ, который вы передаете другим или публикуете, называется открытым ключом. Например, чтобы доказать, что вы являетесь фактическим отправителем конкретного файла, вы можете зашифровать файл своим закрытым ключом. Теперь любой человек с вашим открытым ключом может расшифровать файл, который мог быть отправлен только вами. Обычно вы не шифруете весь блок данных своим закрытым ключом (на самом деле большинство систем, использующих пары ключей, спроектированы так, что вы не можете этого сделать). Скорее, с помощью вашего закрытого ключа создается подпись, которая может быть проверена с помощью вашего открытого ключа. Чтобы убедиться, что только человек, которому вы отправляете данные, может что-то прочитать, вы можете зашифровать некоторые данные своим открытым ключом, опубликовать их, и только человек с правильным закрытым ключом может их расшифровать. Такие системы называют криптографией с открытым ключом (иногда названия, которые выбирают инженеры, возможно, слишком очевидны), или асимметричной криптографией. В криптографии с открытым ключом открытый ключ часто "выпускается на волю"; это то, что может найти любой, у кого есть доступ к ключевому серверу или другому источнику. Альтернативой криптографии с открытым ключом является криптография с симметричным ключом. В криптографии с симметричным ключом отправитель и получатель используют один ключ, который используется как для шифрования, так и для расшифровки данных (общий секрет). Учитывая, что общие секреты (очевидно) сложно создавать и использовать, почему вообще используется криптография с симметричным ключом? При выборе между симметричной криптографией и криптографией с открытым / закрытым ключом необходимо учитывать два основных компромисса: Сложность обработки: системы криптографии с открытым ключом обычно требуют гораздо большей вычислительной мощности для шифрования и расшифровки передаваемых данных. Системы с симметричными ключами, как правило, намного проще разрабатывать и развертывать, не требуя больших вычислительных мощностей и времени. Из-за этого криптография с открытым ключом часто используется для шифрования очень небольших объемов данных, таких как закрытый ключ. Безопасность: криптография с открытым ключом обычно требует отчасти уникального набора механизмов математического преобразования. Системы с симметричным ключом, как правило, имеют более широкий диапазон доступных преобразований, которые также являются более сложными и, следовательно, более безопасными (они обеспечивают большую случайность на выходе и, следовательно, их труднее взломать). С учетом этих компромиссов и реальных требований есть место для обоих типов систем.
img
Обмен сообщениями Publish/Subscribe, также известный как Pub/Sub, - это асинхронный метод связи между службами, который используется в бессерверных архитектурах и архитектурах микрослужб. В целом, модель Pub/Sub включает в себя: Издателя (publisher), который отправляет сообщение Подписчика (subscriber), который получает сообщение через брокера сообщений   В общих чертах, что такое обмен сообщениями Pub/Sub С учетом того, что популярность несвязных приложений и приложений на основе микрослужб только растет, критически важное значение для общей функциональности приложения имеет надлежащая коммуникация между компонентами и службами. Обмен сообщениями Pub/Sub помогает здесь в двух аспектах:  предоставляет разработчикам возможность легко и просто создавать несвязные приложения, используя надежный метод; предоставляет пользователям возможность легко и просто создавать событийно-управляемые архитектуры. Модель Pub/Sub позволяет асинхронно передавать сообщения в несколько разделов приложений.  Основной компонент, который обеспечивает всю эту функциональность, называется Тема (Topic). Издатель отправляет сообщение в тему, а тема сразу же отправляет это сообщение всем подписчикам. Именно этот подход отличает модель Pub/Sub от обычных брокеров сообщений, где очередь сообщений группируется до тех пор, пока пользователь или служба не запросит и не извлечет их.  Что бы ни представляло из себя сообщение в модели Pub/Sub, оно в любом случае будет отправлено всем подписчикам. Единственное исключение – это политики для подписчиков, которые создаются пользователями и которые фильтруют сообщения. Такой поход позволяет создавать событийно-управляемые сервисы, которые не будут требовать от подписчиков запрашивать сообщения из очереди. Также модель Pub/Sub позволяет разработчикам создавать различные отдельные функции, которые используют одно и то же сообщение (одни и те же данные) и которые могут выполняться параллельно, что дает возможность обслуживать сразу несколько подписчиков.   Шаблон Pub/Sub обособляет издателей от подписчиков для того, чтобы издатели не знали, где используется сообщение, а подписчики не знали ничего об издателе. Это способствует улучшению общей безопасности приложения.  Преимущества шаблона Pub/Sub Распределенное приложение на основе микрослужб, которое к тому же было разработано с помощью шаблона Pub/Sub, приносит выгоду всей организации, от разработчиков программного обеспечения до инженеров, которые отвечают за контроль качества.  Ниже приведен список преимуществ шаблона Pub/Sub: Несвязные/слабосвязные компоненты Модель Pub/Sub позволяет легко разделить коммуникацию и логику приложения, это в свою очередь позволяет создать изолированные компоненты. Это обеспечивает: создание модульных, более надежных и безопасных программных компонентов или модулей; улучшение качества кода и удобство сопровождения. Улучшенная наглядность в масштабе системы Простота шаблона Pub/Sub позволяет пользователям легко понимать принцип работы приложения.  С помощью этого шаблона также можно создавать несвязные компоненты, которые позволяют наблюдать за информационным потоком. Мы можем точно знать, откуда идет информация и куда, без явного определения источников или адресатов в исходном коде.  Коммуникации в режиме реального времени Pub/Sub мгновенно доставляет сообщения подписчикам с помощью push-доставки. Это делает данный подход идеальным для коммуникации в режиме, близком к режиму реального времени. Такой подход избавляет от необходимости отправки запроса для проверки наличия сообщений в очередях, в следствие чего снижается задержка доставки сообщений в приложении.  Простота разработки Так как Pub/Sub не зависит от языка программирования, протокола или какой-то конкретной технологии, то в этот шаблон может быть интегрирован абсолютно любой поддерживаемый брокер сообщений с помощью любого языка программирования. Ко всему прочему, Pub/Sub может быть использован в качестве моста для обеспечения коммуникации между компонентами, которые были реализованы с помощью различных языков программирования, путем управления межкомпонентной связью. Это приводит к тому, что такое приложение будет просто интегрировать с внешними системами и не нужно будет создавать дополнительные функции для упрощения процесса коммуникации или беспокоиться о последствиях нарушения безопасности. Мы можем просто опубликовать сообщение в теме и позволить внешнему приложению подписаться на эту тему, тем самым пропадает необходимость прямого взаимодействия с основным приложением.  Повышенная масштабируемость и надежность Этот шаблон обмена сообщениями считается эластичным – не нужно заранее определять количество издателей или подписчиков. Их можно просто по необходимости добавить в нужную тему. Тот факт, что коммуникация и логика приложения разделены, упрощает процесс устранения неисправностей, так как разработчики могут сосредоточиться на каком-то конкретном компоненте и не беспокоиться о том, что это может как-то повлиять на остальную часть приложения.  Шаблон Pub/Sub также улучшает масштабируемость приложения, так как позволяет менять архитектуру брокеров сообщений, фильтры и пользователей и не затрагивать при этом базовые компоненты. В модели Pub/Sub новая реализация обмена сообщениями в случае, если форматы сообщений совместимы даже со сложными изменениями в архитектуре, – это просто вопрос изменение темы.  Улучшенная способность к тестированию В связи с тем, что приложение является модульным, тесты могут быть направлены на каждый модуль в отдельности, обеспечивая тем самым более оптимизированный процесс тестирования. Сосредоточенность на каждом отдельном компоненте приложения значительно снижает сложность тестовых сценариев.  Также шаблон Pub/Sub позволяет легко определить источник и адресат данных и информационный поток. Это особенно полезно, когда вы тестируете вопросы, связанные с: повреждением данных; форматированием; безопасностью. Недостатки шаблона Pub/Sub Pub/Sub – это надежная служба обмена сообщениями, но она не всегда соответствует всем требованиям. Давайте кратко рассмотрим некоторые недостатки этого шаблона. Излишняя сложность в небольших системах Pub/Sub требует правильной настройки и сопровождения. Если масштабируемость и несвязность компонентов не являются жизненно важными аспектами для вашего приложения, то внедрение такого шаблона, как Pub/Sub, будет пустой тратой ресурсов и добавит небольшой системе излишнюю сложность.  Потоковая передача мультимедиа Pub/Sub не подходит для работы с медиафайлами, такими как аудио или видео, так как они требуют плавной синхронной потоковой передачи между хостом и получателем. Так как этот шаблон не поддерживает синхронную сквозную передачу данных, то обмен сообщениями Pub/Sub не стоит рассматривать для: видео-конференций; голосовой связи по IP-протоколу; обычных приложений для потоковой передачи мультимедиа. Обмен сообщениями Pub/Sub: варианты использования Итак, когда же лучше всего использовать шаблон Pub/Sub? Шаблон Pub/Sub можно использовать в самых различных областях для того, чтобы облегчить обмен данными в режиме реального времени и при распределенных коммуникациях. Например, ключевая сфера, которой такой шаблон только на руку, - это автоматизация.  В следующих разделах вы найдете описание самых распространенных вариантов использования шаблона Pub/Sub.  Интернет вещей  В эпоху интеллектуальных устройств нам требуется надежный и эффективный способ сбора и распространения информации. Узел управления или сервер может публиковать обновления, которые будут автоматически доставляться на все подписанные устройства Интернета вещей.  Пользовательские устройства Интернета вещей также могут выступать в роли издателей и публиковать уведомления, информацию от датчиков и т.д. в облаке, которые затем будут переданы пользователю. Контроль системы и уведомления о событиях Pub/Sub позволяет пользователям создавать темы для сбора сведений о системе и отправки их в интерфейсы визуализации и уведомлений.  Такой подход будет крайне полезен при работе с крупномасштабными внедрениями: Сообщения можно группировать по категориям. Все серверы и службы могут публиковать данные в этих общих темах; при этом не нужно создавать отдельные конвейеры уведомлений.  Можно выйти за пределы этой функциональной возможности, подписавшись на функции сопровождения или управления темой. Например, если сервер сообщает об ошибке, то он запускает функцию, которая автоматически заменит этот сервер.  Резервное копирование и репликация базы данных Крайне важно делать резервные копии баз данных, которые распределены по разным технологиям и поставщикам. Можно настроить периодическое резервное копирование или снимки состояний с помощью планировщика задач.  А теперь давайте представим, что нам необходимо переместить эти резервные копии в другие области или облачное хранилище. В таком случае нам нужно воспользоваться шаблоном обмена сообщениями Pub/Sub, чтобы создать конвейер, который будет отправлять сообщение о завершении резервного копирования. Затем подписанная функция будет использовать это сообщение в качестве триггера, чтобы запустить процесс переноса или копирования.  Управление журналами Шаблон Pub/Sub может выступать в роли посредник для агрегации и распространения журналов. Журналы можно собирать из нескольких мест и отправлять в подписанные службы, такие как масштабируемый поиск, или хранить их в разных местах.  Журналы можно фильтровать по вопросам, журналам аудита, уведомлениям, фоновым задачами и т.д. и направлять их подписчикам. Таким образом, можно обеспечить надлежащее управление журналами.  Службы обмена сообщениями Pub/Sub Существует большое количество различных служб обмена сообщениями по шаблону Pub/Sub, от специализированных брокеров сообщений до облачных решений. Далее представлен список некоторых популярных служб Pub/Sub. Apache Kafka. Kafka разработан Apache и имеет надежные функции обмена сообщениями Pub/Sub с помощью журналов регистрации сообщений.  Faye. Это простая служба Pub/Sub, которая предназначена для обеспечения работы веб-приложений с помощью серверов, разработанных для NodeJS и Ruby. Redis. Это один из самых популярных брокеров сообщений, который поддерживает как традиционную очередь сообщений, так и реализацию шаблона Pub/Sub. Amazon SNS. Amazon Simple Notification Service – это полностью управляемая служба, которая использует реализацию обмена сообщениями Pub/Sub. Google Pub/Sub. GPS подходит для реализации службы обмена сообщениями Pub/Sub. Azure Service Bus. Надежная служба обмена сообщениями (MaaS) с возможностью использования шаблона Pub/Sub.  Простой пример: обмен сообщениями Pub/Sub Теперь, когда мы разобрались в концепции Pub/Sub, давайте рассмотрим простой пример, который иллюстрирует рабочий процесс, с помощью Google Pub/Sub. Он опубликует сообщение в теме и вызовет подписанную функцию Google для того, чтобы напечатать отправленное сообщение.  Шаг 1. Создание темы Первый шаг – создать тему в Google Pub/Sub для того, чтобы у нас была возможность публиковать сообщения в этой теме.  Шаг 2. Настройка триггера Необходимо перейти в созданную тему (Test_Topic) и нажать «Trigger Google Function». Таким образом вы сможете создать функцию Google, где в качестве триггера будет выступать созданная тема.  Шаг 3. Создание функции Google (print_message_pubsub_test) На первом экране вы можете дать функции название и настроить тему в качестве триггера. Для создания функции, которая будет просто собирать передаваемые данные и отправлять их на сайт Webhook, мы будем использовать Python. Помимо этого, для создания запроса POST для отправки данных мы будем использовать библиотеку запросов.  Фрагмент кода облачной функции: import base64 import requests def get_quote(event, context): # Decode the Message Data message = base64.b64decode(event['data']).decode('utf-8') # Create Request url = "https://webhook.site/xxxxxxx-xxxx-xxxx-xxxx-739c28ebd7ad" request_headers = {"Content-type": "application/json"} request_data = {"quote": message} response = requests.post(url, data=request_data, headers=request_headers) # Print Response print(response.status_code) print(response.text) После того, как функция будет успешно развернута, вы увидите, что в качестве триггера функции будет указана тема Test_Topic. Шаг 4. Настройка издателя На этом шаге нам нужно создать простую программу на Python, которая будет выступать в роли издателя.  Воспользуемся библиотекой Google Cloud pubsub_v1 для того, чтобы создать клиента Publisher и выбрать случайную вдохновляющую цитату с сайта quotable.io. После чего мы опубликуем объединенную строку (автор и цитата) в тему (Test_Topic). message_publish.py from google.oauth2 import service_account from google.cloud import pubsub_v1 import requests # Create Authentication Credentials project_id = "test-applications-xxxxx" topic_id = "Test_Topic" gcp_credentials = service_account.Credentials.from_service_account_file('test-applications-xxxx-xxxxxxxxxx.json') # Create Publisher Client publisher = pubsub_v1.PublisherClient(credentials=gcp_credentials) topic_path = publisher.topic_path(project_id, topic_id) # Get a Random Quote response = requests.get("https://api.quotable.io/random") json_response = response.json() message = f"{json_response['author']} - {json_response['content']}" # Publish the Message data = message.encode("utf-8") future = publisher.publish(topic_path, data) # Print Result print(f"Published messages to {topic_path} - {future.result()}.") Ну вот и все! Мы успешно настроили конвейер обмена сообщениями. Когда вы запустите скрипт «message_publish», данные опубликуются в Test_Topic, запустится облачная функция Google (print_message_pubsub_test), которая отправит данные на сайт Webhook. Здесь мы можем видеть сообщения, которые были опубликованы в теме. В журналах облачной функции Google будет зафиксировано, что функция была запущена. И наконец, ниже мы можем видеть все сообщения, которые получил сайт Webhook.  Выше мы рассмотрели базовую структуру любого рабочего процесса обмена сообщениями по шаблону Pub/Sub. Можно использовать его как обычный шаблон или расширить его для того, чтобы улучшить какие-то функциональные возможности. Простые коммуникации с широкими возможностями Шаблон обмена сообщениями Pub/Sub – это мощный, но при этом простой метод передачи информации. Он выступает в роли краеугольного камня для обеспечения работы распределенных приложений на основе микрослужб в режиме реального времени. Он управляет всем процессом обмена данными между внутренними и внешними компонентами.  Шаблон Pub/Sub можно использовать для создания асинхронных масштабируемых потоков обработки сообщений с минимальными задержками при доставке. Все это возможно благодаря всем тем преимуществам, в которых он превосходит брокеров сообщений. 
img
FreePBX является модульной платформой и Module Admin позволяет проводить различные манипуляции с модулями – включать, выключать, обновлять и так далее. Так же он служит инструментом для покупки лицензий и их обновлений, но данный модуль не обновляет сам Asterisk. Работа с модулем Для того, чтобы попасть в данный модуль нужно во вкладке Admin выбрать Module Admin Первое что следует сделать – выбрать репозитории. Доступно четыре категории: Standard, Extended, Commercial и Unsupported: Standard - репозиторий, в котором находятся стандартные модули Extended – репозиторий, в котором находятся модули, которые не являются стандартными и реже обновляются Unsupported – в данном разделе находятся авторские модули, которые не поддерживаются командой FreePBX. Commercial – в данном разделе соответственно находятся коммерческие модули, которые можно купить и которые постоянно поддерживаются и обновляются. Если нажать на кнопку Check Online, на экран будут выведены активные модули и будут отображены доступные обновления. Для удобства можно отметить галочку Show only upgradeable Примечание: активные репозитории выделены синим цветом и неактивные – голубым. На примере выше активны стандартные и коммерческие репозитории. Справа так же есть кнопки одновременного получения и обновления всех доступных для этого действия модулей: Download all – при нажатии на эту кнопку будут скачены, но не установлены последние версии всех доступных к обновлению модулей. Кнопка станет тёмно-синей при выборе Upgrade all – при нажатии на эту кнопку будут скачены и установлены последние версии всех доступных к обновлению модулей. Так же, как и кнопка Download all она не запускает процесс обновления, для запуска необходимо нажать на кнопку Process Reset – данная кнопка отменяет выбранные вами действия, причём это касается любой выбранной опции – установки, обновления, удаления и так далее Process – данная кнопка активирует выбранные действия. Можно выбрать сразу несколько действий и все они будут одновременно выполнены Нажимаем на кнопку Process. Всплывёт подтверждение выполняемых действий. Для продолжения нужно нажать Confirm. После появится окно, в котором будет в реальном времени демонстрироваться процесс обновления Похожим образом осуществляются манипуляции с теми модулями, которые нужно обновитьудалить отдельно от остальных. Нужно выбрать модуль в общем списке и выбрать действие, а затем нажать кнопку Process. Примечание: Некоторые модули имеют две ветки релизов – Stable и Beta. Можно устанавливать модуль из нужной вам ветки. Так же модуль можно выключить, без де-инсталляции – для этого нужно выбрать кнопку Disable как на скриншоте выше. Но не менее важным функционалом является возможность установки сторонних (Third-Party) модулей. Однако нужно понимать, что в случае установки вредоносного модуля, FreePBX интерфейс может стать абсолютно неработоспособным. Для установки нужно нажать на кнопку Upload Modules. Появится окно выбора метода загрузки – через сеть или с локального жёсткого диска Соответственно для загрузки с диска вам необходимо выбрать файл, а при загрузке через сеть – указать ссылку. Выбрать способ загрузки можно в выпадающем меню. После загрузки модуля вы увидите сообщение Module uploaded successfully. You need to enable the module using local module administration to make it available После этого необходимо выбрать загруженный модуль в общем списке и сделать его активным – нажать на кнопку Enable. Примечание: В случае если модуль не является официальным и у вас по умолчанию включена проверка подписей модулей – вверху страницы всё время будет гореть соответствующее предупреждение.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59