ORAN SC: OSC Non-RealTime RIC (NONRTRIC)

遵循以下最佳实践的项目将能够自愿的自我认证,并显示他们已经实现了核心基础设施计划(OpenSSF)徽章。

如果这是您的项目,请在您的项目页面上显示您的徽章状态!徽章状态如下所示: 项目4611的徽章级别为passing 这里是如何嵌入它:

这些是白银级别条款。您还可以查看通过黄金级别条款。

        

 基本 8/17

  • 识别

    The Non-RealTime RIC (RAN Intelligent Controller) is an Orchestration and Automation function described by the O-RAN Alliance for non-real-time intelligent management of RAN (Radio Access Network) functions. The primary goal of the NONRTRIC is to support non-real-time radio resource management, higher layer procedure optimization, policy optimization in RAN, and providing guidance, parameters, policies and AI/ML models to support the operation of near-RealTime RIC functions in the RAN to achieve higher-level non-real-time objectives. NONRTRIC functions include service and policy management, RAN analytics and model-training for the near-RealTime RICs. The non-RealTime RIC project provides concepts, architecture and reference implementations as defined and described by the O-RAN Alliance architecture.

  • 先决条件


    项目必须拥有通过徽章。 [achieve_passing]

  • 基本项目网站内容


    关于如何贡献的信息必须包括对可接受的贡献的要求(例如,引用任何所需的编码标准)。 (需要网址) [contribution_requirements]
  • 项目监督


    该项目应该有一个合法机制,所有对项目软件做出显著贡献的开发人员都声明他们有合法授权作出这些贡献。最常用且易于实施的方法是使用开发者原产地证书(DCO),用户可以在其提交中添加“signed-off-by”,另外,项目链接到DCO网站。本条款也可以使用贡献者许可协议(CLA)或其他法律机制实现。 (需要网址) [dco]

    Gerrit rejects commits that are not signed off. Gerrit commits are rejected unless user has agreed to the CLA https://wiki.o-ran-sc.org/display/ORAN/CLA



    该项目必须明确定义和记录其项目治理模式(决策方式,包括关键角色)。 (需要网址) [governance]


    该项目必须采取行为守则,并将其发布在标准的位置。 (需要网址) [code_of_conduct]


    该项目必须明确定义和公开记录项目中的关键角色及其职责,包括这些角色必须执行的任务。必须清楚指出谁是什么角色,尽管这可能没有以相同的方式记录下来。 (需要网址) [roles_responsibilities]

    PTL and Commiters are identified on https://wiki.o-ran-sc.org/display/RICNR and in "info.yaml" files at the root of each repository.



    如果任何一个开发者丧失工作能力或丧生,该项目必须能够继续保持最小的中断。特别是,在确认个人无行为能力或死亡的一周内,项目必须能够创建和关闭问题,接受提议的更改和发布软件版本。这可以通过确保其他人有任何必要的密钥,密码和合法权利来继续该项目。运行FLOSS项目的个人可以通过在锁箱中提供密钥,并提供任何所需的合法权利(例如DNS名称)来实现。 (需要网址) [access_continuity]


    项目必须具有2个或更多的“公交车因子”。 (需要网址) [bus_factor]

  • 文档


    该项目必须有一个文档化的路线图,描述项目打算做什么,至少在下一年做什么。 (需要网址) [documentation_roadmap]


    该项目必须包括项目生成的软件的架构(也称为高级别设计)的文档。如果项目不产生软件,请选择“不适用”(N/A)。 (需要网址) [documentation_architecture]

    该项目必须书面记录用户从项目生成的软件的安全性上可以获得和不能指望的内容(其“安全需求”)。 (需要网址) [documentation_security]


    该项目必须为新用户提供“快速启动”指南,以帮助他们快速使用该软件。 (需要网址) [documentation_quick_start]

    项目必须努力使文档与当前版本的项目结果(包括项目生成的软件)保持一致。任何已知的文档缺陷使其不一致必须修正。如果文档基本是最新的,但是错误地包括一些不再是真实的旧信息,那么将其视为缺陷,然后像往常一样进行跟踪和修复。 [documentation_current]

    All defects - including documentation - can be provided to the project team - and will be fixed as high priority https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=20877888



    项目存储代码库首页和/或网站必须在获得成就的48小时内标识并超链接任何成就,包括此最佳实践徽章。 (需要网址) [documentation_achievements]

    A "News" section is provided on the project wiki page: https://wiki.o-ran-sc.org/display/RICNR


  • 无障碍和国际化


    该项目(项目网站和项目成果)都应遵循无障碍最佳做法,使残疾人仍然可以参与项目,并在合理的情况下使用项目成果。 [accessibility_best_practices]


    该项目产生的软件应该被国际化,以便为目标受众的文化,地区或语言进行简单的本地化。如果国际化(i18n)不适用(例如,该软件不会生成针对最终用户的文本,并且不排序可读文本),请选择“不适用”(N/A)。 [internationalization]

  • 其他


    如果项目站点(网站,存储库和下载URL)存储用于外部用户认证的密码,则必须使用密钥拉伸(迭代)算法将密码存储为具有每用户盐值的迭代散列(例如,PBKDF2,Bcrypt或Scrypt)。如果项目站点不存储密码,请选择“不适用”(N/A)。 [sites_password_security]

  • 之前的版本


    该项目必须维护最常用的旧版本的产品提供较新版本的升级路径。如果升级路径很困难,项目必须记录如何执行升级(例如,给出更改的接口描述和详细的建议步骤以帮助升级)。 [maintenance_or_update]

    Gerrit maintains a branch and tag for each release Individual documentation for each release is provided. Developer guides are provided on the wiki for each release.


  • 错误报告流程


    项目必须使用问题跟踪器来跟踪每个问题。 [report_tracker]
  • 漏洞报告流程


    除了要求匿名的报告者外,该项目必须对过去12个月内解决的所有漏洞报告的报告者表示感谢。如果过去12个月没有修复漏洞,请选择“不适用”(N/A)。 (需要网址) [vulnerability_report_credit]


    该项目必须有一个书面的流程来响应漏洞报告。 (需要网址) [vulnerability_response_process]

  • 编码标准


    该项目必须确定其使用的主要语言的具体编码风格指南,并要求贡献一般情况下符合此要求。 (需要网址) [coding_standards]

    如果至少有一个FLOSS工具可以应用于所选择的语言,项目必须自动执行其选定的编码风格。 [coding_standards_enforced]

  • 可工作的构建系统


    本地二进制文件的构建系统必须遵守传递给它们的相关编译器和链接器(环境)变量(例如CC,CFLAGS,CXX,CXXFLAGS和LDFLAGS),并将它们传递给编译器和链接器。构建系统可以使用附加标志来扩展它们,但不能简单地用自己的替换提供的值。如果没有生成本地二进制文件,请选择“不适用”(N/A)。 [build_standard_variables]

    Handled by Maven



    构建和安装系统在在相关标志中要求时,应该保留调试信息(例如,“install -s”未被使用)。如果没有构建或安装系统(例如典型的JavaScript库),请选择“不适用”(N/A)。 [build_preserve_debug]


    如果子目录中存在交叉依赖关系,则由项目生成的软件的构建系统必须不能递归地构建子目录。如果没有构建或安装系统(例如典型的JavaScript库),请选择“不适用”(N/A)。 [build_non_recursive]

    Handled by Maven



    该项目必须能够重复从源代码文件生成的过程,并获得完全相同的比特位结果。如果没有发生构建(例如,直接使用源代码而不是编译使用的脚本语言),请选择“不适用”(N/A)。 [build_repeatable]

  • 安装系统


    该项目必须提供一种使用常用惯例轻松安装和卸载由项目生成的软件的方法。 [installation_common]

    最终用户的安装系统必须遵守用于在安装时选择构建工件写入位置的标准约定。例如,如果在POSIX系统上安装文件,它必须遵守DESTDIR环境变量。如果没有安装系统或没有标准惯例,请选择“不适用”(N/A)。 [installation_standard_variables]

    Handled by maven install, docker, and helm.



    该项目必须为潜在开发人员提供一种快速安装所有项目成果和支持环境所必需的环境,包括测试套件和测试环境。必须通过常规惯例执行。 [installation_development_quick]

    A "Build&Run" page for each release is provided: e.g. https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=12157768 https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=20873402 https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=20878049

    A full test suite is also provided to demonstrate functionality, and test new functions.


  • 外部维护的组件


    项目必须以计算机可处理的方式列出外部依赖关系。 (需要网址) [external_dependencies]

    Listed in Maven POM files in each project Binary dependencies are visible in docker compose files in repositories, sample helm charts in repositories, and sample helm charts on wiki.

    警告:需要URL,但找不到URL。



    项目必须监视或定期检查其外部依赖(包括便利副本)以检测已知的漏洞,并修复可利用的漏洞或将其验证为不可利用的漏洞。 [dependency_monitoring]

    Performed as part of vulnerability scans.



    该项目必须满足下述情况之一:
    1. 可以轻松识别和更新重用的外部维护组件;
    2. 使用系统或编程语言提供的标准组件。
    这样,如果在重用的组件中发现了一个漏洞,将容易更新该组件。 [updateable_reused_components]


    该项目应避免使用已弃用或过时的功能和API,如果FLOSS替代品在其使用的技术集合(“技术堆栈”)中以及项目支持的大多数用户中可用(以便用户可以随时访问该替代品)。 [interfaces_current]

  • 自动测试套件


    必须将自动测试套件应用于至少一个分支的共享代码库的每次签入。该测试套件必须生成关于测试成功或失败的报告。 [automated_integration_testing]

    Tests are automatically executed by Jenkins at every commit, merge and release.



    该项目必须为过去六个月内修复的至少50%的错误,在自动化测试套件中添加回归测试。 [regression_tests_added50]

    Test suite performs regression tests and interoperability test for current & previous verions



    如果有至少一个FLOSS工具可以以所选语言度量此条款,该项目的FLOSS自动测试套件必须具有至少80%语句覆盖率。 [test_statement_coverage80]

    Test coverage is verified by Sonar. Additional opensource test suite provided as part of project.


  • 新功能测试


    该项目必须具有正式的书面策略,一旦添加了主要的新功能,新功能的测试必须被添加到自动测试套件中。 [test_policy_mandated]

    All contributions - including major functional changes must be accompanied by tests. https://wiki.o-ran-sc.org/display/RICNR/Code+Style



    该项目必须在其关于变更建议的书面指导中包括要为主要新功能添加测试的策略。 [tests_documented_added]

    Only informal rule exists, tests are continuously added in practice All contributions should include tests, as described at NONRTRIC: Code Style: https://wiki.o-ran-sc.org/display/RICNR/Code+Style


  • 警告标志


    在实际允许时,项目必须最大限度地严格修复项目生成的软件中的警告。 [warnings_strict]

    Taken on a case by case basis.

    All Checkstyle, Findbugs, test failures, notified issues/bugs and Sonar warnings are acted on promptly.

    Such issues are tracked using Jira and Gerrit (See above).


  • 安全开发知识


    该项目必须实施安全设计原则(来自“know_secure_design”)(如适用)。如果项目不生产软件,请选择“不适用”(N/A)。 [implement_secure_design]

  • 使用基础的良好加密实践

    请注意,某些软件不需要使用加密机制。

    由项目产生的软件中的默认安全机制不得取决于具有已知严重弱点(例如,SHA-1密码散列算法或SSH中的CBC模式)的加密算法或模式。 [crypto_weaknesses]

    Does not depend on any any particular cryptographic algorithm. A cert may be signed using SHA-1, but it is up to the cert issuer.

    It is the responsibility of the production user to ensure their keys are compliant.

    Sample certs are signed.



    该项目应该支持多种加密算法,如果一个被破解,用户可以快速切换。普通的对称密钥算法包括AES,Twofish和Serpent。通用密码散列算法的选择包括SHA-2(包括SHA-224,SHA-256,SHA-384和SHA-512)和SHA-3。 [crypto_algorithm_agility]

    Commonly used existing opensource cryptographic libraries are used Libraries support a variety of cryptographic algorithms - negotiated automatically depending on cert/key type used. Standard/best-practice TLS/HTTPS implementations are used. Java, Jetty, Netty, Springboot.



    该项目必须支持在与其他信息(如配置文件,数据库和日志)分离的文件中存储身份验证凭据(如密码和动态令牌)以及私有加密密钥,并允许用户更新和替换它们,而无需重新编译代码。如果项目从不处理身份验证凭据和私有加密密钥,请选择“不适用”(N/A)。 [crypto_credential_agility]


    该项目产生的软件应该支持所有网络通信的安全协议,如SSHv2或更高版本,TLS1.2或更高版本(HTTPS),IPsec,SFTP和SNMPv3。默认情况下,FTP,HTTP,Telnet,SSLv3或更早版本和SSHv1等不安全协议将被禁用,只有在用户专门配置时才启用。如果项目生成的软件不支持网络通信,请选择“不适用”(N/A)。 [crypto_used_network]


    项目生成的软件(如果支持或使用TLS)应该至少支持TLS版本1.2。请注意,TLS的前身称为SSL。如果软件不使用TLS,请选择“不适用”(N/A)。 [crypto_tls12]

    All TLS connections support version 1.2 and 1.3. However TLS version used depends on runtime environment - client & server negotiate which version to use at conenction setup time. Standard/best-practice TLS/HTTPS implementations are used. Java, Jetty, Netty, Springboot.



    由项目生成的软件必须,如果它支持TLS,则在使用TLS(包括子资源)时默认执行TLS证书验证。如果软件不使用TLS,请选择“不适用”(N / A)。 [crypto_certificate_verification]

    Where TLS is used, certs/keys must be configured.



    项目生成的软件(如果支持TLS)必须在发送具有私有信息(如安全Cookie)的HTTP头之前执行证书验证。如果软件不使用TLS,请选择“不适用”(N/A)。 [crypto_verification_private]

    Standard/best-practice TLS/HTTPS implementations are used. Java, Jetty, Netty, Springboot.


  • 安全发布


    该项目必须加密签名旨在广泛使用的项目结果的发布,并且必须有一个书面流程,向用户解释如何获取公共签名密钥并验证签名。这些签名的私钥不得在项目网站上直接向公众发布。如果发行版本不适用于广泛使用,请选择“不适用”(N/A)。 [signed_releases]


    建议在版本控制系统中,每个重要版本标签(作为主要版本的一部分的标签,次要版本或修复公开提到的漏洞)都按照signed_releases中的要求进行加密签名,并可验证。 [version_tags_signed]

  • 其他安全问题


    项目结果必须检查来自潜在不受信任来源的所有输入,以确保它们有效( *白名单*),如果对数据有限制,则拒绝无效输入。 [input_validation]


    加固机制应该用于项目生产的软件,以便软件缺陷不太可能导致安全漏洞。 [hardening]


    该项目必须提供一个保证案例,证明其满足安全要求。保证案例必须包括:对威胁模型的描述,明确确定信任边界,确定设计原则得到适用,以及常见安全弱点已经被消减。 (需要网址) [assurance_case]

  • 静态代码分析


    如果至少有一个FLOSS工具能够以所选择的语言实现此条款,则该项目必须至少使用一个具有规则或方式的静态分析工具来查找分析语言或环境中的常见漏洞。 [static_analysis_common_vulnerabilities]

    Sonar is used in development environment and automatically triggered by Jenkins during CI/CD process

    Jenkins:
        https://jenkins.o-ran-sc.org/view/nonrtric/job/nonrtric-sonar/
        https://jenkins.o-ran-sc.org/view/portal-nonrtric-controlpanel/job/portal-nonrtric-controlpanel-sonar/
        https://jenkins.o-ran-sc.org/view/sim-a1-interface/job/sim-a1-interface-tox-sonarqube/
    

    Findbugs and Checkstyle is used in development environments NexusIQ (from Sonatype) is also used - focuses on license scan and performs a CVE scan based on versions used. A per-release license scan based is performed for LF Legal - uses a LF-internal scanning.


  • 动态代码分析


    如果由项目生成的软件包含使用内存不安全语言编写的软件(例如,C或C ++),项目必须至少使用一个动态工具(例如,fuzzer或web应用扫描程序)与一种检测缓冲区覆写等内存安全问题的机制组合例行使用。如果项目不生成以内存不安全语言编写的软件,请选择“不适用”(N/A)。 [dynamic_analysis_unsafe]

    Java, Python is used.



此数据在知识共享署名3.0或更高版本许可证(CC-BY-3.0 +) 下可用。所有内容都可以自由分享和演绎,但必须给予适当的署名。请署名为Trishan de Lanerolle和OpenSSF最佳实践徽章贡献者。

项目徽章条目拥有者: Trishan de Lanerolle.
最后更新于 2021-01-24 14:40:16 UTC, 最后更新于 2021-03-24 15:55:26 UTC。 最后在 2021-03-24 15:18:32 UTC 获得通过徽章。

后退