archsight 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/docs/icons.md +26 -0
- data/docs/index.md.erb +17 -0
- data/docs/modeling.md +147 -2
- data/docs/togaf.md +4 -1
- data/lib/archsight/annotations/asset_annotations.rb +34 -0
- data/lib/archsight/annotations/risk_annotations.rb +21 -0
- data/lib/archsight/documentation.rb +3 -2
- data/lib/archsight/linter.rb +104 -0
- data/lib/archsight/resources/application_component.rb +8 -1
- data/lib/archsight/resources/application_event.rb +79 -0
- data/lib/archsight/resources/application_service.rb +6 -1
- data/lib/archsight/resources/business_actor.rb +9 -1
- data/lib/archsight/resources/business_control.rb +10 -2
- data/lib/archsight/resources/business_event.rb +79 -0
- data/lib/archsight/resources/business_process.rb +8 -1
- data/lib/archsight/resources/business_role.rb +69 -0
- data/lib/archsight/resources/compliance_evidence.rb +8 -2
- data/lib/archsight/resources/data_object.rb +6 -1
- data/lib/archsight/resources/implementation_deliverable.rb +62 -0
- data/lib/archsight/resources/implementation_event.rb +52 -0
- data/lib/archsight/resources/implementation_gap.rb +49 -0
- data/lib/archsight/resources/implementation_plateau.rb +61 -0
- data/lib/archsight/resources/implementation_work_package.rb +83 -0
- data/lib/archsight/resources/motivation_assessment.rb +121 -0
- data/lib/archsight/resources/motivation_constraint.rb +7 -1
- data/lib/archsight/resources/motivation_driver.rb +50 -0
- data/lib/archsight/resources/motivation_goal.rb +13 -1
- data/lib/archsight/resources/motivation_principle.rb +75 -0
- data/lib/archsight/resources/motivation_requirement.rb +12 -2
- data/lib/archsight/resources/motivation_stakeholder.rb +7 -0
- data/lib/archsight/resources/page.rb +5 -0
- data/lib/archsight/resources/technology_event.rb +80 -0
- data/lib/archsight/resources/technology_node.rb +7 -1
- data/lib/archsight/version.rb +1 -1
- data/lib/archsight/web/public/vue/{ApiDocsPage-DoOxKjG0.js → ApiDocsPage-BgqnQgwa.js} +1 -1
- data/lib/archsight/web/public/vue/{DocPage-CfsC3CeQ.js → DocPage-CNO71nBH.js} +1 -1
- data/lib/archsight/web/public/vue/{EditorPage-CsJA0q8n.js → EditorPage-DR0FCNTz.js} +1 -1
- data/lib/archsight/web/public/vue/{ErrorPage-OJpJz9df.js → ErrorPage-BfYArv6s.js} +1 -1
- data/lib/archsight/web/public/vue/{GraphView-CBq6oFRV.js → GraphView-BVTW30Ak.js} +1 -1
- data/lib/archsight/web/public/vue/HomePage-Wk9P4Pma.js +2 -0
- data/lib/archsight/web/public/vue/{InstanceRouter-DQz-SsQq.js → InstanceRouter-BV8ycydz.js} +1 -1
- data/lib/archsight/web/public/vue/{KindList-4q0K9Cll.js → KindList-C8yMsN5J.js} +1 -1
- data/lib/archsight/web/public/vue/{PageView-DzeGnvoS.js → PageView-BaN6TyJB.js} +1 -1
- data/lib/archsight/web/public/vue/{QueryError-kg6Yf-pW.js → QueryError-D790wH-a.js} +1 -1
- data/lib/archsight/web/public/vue/{ResourceList-Df_0e0qt.js → ResourceList-D-66nas2.js} +1 -1
- data/lib/archsight/web/public/vue/{SearchResults-CyPUZZSC.css → SearchResults-BewvsfOc.css} +1 -1
- data/lib/archsight/web/public/vue/SearchResults-CHyqIerQ.js +1 -0
- data/lib/archsight/web/public/vue/{WikiPage-DrvCHwJ7.js → WikiPage-D2svpk6B.js} +1 -1
- data/lib/archsight/web/public/vue/{index-D0Q5GZRs.js → index-BXXkUK1V.js} +2 -2
- data/lib/archsight/web/public/vue/{index-oF-iyZvk.css → index-Cov1SnzY.css} +1 -1
- data/lib/archsight/web/public/vue/{useGraphviz-DweKV7Kg.js → useGraphviz-DlSnFeCL.js} +12 -0
- data/lib/archsight/web/public/vue.html +2 -2
- metadata +32 -18
- data/lib/archsight/web/public/vue/HomePage-BwgMLgVC.js +0 -2
- data/lib/archsight/web/public/vue/SearchResults-CKgY6_wH.js +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# BusinessActor represents teams or organizational units
|
|
4
4
|
class Archsight::Resources::BusinessActor < Archsight::Resources::Base
|
|
5
|
-
include_annotations :git, :architecture, :generated
|
|
5
|
+
include_annotations :git, :architecture, :generated, :asset, :risk
|
|
6
6
|
|
|
7
7
|
description <<~MD
|
|
8
8
|
Represents a team, organizational unit, or external entity that performs business behavior.
|
|
@@ -25,6 +25,14 @@ class Archsight::Resources::BusinessActor < Archsight::Resources::Base
|
|
|
25
25
|
- External vendors or partners
|
|
26
26
|
- Support organizations
|
|
27
27
|
- Cross-functional groups
|
|
28
|
+
|
|
29
|
+
## Security and risk modelling
|
|
30
|
+
|
|
31
|
+
- **Threat agent:** an actor (also an external one, such as an attacker group or a supplier) can be the
|
|
32
|
+
`causedBy` of a threat or loss event.
|
|
33
|
+
- **Owner and executor:** actors own risks (`MotivationAssessment` `ownedBy`), policies and controls, directly or through a `BusinessRole` they `performedBy`.
|
|
34
|
+
- **Asset:** a supplier or a team can be an asset at risk; set the `asset/*` profile and `assesses` it from a
|
|
35
|
+
supplier assessment.
|
|
28
36
|
MD
|
|
29
37
|
|
|
30
38
|
icon "community"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# BusinessControl represents a control that guides a business process
|
|
4
4
|
class Archsight::Resources::BusinessControl < Archsight::Resources::Base
|
|
5
|
-
include_annotations :git, :architecture
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
6
|
|
|
7
7
|
description <<~MD
|
|
8
8
|
Represents a control: a safeguard or decision step with an owner that guides how a business process is carried out.
|
|
@@ -27,7 +27,7 @@ class Archsight::Resources::BusinessControl < Archsight::Resources::Base
|
|
|
27
27
|
## How it connects
|
|
28
28
|
|
|
29
29
|
- A `BusinessProcess` is `guidedBy` the control
|
|
30
|
-
- The control is `ownedBy` the actor that is accountable for it and `executedBy` the actors that carry it out
|
|
30
|
+
- The control is `ownedBy` the actor or role that is accountable for it and `executedBy` the actors or roles that carry it out
|
|
31
31
|
- The control `satisfies` requirements and is `evidencedBy` compliance evidence
|
|
32
32
|
|
|
33
33
|
A control addresses requirements from the **process side**. Whether an application implements a requirement is
|
|
@@ -36,6 +36,12 @@ class Archsight::Resources::BusinessControl < Archsight::Resources::Base
|
|
|
36
36
|
`evidence/type` of that evidence to `process`, `documentation` or `audit-log`.
|
|
37
37
|
|
|
38
38
|
Put the best practices and the evidence requirements of a control in the description.
|
|
39
|
+
|
|
40
|
+
## Security and risk modelling
|
|
41
|
+
|
|
42
|
+
A control is the process-side implementation of a control measure. `satisfies` the requirements (catalogue
|
|
43
|
+
controls and control measures); a risk it reduces is `mitigatedBy` the control (written on the assessment).
|
|
44
|
+
Group controls with `risk/domain` and `risk/category`.
|
|
39
45
|
MD
|
|
40
46
|
|
|
41
47
|
icon "shield-search"
|
|
@@ -75,6 +81,8 @@ class Archsight::Resources::BusinessControl < Archsight::Resources::Base
|
|
|
75
81
|
|
|
76
82
|
relation :ownedBy, :businessActors, :BusinessActor
|
|
77
83
|
relation :executedBy, :businessActors, :BusinessActor
|
|
84
|
+
relation :ownedBy, :businessRoles, :BusinessRole
|
|
85
|
+
relation :executedBy, :businessRoles, :BusinessRole
|
|
78
86
|
relation :satisfies, :motivationRequirements, :MotivationRequirement
|
|
79
87
|
relation :evidencedBy, :complianceEvidences, :ComplianceEvidence
|
|
80
88
|
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# BusinessEvent represents a business event: something that happens in the business and triggers or interrupts business behavior
|
|
4
|
+
class Archsight::Resources::BusinessEvent < Archsight::Resources::Base
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
|
+
|
|
7
|
+
description <<~MD
|
|
8
|
+
Represents a business event: something that happens in the business and triggers or interrupts business behavior.
|
|
9
|
+
|
|
10
|
+
## ArchiMate Definition
|
|
11
|
+
|
|
12
|
+
**Layer:** Business
|
|
13
|
+
**Aspect:** Behavior
|
|
14
|
+
|
|
15
|
+
An event is something that happens and influences behavior. It does not last: it triggers or interrupts
|
|
16
|
+
processes and services. In the risk and security overlay of the Open Group paper (*Modeling Enterprise Risk
|
|
17
|
+
Management and Security with the ArchiMate Language*) a threat event and a loss event are events that carry a
|
|
18
|
+
type; set `event/type` to say which.
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
Use BusinessEvent for events on the business level:
|
|
23
|
+
|
|
24
|
+
- Threat events and loss events of the business (fraud, supplier failure, loss of a facility, a failed audit)
|
|
25
|
+
- Incidents that stop a process or a service
|
|
26
|
+
- Triggers of business processes (a customer order, the end of a quarter)
|
|
27
|
+
|
|
28
|
+
## Event types
|
|
29
|
+
|
|
30
|
+
- `threat-event`: an event with the potential to harm an asset; it can trigger a loss event
|
|
31
|
+
- `attack`: a threat event caused by intentional malicious activity
|
|
32
|
+
- `loss-event`: an event that harms an asset (a hazard materialises, a vulnerability is exploited)
|
|
33
|
+
- `incident`: a loss event that has happened
|
|
34
|
+
- `opportunity-event`: an event that can add value
|
|
35
|
+
- `audit`, `scan`, `change`: events that produce assessments or alter the architecture
|
|
36
|
+
- `other`
|
|
37
|
+
|
|
38
|
+
Filter, group and query by `event/type`, `risk/domain` and `risk/category` to see, for example, every loss
|
|
39
|
+
event of a risk domain.
|
|
40
|
+
|
|
41
|
+
## How it connects
|
|
42
|
+
|
|
43
|
+
- A threat event `triggers` a loss event or a process or service; threat and loss events may sit on different
|
|
44
|
+
layers (a technology event triggers an application or business event)
|
|
45
|
+
- `causedBy` the threat agent (an actor, component or node)
|
|
46
|
+
- `affects` the assets it harms
|
|
47
|
+
- A `MotivationDriver` (the threat) `triggers` it; a vulnerability `MotivationAssessment` `influences` it
|
|
48
|
+
MD
|
|
49
|
+
|
|
50
|
+
icon "flash"
|
|
51
|
+
layer "business"
|
|
52
|
+
|
|
53
|
+
annotation "event/type",
|
|
54
|
+
description: "What kind of event this is (specialization of the event, see the risk and security overlay)",
|
|
55
|
+
enum: %w[threat-event attack loss-event incident opportunity-event audit scan change other],
|
|
56
|
+
filter: :word,
|
|
57
|
+
summary: true
|
|
58
|
+
|
|
59
|
+
annotation "event/severity",
|
|
60
|
+
description: "Severity of the event",
|
|
61
|
+
enum: %w[info low medium high critical],
|
|
62
|
+
filter: :word,
|
|
63
|
+
summary: true
|
|
64
|
+
|
|
65
|
+
annotation "event/occurred",
|
|
66
|
+
description: "When the event happened or is expected (ISO 8601 date or time)",
|
|
67
|
+
title: "Occurred",
|
|
68
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
69
|
+
|
|
70
|
+
relation :triggers, :businessProcesses, :BusinessProcess
|
|
71
|
+
relation :triggers, :businessEvents, :BusinessEvent
|
|
72
|
+
relation :causedBy, :businessActors, :BusinessActor
|
|
73
|
+
relation :causedBy, :applicationComponents, :ApplicationComponent
|
|
74
|
+
relation :causedBy, :technologyNodes, :TechnologyNode
|
|
75
|
+
relation :affects, :businessProcesses, :BusinessProcess
|
|
76
|
+
relation :affects, :businessProducts, :BusinessProduct
|
|
77
|
+
relation :affects, :businessActors, :BusinessActor
|
|
78
|
+
relation :affects, :dataObjects, :DataObject
|
|
79
|
+
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# BusinessProcess represents a structured business workflow or procedure
|
|
4
4
|
class Archsight::Resources::BusinessProcess < Archsight::Resources::Base
|
|
5
|
-
include_annotations :git, :architecture
|
|
5
|
+
include_annotations :git, :architecture, :asset, :risk
|
|
6
6
|
|
|
7
7
|
description <<~MD
|
|
8
8
|
Represents a sequence of business behaviors that achieves a specific outcome.
|
|
@@ -25,6 +25,12 @@ class Archsight::Resources::BusinessProcess < Archsight::Resources::Base
|
|
|
25
25
|
- Change management processes
|
|
26
26
|
- Release deployment pipelines
|
|
27
27
|
- Support escalation processes
|
|
28
|
+
|
|
29
|
+
## Security and risk modelling
|
|
30
|
+
|
|
31
|
+
A process is an asset at risk (set `asset/value` and the protection needs `asset/confidentiality`,
|
|
32
|
+
`asset/integrity`, `asset/availability`), is `guidedBy` the controls that protect it, is hit by loss
|
|
33
|
+
events and is triggered by events. Group it with `risk/domain`.
|
|
28
34
|
MD
|
|
29
35
|
|
|
30
36
|
icon "kanban-board"
|
|
@@ -34,5 +40,6 @@ class Archsight::Resources::BusinessProcess < Archsight::Resources::Base
|
|
|
34
40
|
relation :realizes, :motivationRequirements, :MotivationRequirement
|
|
35
41
|
relation :servedBy, :applicationServices, :ApplicationService
|
|
36
42
|
relation :performedBy, :businessActors, :BusinessActor
|
|
43
|
+
relation :performedBy, :businessRoles, :BusinessRole
|
|
37
44
|
relation :guidedBy, :businessControls, :BusinessControl
|
|
38
45
|
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# BusinessRole represents a responsibility that actors take on
|
|
4
|
+
class Archsight::Resources::BusinessRole < Archsight::Resources::Base
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
|
+
|
|
7
|
+
description <<~MD
|
|
8
|
+
Represents the responsibility for performing specific behavior, to which an actor can be assigned.
|
|
9
|
+
|
|
10
|
+
## ArchiMate Definition
|
|
11
|
+
|
|
12
|
+
**Layer:** Business
|
|
13
|
+
**Aspect:** Active Structure
|
|
14
|
+
|
|
15
|
+
A business role is the responsibility for performing specific behavior, to which an actor can be assigned. The
|
|
16
|
+
role is what a process, a control or a risk refers to; the actor (a team) holds the role. Changing who holds the
|
|
17
|
+
role changes it everywhere it is used.
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Use BusinessRole to represent:
|
|
22
|
+
|
|
23
|
+
- Roles of an ISMS: information security officer, data protection officer, control owner, control executor,
|
|
24
|
+
risk owner
|
|
25
|
+
- Roles in a process (incident manager, release approver)
|
|
26
|
+
- Any responsibility that should not be tied to one team by name
|
|
27
|
+
|
|
28
|
+
## How it connects
|
|
29
|
+
|
|
30
|
+
The responsibility edges point down to the role, and the role points down to the actor that holds it:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
BusinessProcess ──performedBy──▶ BusinessRole ──performedBy──▶ BusinessActor
|
|
34
|
+
BusinessControl ──ownedBy / executedBy──▶ BusinessRole
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- A `BusinessProcess` is `performedBy` the role, a `BusinessControl` is `ownedBy` and `executedBy` it
|
|
38
|
+
- Assessments, principles, work packages, deliverables and implementation events are `ownedBy` it
|
|
39
|
+
- The role is `performedBy` the actors that hold it
|
|
40
|
+
- Pointing straight at an actor stays valid; use a role where the responsibility has a name of its own
|
|
41
|
+
|
|
42
|
+
## Security and risk modelling
|
|
43
|
+
|
|
44
|
+
Roles carry the accountability of the ISMS: the owner and executor roles of controls (BSI C5, ITGS), the owner of
|
|
45
|
+
a risk, the issuer of a policy. Use `role/type` to tell owners, executors and officers apart and `risk/domain`
|
|
46
|
+
to group roles by context.
|
|
47
|
+
MD
|
|
48
|
+
|
|
49
|
+
icon "user-badge-check"
|
|
50
|
+
layer "business"
|
|
51
|
+
|
|
52
|
+
annotation "role/id",
|
|
53
|
+
description: "Identifier of the role in its list (e.g. ISB, DPO)",
|
|
54
|
+
title: "Role ID",
|
|
55
|
+
summary: true
|
|
56
|
+
|
|
57
|
+
annotation "role/type",
|
|
58
|
+
description: "What kind of responsibility the role is (specialization of the role)",
|
|
59
|
+
enum: %w[owner executor officer reviewer operator other],
|
|
60
|
+
filter: :word,
|
|
61
|
+
summary: true
|
|
62
|
+
|
|
63
|
+
annotation "role/scope",
|
|
64
|
+
description: "What the role is responsible for, in a short paragraph",
|
|
65
|
+
title: "Scope",
|
|
66
|
+
format: :markdown
|
|
67
|
+
|
|
68
|
+
relation :performedBy, :businessActors, :BusinessActor
|
|
69
|
+
end
|
|
@@ -9,7 +9,7 @@ class Archsight::Resources::ComplianceEvidence < Archsight::Resources::Base
|
|
|
9
9
|
|
|
10
10
|
## ArchiMate Definition
|
|
11
11
|
|
|
12
|
-
**Layer:** Implementation & Migration
|
|
12
|
+
**Layer:** Business (as a kind; ArchiMate would place evidence in Implementation & Migration)
|
|
13
13
|
**Aspect:** Passive Structure
|
|
14
14
|
|
|
15
15
|
Compliance evidence represents tangible proof that a system or process meets specific
|
|
@@ -32,6 +32,12 @@ class Archsight::Resources::ComplianceEvidence < Archsight::Resources::Base
|
|
|
32
32
|
that resource meets the requirement it `satisfies`
|
|
33
33
|
- **Of a control:** linked with `evidencedBy` from a `BusinessControl`; the records the control produces
|
|
34
34
|
(reviews, diagrams, change history, audit logs). Use `evidence/type` `process`, `documentation` or `audit-log`
|
|
35
|
+
|
|
36
|
+
## Security and risk modelling
|
|
37
|
+
|
|
38
|
+
Evidence is the proof that a control measure works. Use `evidence/status` `not-applicable` when the requirement
|
|
39
|
+
does not apply (BSI "entbehrlich"). Evidence of risk treatment (a test, a review, an audit report) is linked
|
|
40
|
+
from the control or application it is about.
|
|
35
41
|
MD
|
|
36
42
|
|
|
37
43
|
icon "shield-check"
|
|
@@ -44,7 +50,7 @@ class Archsight::Resources::ComplianceEvidence < Archsight::Resources::Base
|
|
|
44
50
|
|
|
45
51
|
annotation "evidence/status",
|
|
46
52
|
description: "Current status of evidence",
|
|
47
|
-
enum: %w[implemented partial not-implemented],
|
|
53
|
+
enum: %w[implemented partial not-implemented not-applicable],
|
|
48
54
|
summary: true
|
|
49
55
|
|
|
50
56
|
# The structured answer to "how does the evidenced resource meet the requirement": one markdown field per
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# DataObject represents data structured for automated processing (ArchiMate Application Layer)
|
|
4
4
|
class Archsight::Resources::DataObject < Archsight::Resources::Base
|
|
5
|
-
include_annotations :git, :architecture, :generated
|
|
5
|
+
include_annotations :git, :architecture, :generated, :asset, :risk
|
|
6
6
|
|
|
7
7
|
description <<~MD
|
|
8
8
|
Represents data structured for automated processing by applications.
|
|
@@ -25,6 +25,11 @@ class Archsight::Resources::DataObject < Archsight::Resources::Base
|
|
|
25
25
|
- Message payloads
|
|
26
26
|
- Configuration structures
|
|
27
27
|
- Domain models
|
|
28
|
+
|
|
29
|
+
## Security and risk modelling
|
|
30
|
+
|
|
31
|
+
Data objects carry the information assets: set `asset/value` and the protection needs
|
|
32
|
+
(`asset/confidentiality`, `asset/integrity`, `asset/availability`, BSI Schutzbedarf), and `risk/domain`.
|
|
28
33
|
MD
|
|
29
34
|
|
|
30
35
|
icon "database"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# ImplementationDeliverable represents a precisely defined result of a work package
|
|
4
|
+
class Archsight::Resources::ImplementationDeliverable < Archsight::Resources::Base
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
|
+
|
|
7
|
+
description <<~MD
|
|
8
|
+
Represents a precisely defined result of a work package.
|
|
9
|
+
|
|
10
|
+
## ArchiMate Definition
|
|
11
|
+
|
|
12
|
+
**Layer:** Implementation & Migration
|
|
13
|
+
**Aspect:** Passive Structure
|
|
14
|
+
|
|
15
|
+
A deliverable is a tangible or intangible result that a work package produces: a document, a system, a changed
|
|
16
|
+
process. It realizes requirements, goals and plateaus.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
Use ImplementationDeliverable to represent:
|
|
21
|
+
|
|
22
|
+
- Documents and reports produced by a project or an audit
|
|
23
|
+
- Systems and process changes that go live
|
|
24
|
+
- The artefact that becomes compliance evidence once it exists
|
|
25
|
+
|
|
26
|
+
## How it connects
|
|
27
|
+
|
|
28
|
+
- A `ImplementationWorkPackage` `realizes` it
|
|
29
|
+
- It is `ownedBy` an actor and `realizes` plateaus, requirements, goals, outcomes and `ComplianceEvidence`
|
|
30
|
+
|
|
31
|
+
## Security and risk modelling
|
|
32
|
+
|
|
33
|
+
A deliverable of type `evidence` that `realizes` a `ComplianceEvidence` ties the plan (work package) to the proof
|
|
34
|
+
(evidence) of a control measure.
|
|
35
|
+
MD
|
|
36
|
+
|
|
37
|
+
icon "package"
|
|
38
|
+
layer "implementation"
|
|
39
|
+
|
|
40
|
+
annotation "deliverable/type",
|
|
41
|
+
description: "What kind of result this is (specialization of the deliverable)",
|
|
42
|
+
enum: %w[document system process-change report evidence],
|
|
43
|
+
filter: :word,
|
|
44
|
+
summary: true
|
|
45
|
+
annotation "deliverable/status",
|
|
46
|
+
description: "Where the result is",
|
|
47
|
+
enum: %w[planned in-progress delivered accepted],
|
|
48
|
+
filter: :word,
|
|
49
|
+
summary: true
|
|
50
|
+
annotation "deliverable/due",
|
|
51
|
+
description: "When the result is due (ISO 8601 date or time)",
|
|
52
|
+
title: "Due",
|
|
53
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
54
|
+
|
|
55
|
+
relation :ownedBy, :businessActors, :BusinessActor
|
|
56
|
+
relation :ownedBy, :businessRoles, :BusinessRole
|
|
57
|
+
relation :realizes, :implementationPlateaus, :ImplementationPlateau
|
|
58
|
+
relation :realizes, :motivationRequirements, :MotivationRequirement
|
|
59
|
+
relation :realizes, :goals, :MotivationGoal
|
|
60
|
+
relation :realizes, :outcomes, :MotivationOutcome
|
|
61
|
+
relation :realizes, :complianceEvidences, :ComplianceEvidence
|
|
62
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# ImplementationEvent represents a state change related to implementation or migration
|
|
4
|
+
class Archsight::Resources::ImplementationEvent < Archsight::Resources::Base
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
|
+
|
|
7
|
+
description <<~MD
|
|
8
|
+
Represents a state change related to implementation or migration.
|
|
9
|
+
|
|
10
|
+
## ArchiMate Definition
|
|
11
|
+
|
|
12
|
+
**Layer:** Implementation & Migration
|
|
13
|
+
**Aspect:** Behavior
|
|
14
|
+
|
|
15
|
+
An implementation event is something that happens during implementation or migration and may trigger work: a
|
|
16
|
+
milestone reached, a go-live, a decommissioning, a review date or a deadline.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
Use ImplementationEvent to represent:
|
|
21
|
+
|
|
22
|
+
- Milestones and go-lives of a roadmap
|
|
23
|
+
- Deadlines (certification audit, end of a transition period)
|
|
24
|
+
- Reviews and decommissioning dates
|
|
25
|
+
|
|
26
|
+
## How it connects
|
|
27
|
+
|
|
28
|
+
- `ownedBy` an actor
|
|
29
|
+
- `triggers` work packages and plateaus
|
|
30
|
+
|
|
31
|
+
Events of the running architecture (threat and loss events, incidents) are `BusinessEvent`, `ApplicationEvent`
|
|
32
|
+
and `TechnologyEvent`.
|
|
33
|
+
MD
|
|
34
|
+
|
|
35
|
+
icon "calendar-check"
|
|
36
|
+
layer "implementation"
|
|
37
|
+
|
|
38
|
+
annotation "event/type",
|
|
39
|
+
description: "What kind of event this is (specialization of the implementation event)",
|
|
40
|
+
enum: %w[milestone go-live decommission review deadline],
|
|
41
|
+
filter: :word,
|
|
42
|
+
summary: true
|
|
43
|
+
annotation "event/occurred",
|
|
44
|
+
description: "When the event happens or happened (ISO 8601 date or time)",
|
|
45
|
+
title: "Occurred",
|
|
46
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
47
|
+
|
|
48
|
+
relation :ownedBy, :businessActors, :BusinessActor
|
|
49
|
+
relation :ownedBy, :businessRoles, :BusinessRole
|
|
50
|
+
relation :triggers, :implementationWorkPackages, :ImplementationWorkPackage
|
|
51
|
+
relation :triggers, :implementationPlateaus, :ImplementationPlateau
|
|
52
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# ImplementationGap represents the difference between two plateaus
|
|
4
|
+
class Archsight::Resources::ImplementationGap < Archsight::Resources::Base
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
|
+
|
|
7
|
+
description <<~MD
|
|
8
|
+
Represents a statement of difference between two plateaus.
|
|
9
|
+
|
|
10
|
+
## ArchiMate Definition
|
|
11
|
+
|
|
12
|
+
**Layer:** Implementation & Migration
|
|
13
|
+
**Aspect:** Passive Structure
|
|
14
|
+
|
|
15
|
+
A gap is what is missing between a baseline and a target plateau: elements to add, change or remove. It is
|
|
16
|
+
the starting point of gap analysis in the TOGAF ADM.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
Use ImplementationGap to represent:
|
|
21
|
+
|
|
22
|
+
- The difference between today's and the target architecture
|
|
23
|
+
- Requirements of a standard that are not met yet (compliance gap)
|
|
24
|
+
- The part of a plateau transition that a work package still has to deliver
|
|
25
|
+
|
|
26
|
+
## How it connects
|
|
27
|
+
|
|
28
|
+
- A gap `compares` the plateaus it lies between (baseline and target)
|
|
29
|
+
- It is `closedBy` the work packages and deliverables that remove it
|
|
30
|
+
MD
|
|
31
|
+
|
|
32
|
+
icon "git-compare"
|
|
33
|
+
layer "implementation"
|
|
34
|
+
|
|
35
|
+
annotation "gap/status",
|
|
36
|
+
description: "Whether the gap is being closed",
|
|
37
|
+
enum: %w[open closing closed],
|
|
38
|
+
filter: :word,
|
|
39
|
+
summary: true
|
|
40
|
+
annotation "gap/impact",
|
|
41
|
+
description: "How much the gap matters",
|
|
42
|
+
enum: %w[low medium high critical],
|
|
43
|
+
filter: :word,
|
|
44
|
+
summary: true
|
|
45
|
+
|
|
46
|
+
relation :compares, :implementationPlateaus, :ImplementationPlateau
|
|
47
|
+
relation :closedBy, :implementationWorkPackages, :ImplementationWorkPackage
|
|
48
|
+
relation :closedBy, :implementationDeliverables, :ImplementationDeliverable
|
|
49
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# ImplementationPlateau represents a relatively stable state of the architecture
|
|
4
|
+
class Archsight::Resources::ImplementationPlateau < Archsight::Resources::Base
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
|
+
|
|
7
|
+
description <<~MD
|
|
8
|
+
Represents a relatively stable state of the architecture that exists during a limited period of time.
|
|
9
|
+
|
|
10
|
+
## ArchiMate Definition
|
|
11
|
+
|
|
12
|
+
**Layer:** Implementation & Migration
|
|
13
|
+
**Aspect:** Composite
|
|
14
|
+
|
|
15
|
+
A plateau is a coherent set of architecture elements as they exist (or will exist) in one period. Plateaus
|
|
16
|
+
are the points of a migration path: baseline, transition states, target.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
Use ImplementationPlateau to represent:
|
|
21
|
+
|
|
22
|
+
- The baseline (today's architecture) and the target architecture
|
|
23
|
+
- Transition architectures of a roadmap
|
|
24
|
+
- The state of the ISMS scope at a certification date
|
|
25
|
+
|
|
26
|
+
## How it connects
|
|
27
|
+
|
|
28
|
+
- A plateau `contains` the components, services, nodes, processes and requirements that belong to it
|
|
29
|
+
- It `triggers` the next plateau (migration path)
|
|
30
|
+
- A `ImplementationDeliverable` `realizes` it; a `ImplementationGap` `compares` two plateaus
|
|
31
|
+
MD
|
|
32
|
+
|
|
33
|
+
icon "packages"
|
|
34
|
+
layer "implementation"
|
|
35
|
+
|
|
36
|
+
annotation "plateau/type",
|
|
37
|
+
description: "Position on the migration path",
|
|
38
|
+
enum: %w[baseline transition target],
|
|
39
|
+
filter: :word,
|
|
40
|
+
summary: true
|
|
41
|
+
annotation "plateau/status",
|
|
42
|
+
description: "Where the plateau is",
|
|
43
|
+
enum: %w[planned current past],
|
|
44
|
+
filter: :word,
|
|
45
|
+
summary: true
|
|
46
|
+
annotation "plateau/from",
|
|
47
|
+
description: "When the plateau starts (ISO 8601 date or time)",
|
|
48
|
+
title: "From",
|
|
49
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
50
|
+
annotation "plateau/until",
|
|
51
|
+
description: "When the plateau ends (ISO 8601 date or time)",
|
|
52
|
+
title: "Until",
|
|
53
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
54
|
+
|
|
55
|
+
relation :contains, :applicationComponents, :ApplicationComponent
|
|
56
|
+
relation :contains, :applicationServices, :ApplicationService
|
|
57
|
+
relation :contains, :technologyNodes, :TechnologyNode
|
|
58
|
+
relation :contains, :businessProcesses, :BusinessProcess
|
|
59
|
+
relation :contains, :motivationRequirements, :MotivationRequirement
|
|
60
|
+
relation :triggers, :implementationPlateaus, :ImplementationPlateau
|
|
61
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# ImplementationWorkPackage represents a series of actions that achieves a result within a time frame
|
|
4
|
+
class Archsight::Resources::ImplementationWorkPackage < Archsight::Resources::Base
|
|
5
|
+
include_annotations :git, :architecture, :risk
|
|
6
|
+
|
|
7
|
+
description <<~MD
|
|
8
|
+
Represents a series of actions identified and designed to achieve specific results within specified time and resource constraints.
|
|
9
|
+
|
|
10
|
+
## ArchiMate Definition
|
|
11
|
+
|
|
12
|
+
**Layer:** Implementation & Migration
|
|
13
|
+
**Aspect:** Behavior
|
|
14
|
+
|
|
15
|
+
A work package is a piece of work with a defined start and end that produces deliverables. It is how the
|
|
16
|
+
architecture changes: projects, measures, remediation of findings, roadmap items.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
Use ImplementationWorkPackage to represent:
|
|
21
|
+
|
|
22
|
+
- Projects and roadmap items that move the architecture from one plateau to the next
|
|
23
|
+
- Measures and realisation plans of an ISMS (due date, status, owner)
|
|
24
|
+
- Remediation of a risk, vulnerability or audit finding (the `MotivationAssessment` is `mitigatedBy` the work package)
|
|
25
|
+
- Audit programmes and recurring reviews
|
|
26
|
+
|
|
27
|
+
## How it connects
|
|
28
|
+
|
|
29
|
+
- `ownedBy` the accountable actor or role, `performedBy` the actors or roles that carry it out
|
|
30
|
+
- `realizes` deliverables (its results), requirements and goals
|
|
31
|
+
- `affects` the assets it changes; the assessments (risks, findings) it treats are `mitigatedBy` it (written on the assessment)
|
|
32
|
+
- `triggers` the work packages that follow it; an `ImplementationEvent` can trigger it
|
|
33
|
+
- A `ImplementationGap` is `closedBy` it
|
|
34
|
+
|
|
35
|
+
## Security and risk modelling
|
|
36
|
+
|
|
37
|
+
Set `workpackage/type` `remediation` and list the work package under `mitigatedBy` of the risk or finding to see what is open; filter
|
|
38
|
+
by `workpackage/status`, `workpackage/due` and `risk/domain` for the plan of one domain.
|
|
39
|
+
MD
|
|
40
|
+
|
|
41
|
+
icon "hammer"
|
|
42
|
+
layer "implementation"
|
|
43
|
+
|
|
44
|
+
annotation "workpackage/type",
|
|
45
|
+
description: "What kind of work this is (specialization of the work package)",
|
|
46
|
+
enum: %w[project measure remediation audit-programme change],
|
|
47
|
+
filter: :word,
|
|
48
|
+
summary: true
|
|
49
|
+
annotation "workpackage/status",
|
|
50
|
+
description: "Where the work is",
|
|
51
|
+
enum: %w[planned in-progress done cancelled],
|
|
52
|
+
filter: :word,
|
|
53
|
+
summary: true
|
|
54
|
+
annotation "workpackage/priority",
|
|
55
|
+
description: "How urgent the work is",
|
|
56
|
+
enum: %w[low medium high critical],
|
|
57
|
+
filter: :word
|
|
58
|
+
annotation "workpackage/start",
|
|
59
|
+
description: "When the work starts (ISO 8601 date or time)",
|
|
60
|
+
title: "Start",
|
|
61
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
62
|
+
annotation "workpackage/due",
|
|
63
|
+
description: "When the work is due (ISO 8601 date or time)",
|
|
64
|
+
title: "Due",
|
|
65
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
66
|
+
annotation "workpackage/completed",
|
|
67
|
+
description: "When the work was completed (ISO 8601 date or time)",
|
|
68
|
+
title: "Completed",
|
|
69
|
+
validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
|
|
70
|
+
|
|
71
|
+
relation :ownedBy, :businessActors, :BusinessActor
|
|
72
|
+
relation :performedBy, :businessActors, :BusinessActor
|
|
73
|
+
relation :ownedBy, :businessRoles, :BusinessRole
|
|
74
|
+
relation :performedBy, :businessRoles, :BusinessRole
|
|
75
|
+
relation :realizes, :implementationDeliverables, :ImplementationDeliverable
|
|
76
|
+
relation :realizes, :motivationRequirements, :MotivationRequirement
|
|
77
|
+
relation :realizes, :goals, :MotivationGoal
|
|
78
|
+
relation :affects, :businessProcesses, :BusinessProcess
|
|
79
|
+
relation :affects, :applicationComponents, :ApplicationComponent
|
|
80
|
+
relation :affects, :applicationServices, :ApplicationService
|
|
81
|
+
relation :affects, :technologyNodes, :TechnologyNode
|
|
82
|
+
relation :triggers, :implementationWorkPackages, :ImplementationWorkPackage
|
|
83
|
+
end
|