You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: patterns/1-initial/balancing-openness-and-security.md
+20-20Lines changed: 20 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Title
1
+
##Title
2
2
3
3
Balancing Openness and Security
4
4
@@ -7,41 +7,41 @@ Balancing Openness and Security
7
7
While InnerSource flourishes in environments with a high degree of shared code, Security/Legal prefers the limitation of source code access to only those that need it.
8
8
By making Security/Legal part of the team, introducing explicit sharing levels and security policies for shared repositories, as well as defining what qualifies as sensitive information, code sharing can be facilitated while minimizing the associated risks.
9
9
10
-
# Problem
10
+
##Problem
11
11
12
12
A successful InnerSource program needs openness and transparency (e.g. access to code, issues, documentation, and roadmap), while good security practice is to minimize access, following the [principle of least privilege][principle-of-least-privilege]. How to balance and address these seemingly contradicting requirements?
13
13
14
-
# Story
14
+
##Story
15
15
16
16
Most organizations developing proprietary software will have source code that they do not want to leave the organization, as this may harm their business. Think what would happen when the major competitors would have access to their latest features and would know what they are working on next.
17
17
18
18
Even when the source code management system is not compromised from the outside, malicious employees or interns could leak code to the competition. Or think about gaining access to sensitive systems and services using credentials that are hard-coded in source code. Or injection of malicious code into a product’s codebase.
19
19
20
20
Restricting access typically reduces the risk of these things from happening, but at the same time hampers collaboration and re-use.
21
21
22
-
# Context
22
+
##Context
23
23
24
24
- The organization has an InnerSource Program Office (ISPO), or a similar group, steering the success of the InnerSource initiative in the organization. One of their goals is to stimulate maximum openness and transparency in the organization.
25
25
- The organization has a Security Team constraining unnecessary data access to prevent the organization from data-leakage and malicious code injection.
26
26
- The Security Team, ISPO, and Engineering teams are not regularly talking with each other.
27
27
- "Closed Source" is the default in the organization when creating new repositories, i.e. only the team owning/maintaining the code has access to the given repo.
28
28
- "Shared Source" within the organization isn’t common practice. Organizational teams aren’t familiar with what code or information should or shouldn’t be placed in shared repositories.
29
29
30
-
# Forces
30
+
##Forces
31
31
32
32
- A successful InnerSource program needs openness and transparency (e.g. access to code, issues, documentation, and roadmap)
33
33
- Good security practice is to minimize access, following the [principle of least privilege][principle-of-least-privilege].
34
34
- The Security Team is more familiar with security principles at conceptual level than security practices at operation level. Some of the security policy is good at concept but hard to execute at operation level.
35
35
- Engineering Teams focus more on service/product development or knowledge sharing than on measures for data protection. While it is easy for Engineering Teams to decide to close or open the repository, they are usually not willing to spend time on judging how to reach a balance between both. Or to refactor their code in order to be able to share more.
36
36
- No one-fit-all guideline or rules to judge what data or process is to be secured or not. That much depends on data sensitivity and overall security policy/infrastructure.
37
37
38
-
# Solutions
38
+
##Solutions
39
39
40
40
To reduce the misalignment and possible misunderstanding between the teams involved, it is key to bring everybody together so that they can express their goals and concerns, and develop shared language together.
41
41
42
42
After that they can decide as a group how to drive the execution of the specific goals, and what to do to reduce the risks that were identified.
43
43
44
-
## Setup
44
+
###Setup
45
45
46
46
Start by bringing (representatives from) Engineering, Security, Legal, and the ISPO together, to discuss the goals of the InnerSource initiative, as well as any security concerns.
47
47
@@ -55,13 +55,13 @@ Some helpful practices are:
55
55
-**SHARED** - inner source: accessible for all software developers in the organization
56
56
-**CLOSED** - closed source: only accessible to named individuals in the organization
57
57
58
-
## Execution
58
+
###Execution
59
59
60
60
How to allow for a greater amount of SHARED code in the organizations depends a lot on the specific business domain, related regulations, and concerns identified in the initial meetings of the InnerSource task force as mentioned above.
61
61
62
62
Following are some practices that have proven to be helpful in reducing security concerns and allowing for a greater amount of SHARED code.
63
63
64
-
### Security Training and SCM Setup
64
+
####Security Training and SCM Setup
65
65
66
66
- Employee training about security awareness and individual responsibility
67
67
- Enhanced security measures or policies on source code management (SCM) system to prevent malicious access to shared repositories and reduce the impact of the same:
@@ -76,12 +76,12 @@ Following are some practices that have proven to be helpful in reducing security
76
76
- downloading source code from new devices
77
77
- downloading a great amount of source code in the monitoring period.
78
78
79
-
### Split out the 'secret sauce' into separate repos
79
+
####Split out the 'secret sauce' into separate repos
80
80
81
81
Separate highly specific, differentiating code (the 'secret sauce') from code that is considered commodity in the organization (e.g. infrastructure, platform, and UI components).
82
82
By placing them in separate repositories, you increase your chances of offering the commodity code as SHARED repos, while the 'secret sauce' may stay CLOSED.
83
83
84
-
### Prevent sensitive information in shared repositories
84
+
####Prevent sensitive information in shared repositories
85
85
86
86
Build up agreed security requirement of InnerSource, such as:
87
87
@@ -92,7 +92,7 @@ Build up agreed security requirement of InnerSource, such as:
92
92
- Leverage secrets scanning tools to scan the target repositories (including code, test cases, and helper scripts) for confidential data such as accounts, passwords, access tokens, keys, and other sensitive data.
93
93
- Keep repositories CLOSED, but expose metadata about the projects (i.e. through an [InnerSource Portal][innersource-portal]), and create some kind of access request workflow. This way you could still give people access to the code, but not open it to everyone by default. *(Note: The full model is described under **Extension: An Additional Sharing Level**)*
94
94
95
-
### Extension: An Additional Sharing Level
95
+
####Extension: An Additional Sharing Level
96
96
97
97
In some cases, introducing additional sharing levels might be appropriate. Use cases include:
98
98
@@ -118,7 +118,7 @@ Repositories with RESTRICTED sharing level are included in the [central catalog]
118
118
- RESTRICTED repos will likely get fewer contributions due to the additional step to access the code. Where possible, INTERNAL repos should be preferred.
119
119
- It is possible to use a tool that automatically adds the `README.md` and some other metadata to an internal repository in GitHub, allowing the GitHub search feature to include this data in the search results.
120
120
121
-
# Sketch
121
+
##Sketch
122
122
123
123
```
124
124
Example Repository Sharing Levels
@@ -137,7 +137,7 @@ Example Repository Sharing Levels
137
137
└──────┘
138
138
```
139
139
140
-
# Resulting Context
140
+
##Resulting Context
141
141
142
142
InnerSource adoption in an organization will often [start as an experiment][start-as-an-experiment], with a small number of SHARED repositories.
143
143
@@ -149,32 +149,32 @@ With the increased confidence and lessons learned from this experiment, the task
149
149
150
150
Most importantly, the changes implemented through this pattern lead to more code being shared between teams, and closed source will no longer be the obvious default.
151
151
152
-
# Known Instances
152
+
##Known Instances
153
153
154
154
* Philips
155
155
* Verizon
156
156
157
-
# Status
157
+
##Status
158
158
159
159
- Initial
160
160
161
-
# Authors
161
+
##Authors
162
162
163
163
- Bart Golsteijn
164
164
- Jack Yang
165
165
- Sebastian Spier
166
166
167
-
# Acknowledgements
167
+
##Acknowledgements
168
168
169
169
- Conley Rogers
170
170
171
-
# Alias
171
+
##Alias
172
172
173
173
- Secure Discoverability
174
174
- Secure Code Sharing
175
175
- Secure InnerSource
176
176
177
-
# Notes (internal)
177
+
##Notes (internal)
178
178
179
179
*These notes are meant for internal use within the InnerSource Commons Patterns Working Group only.*
When a team opens their code for InnerSource reuse, they lose visibility into who is consuming it, making it hard to communicate vulnerabilities, gauge adoption, or retire deprecated components. Lightweight mechanisms such as dependency scanning, voluntary registration, or opt-in mailing lists restore that visibility without adding friction for consumers.
8
8
9
-
# Problem
9
+
##Problem
10
10
11
11
There's several reasons why we might want to know who's using (consuming) our code. We can't do the following:
12
12
@@ -16,18 +16,18 @@ There's several reasons why we might want to know who's using (consuming) our co
16
16
* encourage others to use a project - by showing how many users there already are
17
17
* survey users for feedback
18
18
19
-
# Context
19
+
##Context
20
20
21
21
This is a general issue that affects potentially all InnerSource (and open source!) projects.
22
22
The act of opening code allows people to use it without letting you know.
23
23
24
-
# Forces
24
+
##Forces
25
25
26
26
* The harder it is to download/integrate the project, the less it will be adopted (forcing people to give information when they use it adds barriers)
27
27
* Not all projects may want you to know what they're using (tightly closed source/top secret downstream project)
28
28
* Putting in callback/call home routines into projects may introduce distrust in downstream projects and users
29
29
30
-
# Solutions
30
+
##Solutions
31
31
32
32
The following are potential solutions that have been proposed to this problem:
33
33
@@ -37,21 +37,21 @@ The following are potential solutions that have been proposed to this problem:
37
37
* Audit code clones/artifact downloads
38
38
* Incentivise/Offer users a mailing list/update stream to which they can subscribe
39
39
40
-
# Resulting Context
40
+
##Resulting Context
41
41
42
42
TBD
43
43
44
-
# Known Instances
44
+
##Known Instances
45
45
46
46
TBD
47
47
48
-
# Authors
48
+
##Authors
49
49
50
50
* Georg Grütter (Robert Bosch GmbH)
51
51
* Raimund Hook (EXFO Inc)
52
52
* Katrina Novakovic (RedHat)
53
53
54
-
# Status
54
+
##Status
55
55
56
56
* Initial
57
57
* Drafted at the 2019 Spring InnerSource Commons Summit in Galway - 10 April 2019
Copy file name to clipboardExpand all lines: patterns/1-initial/explicit-shared-ownership.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,28 +1,28 @@
1
-
# Title
1
+
##Title
2
2
3
3
Explicit Shared Ownership
4
4
5
5
## Patlet
6
6
7
7
A software component that several teams depend on has grown to the point where owners are no longer capable of taking full ownership. There is confusion who to involve for changes. Sharing ownership explicitly and making expected behavior visible removes ambiguity. Writing a contributions document creates a natural way to evolve ownership.
8
8
9
-
# Problem
9
+
##Problem
10
10
11
11
An organization is already using InnerSource best practices in several teams. The architecture of the software offered has grown organically.
12
12
13
13
While talking about code ownership and accountability, teams notice that there is a component that is in a worrying state: Developed by an original team of authors it has grown it's userbase way beyond what the original team can handle. From time to time others step up to help out, however there is no formal process established. As a result, conflicts arise around who should do the work, and who should decide on project direction.
14
14
15
15
Simply forking the component would lead to a lot of duplication and wasted effort. Therefore the involved teams are looking for a less intrusive solution to the issue.
16
16
17
-
# Context
17
+
##Context
18
18
19
19
- Teams are working independently but are providing one common platform as a service.
20
20
21
21
- The software they are working on has been evolving for a long time. Engineers working on sub-modules have changed over time.
22
22
23
23
- One component is in widespread use but ownership is unclear.
24
24
25
-
# Forces
25
+
##Forces
26
26
27
27
- Ownership of one component is unclear.
28
28
@@ -31,13 +31,13 @@ Simply forking the component would lead to a lot of duplication and wasted effor
31
31
- There may be people dependent on the module that are not yet known.
32
32
There often is fear around maintenance efforts arising from unwanted attribution to the project.
33
33
34
-
# Solution
34
+
##Solution
35
35
36
36
Use the issue/ pull-request mechanics that work so well for code modifications to modify the way the component is developed:
37
37
38
38
A volunteer creates an issue in the component's repository highlighting the apparent unclarity or even lack of ownership. Subsequently a volunteer (can be the same person) creates a suggestion for how the project should be developed going forward including a proposed list of initial [Trusted Committers](../2-structured/trusted-committer.md). This suggestion is posted to the project's documentation (e.g. it's `README.md` file) as a pull request. This pull request is left open and shared with all people affected by the change. Feedback can be given and integrated asynchronously. Development of the final state is transparent for everyone.
39
39
40
-
# Resulting Context
40
+
##Resulting Context
41
41
42
42
There is an initial team of [Trusted Committers](../2-structured/trusted-committer.md) committed to the component.
43
43
@@ -47,7 +47,7 @@ The entire decision process backing the result is transparent and can be influen
47
47
48
48
There is a proven way to adjust the setup in the future.
0 commit comments