Для модуля DBMS_PIPE установлены три различных уровня безопасности. Первым уровнем является привилегия EXECUTE на сам модуль. По умолчанию при создании модуля эта привилегия не предоставляется всем пользователям. Поэтому обращаться к модулю DBMS_PIPE смогут только те пользователи, которые имеют системную привилегию EXECUTE ANY PROCEDURE. Для того чтобы разрешить доступ к модулю DBMS_PIPE другим пользователям базы данных, нужно воспользоваться оператором GRANT и предоставить им привилегии EXECUTE на этот модуль.
Для обеспечения первого уровня безопасности информации привилегию EXECUTE на DBMS_PIPE можно предоставить только определенным пользователям базы данных. После этого можно создать свой собственный модуль для управления доступом к базовым каналам. Затем привилегию EXECUTE на этот модуль можно предоставить и другим пользователям. Второй уровень безопасности – имя программного канала. Если пользователи не знают этого имени, они не смогут посылать и принимать сообщения по данному каналу. Имя программного канала можно выбрать случайным образом или создать имя, уникальное для двух сеансов, взаимодействующих при помощи канала. Последний способ реализуется с помощью функции UNIQUE_SESSION_NAME и описан ниже.
Самым надежным уровнем безопасности является использование частных каналов. Частный канал доступен только пользователю, создавшему его, и пользователям, присоединившимся как SYSDBA или INTERNAL, поэтому доступ к каналу существенно ограничен. Даже если какой-либо пользователь имеет привилегию EXECUTE на модуль DBMS_PIPE и знает имя программного канала, при попытке доступа он получит сообщение об ошибке ORACLE: “ОRА-23322: insufficient privilege to access pipe” (привилегии, недостаточные для доступа к каналу). Данная ошибка возникает только при создании или удалении канала либо при попытке послать или получить сообщение. Другие вызовы в DBMS_PIPE не обращаются непосредственно к программным каналам.
Лучшим способом использования частных каналов является создание хранимых процедур или модулей, которые, в свою очередь, вызывают модуль DBMS_PIPE. Поскольку хранимые подпрограммы выполняются на основании набора привилегий своего владельца, к частным каналам можно обращаться и из хранимых подпрограмм.
Программные каналы используются так же, как и другие низкоуровневые пакеты связи, например TCP/IP. Пользователь имеет возможность самостоятельно определить способы форматирования данных и их пересылки. Кроме того, пользователь может решить, кто должен получить сообщение. Поэтому сеансы отправители дабы воспользоваться гибкостью межсеансовых каналов должны следовать определенным рекомендациям по организации обмена информацией с сеансами-получателями. Прежде всего, между сеансами должны быть строго согласованы правила форматирования сообщений.