KasperskyOS Community Edition 1.3
Примеры тестов политик безопасности решений на базе KasperskyOS
Примеры тестов политик безопасности решений на базе KasperskyOS
В составе KasperskyOS Community Edition поставляется пример pal_tests, который демонстрирует использование PAL (Policy Assertion Language) при написании тестов политики безопасности решения. Подробнее см. "Пример pal_tests".
Пример 1
/* Набор тестов, который включает один тест. */
assert "some tests" {
/* Тест, который включает шесть тестовых примеров. */
sequence "first sequence" {
/* Ожидается, что запуск ядра KasperskyOS разрешен.
* Если это так, переменной core будет присвоено значение SID
* запущенного процесса ядра. */
core <- execute dst=kl.core.Core
/* Ожидается, что ядру KasperskyOS разрешено запустить процесс класса Einit.
* Если это так, переменной einit будет присвоено значение SID
* запущенного процесса класса Einit. */
einit <- execute src=core dst=Einit
/* Ожидается, что процессу класса Einit разрешено запустить процесса класса pal_tests.WebServer.
* Если это так, переменной ws будет присвоено значение SID
* запущенного процесса класса pal_tests.WebServer. */
ws <- execute src=einit dst=pal_tests.WebServer
/* Ожидается, что процессу класса Einit разрешено запустить процесса класса pal_tests.UserManager.
* Если это так, переменной usrmngr будет присвоено значение SID
* запущенного процесса класса pal_tests.UserManager. */
usrmngr <- execute src=einit dst=pal_tests.UserManager
/* Ожидается, что клиенту класса pal_tests.WebServer запрещено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод Login службы auth
* если параметр userName содержит пустую сроку (значение по умолчанию для
* не указанного параметра строкового типа). */
deny "Web server calls Login without user name" request src=ws dst=usrmngr endpoint=auth method=Login { }
/* Ожидается, что клиенту класса pal_tests.WebServer разрешено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод Login службы auth
* если параметр userName задан. */
grant "Web server calls Login with user name" request src=ws dst=usrmngr endpoint=auth method=Login { userName : "Somebody" }
}
}
Пример 2
/* Набор тестов, который включает два теста. */
assert "login tests"{
/* Начальная часть каждого из двух тестов,
* которая включает четыре тестовых примера. */
setup {
/* Ожидается, что запуск ядра KasperskyOS разрешен.
* Если это так, переменной core будет присвоено значение SID
* запущенного процесса ядра. */
core <- execute dst=kl.core.Core
/* Ожидается, что ядру KasperskyOS разрешено запустить процесс класса Einit.
* Если это так, переменной einit будет присвоено значение SID
* запущенного процесса класса Einit. */
einit <- execute src=core dst=Einit
/* Ожидается, что процессу класса Einit разрешено запустить процесса класса pal_tests.WebServer.
* Если это так, переменной ws будет присвоено значение SID
* запущенного процесса класса pal_tests.WebServer. */
ws <- execute src=einit dst=pal_tests.WebServer
/* Ожидается, что процессу класса Einit разрешено запустить процесса класса pal_tests.UserManager.
* Если это так, переменной usrmngr будет присвоено значение SID
* запущенного процесса класса pal_tests.UserManager. */
usrmngr <- execute src=einit dst=pal_tests.UserManager
}
/* Тест, который включает семь тестовых примеров: четыре тестовых примера
* в начальной части и три тестовых примера в основной части.*/
sequence "login after login is denied" {
/* Ожидается, что клиенту класса pal_tests.WebServer разрешено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод Login службы auth
* если параметр userName задан. */
ws ~> usrmngr : auth.Login { userName: "Somebody" }
/* Ожидается, что серверу класса pal_tests.UserManager разрешено отвечать
* клиенту класса pal_tests.WebServer, если клиент вызывает метод Login службы auth
* и этот вызов разрешен. В качестве значения выходного параметра role
* устанавливается "user", что в данном случае означает успешную авторизацию
* пользователя с правами обычного пользователя. */
ws <~ usrmngr : auth.Login { role : "user" }
/* Ожидается, что клиенту класса pal_tests.WebServer запрещено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод Login службы auth
* если ранее была выполнена успешная авторизация. */
deny ws ~> usrmngr : auth.Login { userName: "SomebodyElse" }
}
/* Тест, который включает семь тестовых примеров: четыре тестовых примера
* в начальной части и три тестовых примера в основной части.*/
sequence "logout after login is granted" {
/* Ожидается, что клиенту класса pal_tests.WebServer разрешено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод Login службы auth
* если параметр userName задан. */
ws ~> usrmngr : auth.Login { userName: "Somebody" }
/* Ожидается, что серверу класса pal_tests.UserManager разрешено отвечать
* клиенту класса pal_tests.WebServer, если клиент вызывает метод Login службы auth
* и этот вызов разрешен. В качестве значения выходного параметра role
* устанавливается "user", что в данном случае означает успешную авторизацию
* пользователя с правами обычного пользователя. */
ws <~ usrmngr : auth.Login { role : "user" }
/* Ожидается, что клиенту класса pal_tests.WebServer разрешено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод Logout службы auth
* если ранее была выполнена успешная авторизация. */
ws ~> usrmngr : auth.Logout {}
}
}
Пример 3
/* Набор тестов, который включает один тест. */
assert {
/* Тест, который включает десять тестовых примеров. */
sequence {
/* Ожидается, что запуск ядра KasperskyOS разрешен.
* Если это так, переменной core будет присвоено значение SID
* запущенного процесса ядра. */
core <- execute dst=kl.core.Core
/* Ожидается, что ядру KasperskyOS разрешено запустить процесс класса Einit.
* Если это так, переменной einit будет присвоено значение SID
* запущенного процесса класса Einit. */
einit <- execute src=core dst=Einit
/* Ожидается, что процессу класса Einit разрешено запустить процесса класса pal_tests.WebServer.
* Если это так, переменной ws будет присвоено значение SID
* запущенного процесса класса pal_tests.WebServer. */
ws <- execute src=einit dst=pal_tests.WebServer
/* Ожидается, что процессу класса Einit разрешено запустить процесса класса pal_tests.UserManager.
* Если это так, переменной usrmngr будет присвоено значение SID
* запущенного процесса класса pal_tests.UserManager. */
usrmngr <- execute src=einit dst=pal_tests.UserManager
/* Ожидается, что процессу класса Einit разрешено запустить процесса класса pal_tests.Service.
* Если это так, переменной srvc будет присвоено значение SID
* запущенного процесса класса pal_tests.Service. */
srvc <- execute src = einit dst = pal_tests.Service
/* Ожидается, что клиенту класса pal_tests.WebServer запрещено обращаться к
* серверу класса pal_tests.Service, вызывая метод ProcessRequest службы handler
* если ранее не была выполнена успешная авторизация. */
deny ws ~> srvc : handler.ProcessRequest { }
/* Ожидается, что клиенту класса pal_tests.WebServer разрешено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод Login службы auth
* если параметр userName задан. */
grant request src=ws dst=usrmngr endpoint=auth method=Login { userName : "Somebody" }
/* Ожидается, что серверу класса pal_tests.UserManager разрешено отвечать
* клиенту класса pal_tests.WebServer, если клиент вызывает метод Login службы auth
* и этот вызов разрешен. В качестве значения выходного параметра role
* устанавливается "user", что в данном случае означает успешную авторизацию
* пользователя с правами обычного пользователя. */
grant ws <~ usrmngr : auth.Login { role : "user" }
/* Ожидается, что клиенту класса pal_tests.WebServer разрешено обращаться к
* серверу класса pal_tests.Service, вызывая метод ProcessRequest службы handler
* если ранее была выполнена успешная авторизация. */
grant ws ~> srvc : handler.ProcessRequest { }
/* Ожидается, что клиенту класса pal_tests.WebServer запрещено обращаться к
* серверу класса pal_tests.UserManager, вызывая метод AddUser службы user
* если пользователь не был авторизован с правами администратора. */
deny request src=ws dst=usrmngr endpoint=user method=AddUser { userName : "Anonymous" }
}
}
Идентификатор статьи: ssp_descr_psl_syntax_testing_examples, Последнее изменение: 27 янв. 2025 г.