|
1 | 1 |
|
2 |
| -## OASIS TC Open Repository: openc2-yuuki |
| 2 | +<a href="https://openc2.org/" target="_blank"></a> |
| 3 | + |
| 4 | +[](https://www.python.org/downloads/release/python-3100/) |
| 5 | +[](https://openc2.org/specifications) |
3 | 6 |
|
4 |
| -This GitHub public repository ( [https://github.com/oasis-open/openc2-yuuki](https://github.com/oasis-open/openc2-yuuki) ) was created at the request of the [OASIS Open Command and Control (OpenC2) TC](https://www.oasis-open.org/committees/openc2/) as an [OASIS TC Open Repository](https://www.oasis-open.org/resources/open-repositories/) to support development of open source resources related to Technical Committee work. |
5 |
| -While this TC Open Repository remains associated with the sponsor TC, its development priorities, leadership, intellectual property terms, participation rules, and other matters of governance are [separate and distinct](https://github.com/oasis-open/openc2-yuuki/blob/master/CONTRIBUTING.md#governance-distinct-from-oasis-tc-process) from the OASIS TC Process and related policies. |
6 |
| -All contributions made to this TC Open Repository are subject to open source license terms expressed in the [BSD-3-Clause License](https://www.oasis-open.org/sites/www.oasis-open.org/files/BSD-3-Clause.txt). That license was selected as the declared ["Applicable License"](https://www.oasis-open.org/resources/open-repositories/licenses) when the TC Open Repository was created. |
7 |
| -As documented in ["Public Participation Invited"](https://github.com/oasis-open/openc2-yuuki/blob/master/CONTRIBUTING.md#public-participation-invited), contributions to this OASIS TC Open Repository are invited from all parties, whether affiliated with OASIS or not. Participants must have a GitHub account, but no fees or OASIS membership obligations are required. Participation is expected to be consistent with the [OASIS TC Open Repository Guidelines and Procedures](https://www.oasis-open.org/policies-guidelines/open-repositories), the open source [LICENSE](https://github.com/oasis-open/openc2-yuuki/blob/master/LICENSE) designated for this particular repository, and the requirement for an [Individual Contributor License Agreement](https://www.oasis-open.org/resources/open-repositories/cla/individual-cla) that governs intellectual property. |
8 |
| - |
9 |
| -[<img src="snow_yuuki.jpg" alt="Yuuki" title="Yuuki Image" width="224" height="104"/>](snow_yuuki.jpg) |
10 |
| - |
11 | 7 | ## Table of Contents
|
12 | 8 |
|
13 |
| -[Introduction](#introduction) |
14 |
| -[Requirements and Setup](#requirements-and-setup) |
15 |
| -[Yuuki's Consumer Components](#components-of-a-yuuki-consumer) |
16 |
| - * [Consumers](#consumers) |
17 |
| - * [Actuators](#actuators) |
18 |
| - * [Serializations](#serializations) |
19 |
| -[Example Consumers](#examples) |
20 |
| -[Transport Functions](#transport-functions) |
21 |
| - * [HTTP](#HTTP) |
22 |
| - * [MQTT](#MQTT) |
23 |
| - * [OpenDXL(experimental)](#opendxl) |
24 |
| -[FAQ](#frequently-asked-questions) |
| 9 | +- [Introduction](#introduction) |
| 10 | +- [Requirements and Setup](#requirements-and-setup) |
| 11 | +- [Yuuki's Consumer Components](#components-of-a-yuuki-consumer) |
| 12 | + - [Consumers](#consumers) |
| 13 | + - [Actuators](#actuators) |
| 14 | + - [Serializations](#serializations) |
| 15 | +- [Example Consumers](#examples) |
| 16 | +- [Transport Functions](#transport-functions) |
| 17 | + - [HTTP](#HTTP) |
| 18 | + - [MQTT](#MQTT) |
| 19 | +- [FAQ](#frequently-asked-questions) |
25 | 20 |
|
26 | 21 |
|
27 | 22 | ## Introduction
|
28 | 23 | Yuuki is a tool for creating OpenC2 Consumers.
|
29 | 24 | Open Command and Control, or OpenC2, is a standardized language for the command and control of technologies that provide or support cyber defenses.
|
30 | 25 | OpenC2 Commands are sent by Producer devices to Consumers that receive and implement Commands.
|
31 |
| -OpenC2 is defined in the [OpenC2 Architecture Specification](https://docs.oasis-open.org/openc2/oc2arch/v1.0/csd02/oc2arch-v1.0-csd02.md) and [OpenC2 Language Specification](https://github.com/oasis-tcs/openc2-oc2ls/blob/published/oc2ls-v1.0-cs02.md) |
| 26 | +OpenC2 is defined in the [OpenC2 Architecture Specification](https://docs.oasis-open.org/openc2/oc2arch/v1.0/csd02/oc2arch-v1.0-csd02.md) and [OpenC2 Language Specification](https://github.com/oasis-tcs/openc2-oc2ls/blob/published/oc2ls-v1.0-cs02.md). |
| 27 | + |
| 28 | +### Background |
| 29 | + |
| 30 | +This GitHub public repository ( [https://github.com/oasis-open/openc2-yuuki](https://github.com/oasis-open/openc2-yuuki) ) was created at the request of the [OASIS Open Command and Control (OpenC2) TC](https://www.oasis-open.org/committees/openc2/) as an [OASIS TC Open Repository](https://www.oasis-open.org/resources/open-repositories/) to support development of open source resources related to Technical Committee work. |
| 31 | + |
| 32 | +While this TC Open Repository remains associated with the sponsor TC, its development priorities, leadership, intellectual property terms, participation rules, and other matters of governance are [separate and distinct](https://github.com/oasis-open/openc2-yuuki/blob/master/CONTRIBUTING.md#governance-distinct-from-oasis-tc-process) from the OASIS TC Process and related policies. |
32 | 33 |
|
33 |
| -#### Statement of Purpose |
| 34 | +All contributions made to this TC Open Repository are subject to open source license terms expressed in the [BSD-3-Clause License](https://www.oasis-open.org/sites/www.oasis-open.org/files/BSD-3-Clause.txt). That license was selected as the declared ["Applicable License"](https://www.oasis-open.org/resources/open-repositories/licenses) when the TC Open Repository was created. |
| 35 | + |
| 36 | +As documented in ["Public Participation Invited"](https://github.com/oasis-open/openc2-yuuki/blob/master/CONTRIBUTING.md#public-participation-invited), contributions to this OASIS TC Open Repository are invited from all parties, whether affiliated with OASIS or not. Participants must have a GitHub account, but no fees or OASIS membership obligations are required. Participation is expected to be consistent with the [OASIS TC Open Repository Guidelines and Procedures](https://www.oasis-open.org/policies-guidelines/open-repositories), the open source [LICENSE](https://github.com/oasis-open/openc2-yuuki/blob/master/LICENSE) designated for this particular repository, and the requirement for an [Individual Contributor License Agreement](https://www.oasis-open.org/resources/open-repositories/cla/individual-cla) that governs intellectual property. |
| 37 | + |
| 38 | + |
| 39 | +### Statement of Purpose |
34 | 40 | Statement of Purpose for this OASIS TC Open Repository (openc2-yuuki) as [proposed](https://drive.google.com/open?id=0B-FunCZrr-vtcUJTWVBNaFNlVUE) and [approved](https://www.oasis-open.org/committees/ballot.php?id=3115) [[bis]](https://issues.oasis-open.org/browse/TCADMIN-2746) by the OpenC2 TC:
|
35 | 41 | The purpose of the openc2-yuuki GitHub repository is to
|
36 | 42 | (a) demonstrate the implementation of OpenC2 via multiple dispatch on type, and
|
37 | 43 | (b) provision a codebase to enable other prototype efforts.
|
38 | 44 | The initial codebase for the openc2-yuuki repository is imported from the OpenC2 Forum's Github repository.
|
39 | 45 |
|
40 |
| -Yuuki is designed to be a good introduction to OpenC2, to facilitate experimentation with different Actuator profiles, |
41 |
| -transfer protocols and message serializations, and to provide a simple OpenC2 Consumer for OpenC2 Producers to test against. |
| 46 | +Yuuki is designed to be a good introduction to OpenC2, to facilitate experimentation with different Actuator profiles, transfer protocols, and message serializations, and to provide a simple OpenC2 Consumer for OpenC2 Producers to test against. |
| 47 | + |
42 | 48 | The three main components of Yuuki are the [Consumer](consumers), [Actuator](#actuators), and [Serialization](#serializations) classes,
|
43 | 49 | defined respectively in the `consumer.py`, `actuator.py`, and `serialization.py` files.
|
44 | 50 |
|
@@ -126,7 +132,7 @@ An Actuator is identified by a string representing the namespace identifier (`ns
|
126 | 132 | Actuators consist of a number of action- target pairs, and inherit from the Actuator class,
|
127 | 133 | giving them access to initialization, pair definition and registration, and some basic error handling.
|
128 | 134 |
|
129 |
| -For example, see the sample implementation of an Actuator based on the [Stateless Packet Filtering](https://docs.oasis-open.org/openc2/oc2slpf/v1.0/oc2slpf-v1.0.html) Actuator profile in `examples/actuators/slpf.py` |
| 135 | +For example, see the sample implementation of an Actuator based on the [Stateless Packet Filtering](https://docs.oasis-open.org/openc2/oc2slpf/v1.0/oc2slpf-v1.0.html) Actuator profile in `examples/actuators/slpf.py`. |
130 | 136 | [Stateless Packet Filtering](https://docs.oasis-open.org/openc2/oc2slpf/v1.0/oc2slpf-v1.0.html) is a standard Actuator profile with the nsid: `slpf`.
|
131 | 137 | nsids of nonstandard Actuator profiles are prefixed with `x-`.
|
132 | 138 |
|
@@ -236,8 +242,7 @@ Yuuki's Consumer functions require it has OpenC2 to read. Transport functions ar
|
236 | 242 | These are found under `/openc2_arch/transports` and have `__init__,` `config` and `transport` functions.
|
237 | 243 | These were not listed with the other core parts of Yuuki only because they interact with its Consumer logic very little.
|
238 | 244 | They are very important, but they deal with transporting serialized messages, not OpenC2 Commands.
|
239 |
| -This is where your connection info is sent to properly establish connections. |
240 |
| -Tinker with caution! |
| 245 | +This is where your connection info is sent to properly establish connections, so tinker with caution! |
241 | 246 |
|
242 | 247 | ### MQTT
|
243 | 248 | You can find the OpenC2 MQTT Transfer Specification [Here](https://github.com/oasis-tcs/openc2-transf-mqtt/blob/published/transf-mqtt-v1.0-cs01.md).
|
@@ -266,15 +271,6 @@ python examples/http_example.py
|
266 | 271 | python examples/producers/http_producer.py
|
267 | 272 | ```
|
268 | 273 |
|
269 |
| -### OpenDXL |
270 |
| - |
271 |
| -| :warning: | *Support for OpenDXL is experimental*| |
272 |
| -|------------------|:-------------------------------------| |
273 |
| - |
274 |
| -This example uses both the Event and Request/Response messaging capabilities of OpenDXL to send and receive OpenC2 Messages. |
275 |
| - |
276 |
| -An OpenDXL configuration file is required to run these examples. |
277 |
| - |
278 | 274 | #### Start Consumer:
|
279 | 275 | ```sh
|
280 | 276 | python examples/opendxl_example.py PATH_TO_OPENDXL_CONFIG
|
@@ -310,10 +306,8 @@ Good Luck, and Have Fun!
|
310 | 306 | TC Open Repository [Maintainers](https://www.oasis-open.org/resources/open-repositories/maintainers-guide) are responsible for oversight of this project's community development activities, including evaluation of GitHub [pull requests]() and [preserving](https://www.oasis-open.org/policies-guidelines/open-repositories#repositoryManagement) open source principles of openness and fairness. Maintainers are recognized and trusted experts who serve to implement community goals and consensus design preferences.
|
311 | 307 | Initially, the associated TC members have designated one or more persons to serve as Maintainer(s); subsequently, participating community members may select additional or substitute Maintainers, per [consensus agreements](https://www.oasis-open.org/maintainers-guide/#additionalMaintainers).
|
312 | 308 | Current Maintainers of this TC Open Repository
|
313 |
| - |
314 |
| -* [Dave Kemp ]([email protected]); GitHub ID: [https://github.com/davaya](https://github.com/davaya); WWW: [Department of Defense ](www.nsa.gov) |
315 |
| -* [Joshua Brulé ](mailto:[email protected]); GitHub ID: [https://github.com/jtcbrule](https://github.com/jtcbrule); WWW: [University of Maryland ](https://umd.edu/) |
316 |
| -* [David Lemire ](mailto:[email protected]); GitHub ID: [https://github.com/dlemire60](https://github.com/dlemire60); WWW: [National Security Agency ](www.nsa.gov) |
| 309 | + |
| 310 | +* [David Lemire ](mailto:[email protected]); Email: [email protected] |
317 | 311 | * The ScreamingBunny Development team; GitHub ID: [https://github.com/ScreamBun](https://github.com/ScreamBun)
|
318 | 312 |
|
319 | 313 | #### Where can I learn about OASIS TC Open Repositories?
|
|
0 commit comments