|
| 1 | +.. |
| 2 | + # ******************************************************************************* |
| 3 | + # Copyright (c) 2025 Contributors to the Eclipse Foundation |
| 4 | + # |
| 5 | + # See the NOTICE file(s) distributed with this work for additional |
| 6 | + # information regarding copyright ownership. |
| 7 | + # |
| 8 | + # This program and the accompanying materials are made available under the |
| 9 | + # terms of the Apache License Version 2.0 which is available at |
| 10 | + # https://www.apache.org/licenses/LICENSE-2.0 |
| 11 | + # |
| 12 | + # SPDX-License-Identifier: Apache-2.0 |
| 13 | + # ******************************************************************************* |
| 14 | +
|
| 15 | + # Some portions generated by Co-Pilot |
| 16 | + |
| 17 | +Security Analysis Guidelines |
| 18 | +############################ |
| 19 | + |
| 20 | +.. gd_guidl:: Security Analysis Guideline |
| 21 | + :id: gd_guidl__security_analysis |
| 22 | + :status: valid |
| 23 | + :complies: |
| 24 | + |
| 25 | +This document describes the general guidance for Security Analysis based on the concept |
| 26 | +which is defined :need:`Security Analysis Concept<doc_concept__security_analysis>`. |
| 27 | +Use the platform Security Analysis as an input so that general security controls are |
| 28 | +only defined once and not in every single Security Analysis. |
| 29 | + |
| 30 | +Workflow for Security Analysis |
| 31 | +============================== |
| 32 | + |
| 33 | +The workflow of the Security Analysis is described in :ref:`workflow_security_analysis`. |
| 34 | +The single steps in these workflows are described in detail in the following sections. |
| 35 | + |
| 36 | + |
| 37 | +Step-by-Step-approach Security Analysis Feature/Component: |
| 38 | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 39 | + |
| 40 | +The analysis is done by using the template :ref:`security_analysis_threat_templates` on |
| 41 | +the feature or component architectural diagrams. By using the threat models |
| 42 | +<:need:`gd_guidl__threat_models_stride`> it can be ensured that the analysis is done in |
| 43 | +a structured way. Apply the threat model to the diagram and document the results in the |
| 44 | +template. Use the content of the document :need:`gd_temp__feat_sec_ana_threat`, |
| 45 | +:need:`gd_temp__comp_sec_ana_threat` to describe e.g. why a threat model is not |
| 46 | +applicable for the diagram. If a treat can't be applied, the reason has to be documented |
| 47 | +in the content of the document, so it can be recognized. |
| 48 | + |
| 49 | +The attributes of the template are described in :ref:`process_requirements_security_analysis_attributes`. |
| 50 | + |
| 51 | +**Steps:** |
| 52 | + |
| 53 | +#. For each of the security functions realized by an architecture element check if a threat from the threat model :need:`gd_guidl__threat_models_stride` applies. |
| 54 | +#. If a threat model applies, use the template :need:`gd_temp__feat_sec_ana_threat` or :need:`gd_temp__comp_sec_ana_threat` to perform the analysis. |
| 55 | +#. The title of the analysis should be easily recognizable e.g. "Component xy unauthorized access". |
| 56 | +#. Link the violated architecture with the "violates" attribute. |
| 57 | +#. Replace the placeholders in the "id" attribute with the name of the feature or component and a short description of the element so that it can be easily identified. |
| 58 | +#. Document the threat ID from the threat model :need:`gd_guidl__threat_models_stride` that applies to the element in the "threat_id" attribute. |
| 59 | +#. Describe the threat effect of the threat model on the element in the "threat_effect" attribute. Use the threat description and enlarge it if it's applicable to the considered element. |
| 60 | +#. Document the mitigation. This can be (accept, avoid, reduce, share) of the threat. |
| 61 | +#. If there is no mitigation or existing mitigation is not sufficient, a mitigation issue has to be created in the Issue Tracking system and linked in the "mitigation_issue" attribute. |
| 62 | +#. The analysis is finished if for each identified threat a sufficient mitigation exists. |
| 63 | +#. Unless the attribute sufficient is yes, mitigation and argument attributes can be still empty. |
| 64 | +#. Continue the analysis until all applicable threat models are checked. |
| 65 | +#. The verification is done by applying the checklist :need:`gd_chklst__security_analysis`. |
| 66 | + |
| 67 | +.. note:: |
| 68 | + If there are changes they have to be analyzed with an impact analysis |
| 69 | + :need:`gd_temp__change_impact_analysis`. If needed the Security Analysis has to be |
| 70 | + updated accordingly. Therefore all necessary steps have to be repeated. |
| 71 | + |
| 72 | + |
| 73 | +Step-by-Step-approach Security Analysis Platform: |
| 74 | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 75 | + |
| 76 | +The analysis is done by using the template :ref:`security_analysis_templates` on the |
| 77 | +platform diagrams using a list of threat scenarios <:need:`gd_guidl__sec_ana_threat_scenarios`>. |
| 78 | +Use the content of the document :need:`gd_temp__plat_threat_scenario`, |
| 79 | +:need:`gd_temp__feat_sec_ana_threat` or :need:`gd_temp__comp_sec_ana_threat` to describe |
| 80 | +e.g. why a threat scenario is not applicable for the diagram. If a threat scenario can't |
| 81 | +be applied, the reason has to be documented in the content of the document, so it |
| 82 | +can be recognized. |
| 83 | + |
| 84 | +The attributes of the template are described in :ref:`process_requirements_security_analysis_attributes`. |
| 85 | + |
| 86 | +**Steps:** |
| 87 | + |
| 88 | +#. For each architectural element check if a threat from the threat scenarios :need:`gd_guidl__sec_ana_threat_scenarios` applies. |
| 89 | +#. If a threat scenario applies, use the template :need:`gd_temp__plat_threat_scenario`, :need:`gd_temp__feat_sec_ana_threat` or :need:`gd_temp__comp_sec_ana_threat` to perform the analysis. |
| 90 | +#. The title of the analysis should be easily recognizable e.g. "Component xy unauthorized access". |
| 91 | +#. Link the violated architecture with the "violates" attribute. |
| 92 | +#. Replace the placeholders in the "id" attribute with the name of the feature or component and a short description of the element so that it can be easily identified. |
| 93 | +#. Document the threat ID from the threat scenario :need:`gd_guidl__sec_ana_threat_scenarios` that applies to the element in the "threat_id" attribute. |
| 94 | +#. Describe the threat effect of the threat scenario on the element in the "threat_effect" attribute. Use the violation cause description and enlarge it if it's applicable to the considered element. |
| 95 | +#. Document the mitigation. This can be (accept, avoid, reduce, share) of the threat. |
| 96 | +#. If there is no mitigation or the mitigation is not sufficient, a mitigation issue has to be created in the Issue Tracking system and linked in the "mitigation_issue" attribute. |
| 97 | +#. The analysis is finished if for each identified threat a sufficient mitigation exists. |
| 98 | +#. Unless the attribute sufficient is yes, mitigation and argument attributes can be still empty. |
| 99 | +#. Continue the analysis until all applicable threat scenarios are checked. |
| 100 | +#. The verification is done by applying the checklist :need:`gd_chklst__security_analysis`. |
| 101 | + |
| 102 | +.. note:: |
| 103 | + If there are changes they have to be analyzed with an impact analysis |
| 104 | + :need:`gd_temp__change_impact_analysis`. If needed the Security Analysis has to be |
| 105 | + updated accordingly. Therefore all necessary steps have to be repeated. |
| 106 | + |
| 107 | +Examples for Security Analysis at feature level |
| 108 | +=============================================== |
| 109 | + |
| 110 | +future PR (https://github.com/eclipse-score/process_description/issues/409). |
| 111 | + |
| 112 | +Examples for Security Analysis at component level |
| 113 | +================================================= |
| 114 | + |
| 115 | +future PR (https://github.com/eclipse-score/process_description/issues/409). |
0 commit comments