Patrole是一个用于验证在OpenStack部署中执行基于角色的访问控制的工具。
项目描述
Patrole是一组针对运行中的OpenStack集群运行的集成测试。它有一系列专门用于验证云的RBAC实现正确性和完整性的测试。
更重要的是,Patrole是一个安全验证工具,用于验证基于角色的访问控制是否正确配置并强制执行在OpenStack云中。它使用指定的RBAC角色运行基于Tempest的API测试,从而允许部署验证只有预期的角色才能访问这些API。
Patrole目前正在经历重大开发。随着更多项目转向代码中的策略,Patrole将使测试与适当的文档保持一致。
自由软件:Apache许可证
错误:https://storyboard.openstack.org/#!/project/openstack/patrole
设计原则
作为Tempest插件,Patrole借鉴了一些Tempest设计原则,但并非全部,因为其测试范围仅限于策略。
稳定性。Patrole使用OpenStack公共接口。Patrole中的测试应该仅涉及公共OpenStack API。
原子性。Patrole测试应该是原子的:它们应该独立测试策略。与Tempest不同,Patrole测试努力一次只调用一个端点。这是因为验证每个策略是否被正确授权非常重要,而最好的方法就是单独验证每个策略,以避免测试污染。
完全覆盖。Patrole应该验证代码中默认的所有策略。对于测试,Patrole使用适用于每个项目的策略在代码文档中包含的API到策略映射。
例如,Nova的策略在代码文档位于Nova存储库下的nova/policies。同样,Keystone的策略在代码文档位于Keystone存储库下的keystone/common/policies。其他OpenStack服务在策略在代码方面的目录布局模式上遵循相同的模式。
可定制。Patrole应该能够验证自定义策略覆盖,以确保这些覆盖增强了而不是削弱了云的RBAC配置。此外,Patrole应该能够验证任何角色。
自我清理。Patrole应该尝试自我清理;在可能的情况下,我们应该在完成后拆毁资源。
自我测试。Patrole应该是自我测试的。
功能
位于策略.json文件中的默认策略定义的验证。
代码中策略定义的验证。
覆盖默认策略定义的自定义策略文件定义的验证。
内置的正向和反向测试。正向和反向测试使用相同的测试和角色切换执行。
自定义角色以及默认OpenStack角色的验证。
工作原理
Patrole利用oslo.policy(OpenStack的策略执行引擎)来确定给定角色是否被允许执行策略操作,给定特定的角色和OpenStack服务。将oslo.policy的输出(预期结果)与测试执行的实际情况进行比较:如果两者匹配,则测试通过;否则失败。
术语
预期结果 - 给定测试的预期结果。
实际结果 - 给定测试的实际结果。
最终结果 - 预期和实际结果之间的匹配。预期结果和实际结果不匹配将导致测试失败。
预期:通过 | 实际:通过 - 测试用例成功
预期:通过 | 实际:失败 - 测试用例权限不足失败
预期:失败 | 实际:通过 - 测试用例权限过度失败
预期:失败 | 实际:失败(预期异常) - 测试用例成功
预期:失败 | 实际:失败(意外异常) - 测试用例失败
快速入门
要运行Patrole,您必须首先安装并正确配置Tempest。请参考Tempest_quickstart指南以完成此操作。遵循其中概述的所有步骤。之后,继续执行以下步骤。
首先,您需要安装Patrole。在检出Patrole存储库后,使用pip执行此操作。
$ git clone https://opendev.org/openstack/patrole $ pip install patrole/
这可以在venv环境中完成。
接下来,您必须正确配置Patrole,这相对简单。有关配置Patrole的详细信息,请参阅Patrole配置。
配置完成后,现在您就可以运行Patrole了。可以使用tempest_run命令运行。可以通过以下方式运行:
$ tempest run --regex '^patrole_tempest_plugin\.tests\.api'
还可以直接使用testr或任何基于testr的测试运行器,如ostestr。例如,从工作空间目录运行
$ stestr --regex '(?!.*\[.*\bslow\b.*\])(^patrole_tempest_plugin\.tests\.api))'
将运行与默认门控作业相同的测试集。
您还可以使用tox运行Patrole测试,但由于Patrole需要访问全局包,请使用--sitepackages参数。要这样做,请cd到Tempest目录并运行
$ tox -eall --sitepackages -- patrole_tempest_plugin.tests.api
测试的日志信息被捕获在Tempest存储库下的tempest.log中。一些Patrole调试信息被捕获在有关预期测试结果和角色覆盖的相关日志中。
更详细的RBAC测试日志输出被发送到Patrole存储库下的patrole.log。要配置Patrole的日志记录,请参阅Patrole配置指南。
RBAC测试
要更改patrole测试运行的角色的角色,请编辑tempest.conf中patrole部分下的rbac_test_roles。
[patrole] rbac_test_roles = member,reader ...
有关RBAC的更多信息,请参阅rbac-overview文档页面。
有关Patrole为哪些项目提供RBAC测试的信息,请参阅HACKING文档页面。
单元测试
Patrole还有一组单元测试,用于测试Patrole代码本身。可以通过指定测试发现路径来运行这些测试
$ stestr --test-path ./patrole_tempest_plugin/tests/unit run
通过将--test-path选项设置为./patrole_tempest_plugin/tests/unit,它指定测试发现应仅运行在单元测试目录中。
或者,有py27和py35的tox作业,将使用相应的Python版本运行单元测试。
一个常见的活动是只运行单个测试;您可以通过指定仅针对单个测试运行py27或py35测试来使用tox完成此操作
$ tox -e py27 -- -n patrole_tempest_plugin.tests.unit.test_rbac_utils.RBACUtilsTest.test_override_role_with_missing_admin_role
或者运行test_rbac_utils.py文件中的所有测试
$ tox -e py27 -- -n patrole_tempest_plugin.tests.unit.test_rbac_utils
您还可以使用正则表达式运行任何匹配的测试
$ tox -e py27 -- test_rbac_utils
有关这些选项和关于stestr的详细信息,请参阅stestr文档。
版本控制
Patrole发行说明显示了每个版本已发布的更改。
Patrole的版本控制遵循Tempest的约定。与Tempest一样,Patrole没有分支,而是使用版本控制。
故事板
错误和增强功能通过Patrole的Storyboard页面进行跟踪。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
patrole-0.16.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7fc75fe595d7d47e4887659e4ed5da5ee58cac93194de9aec5f01ee01866df8a |
|
MD5 | 8ab05d4ef51ec393b7842458258047c5 |
|
BLAKE2b-256 | 8575fbaf52a9f13099d05f7926a4c98ac207bda36f887149cbe2a9ca84db4e76 |
patrole-0.16.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8531f929755f539e28224828bef6a07a18c94c11afe3ebeb2a871440a04fa207 |
|
MD5 | 417813c033ba5a52b63d30dfb0d4a6b7 |
|
BLAKE2b-256 | d24879919a4017cb79c9ac6dc0199c6a7022d692a9bcefcd6726a688bc67eb69 |