Skip to content

Commit 73d77e9

Browse files
Merge pull request #989 from mandy-chessell/code2024
Add more on the YAML File Secrets Connector
2 parents 5a1334f + 201cd33 commit 73d77e9

File tree

10 files changed

+80
-18
lines changed

10 files changed

+80
-18
lines changed

CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ site/docs/services/omas/enterprise-architecture/ @mandy-chessell
5252
site/docs/services/omas/glossary-view/ @lcpopa
5353
site/docs/services/omas/stewardship-action/ @mandy-chessell
5454
site/docs/services/omas/governance-program/ @mandy-chessell
55-
site/docs/services/omas/governance-engine/ @mandy-chessell
55+
site/docs/services/omas/governance-server/ @mandy-chessell
5656
site/docs/services/omas/subject-area/ @davidradl
5757
site/docs/services/omas/asset-lineage/ @lcpopa @popa-raluca
5858

site/docs/concepts/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@
299299
- [Platform Metadata Security Connector](/concepts/platform-metadata-security-connector)
300300
- [Platform Security](/features/metadata-security/overview)
301301
- [Platform URL Root](/concepts/platform-url-root)
302+
- [Process](/concepts/process)
302303
- [Project](/concepts/project)
303304
- [Project Manager OMVS](/services/omvs/project-manager/overview)
304305
- [Project Management OMAS](/services/omas/project-management/overview)

site/docs/concepts/process.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
hide:
3+
- toc
4+
---
5+
6+
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
7+
<!-- Copyright Contributors to the Egeria project. -->
8+
9+
# Process
10+
11+
A *process* describes a well-defined set of processing steps and decisions that drive a particular aspect of the organization's business. Most processes are automated with software, but they may also be a manual procedure. An automated process can be invoked from a remote server through an API.
12+
13+
A process is a type of [asset](/concepts/asset). Egeria uses [Governance Action Processes](/concepts/governance-action-process) to automate governance.
14+
15+
16+
17+
--8<-- "snippets/abbr.md"

site/docs/connectors/connector-catalog.drawio

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8" pages="27">
1+
<mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17" pages="27">
22
<diagram id="zwH0E6yuSuxNEa-D1nxI" name="compare-use-of-connectors">
33
<mxGraphModel dx="1242" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
44
<root>
@@ -3777,17 +3777,31 @@
37773777
<mxCell id="jxgSa6bsgg5_kzLXStgE-6" value="Environment variable" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
37783778
<mxGeometry x="145" y="280" width="120" height="60" as="geometry" />
37793779
</mxCell>
3780-
<mxCell id="smZqJnJgsjUjO1HoDnpI-2" value="Consuming Connector" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;verticalAlign=top;" vertex="1" parent="1">
3780+
<mxCell id="smZqJnJgsjUjO1HoDnpI-2" value="Consuming Connector" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;verticalAlign=top;" parent="1" vertex="1">
37813781
<mxGeometry x="414" y="100" width="170" height="120" as="geometry" />
37823782
</mxCell>
3783-
<mxCell id="smZqJnJgsjUjO1HoDnpI-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="smZqJnJgsjUjO1HoDnpI-4" target="smZqJnJgsjUjO1HoDnpI-8">
3784-
<mxGeometry relative="1" as="geometry" />
3783+
<mxCell id="smZqJnJgsjUjO1HoDnpI-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=88.5;entryDy=0;entryPerimeter=0;" parent="1" source="smZqJnJgsjUjO1HoDnpI-4" target="bS2VUSNe2yy4efDYJTGr-1" edge="1">
3784+
<mxGeometry relative="1" as="geometry">
3785+
<mxPoint x="499.01" y="260" as="targetPoint" />
3786+
</mxGeometry>
37853787
</mxCell>
3786-
<mxCell id="smZqJnJgsjUjO1HoDnpI-4" value="YAML File&lt;div&gt;Secrets Store Connector&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
3788+
<mxCell id="smZqJnJgsjUjO1HoDnpI-4" value="YAML File&lt;div&gt;Secrets Store Connector&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
37873789
<mxGeometry x="428.88" y="140" width="140.25" height="65" as="geometry" />
37883790
</mxCell>
3789-
<mxCell id="smZqJnJgsjUjO1HoDnpI-8" value="mySecrets.&lt;div&gt;omsecrets&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" vertex="1" parent="1">
3790-
<mxGeometry x="459.01" y="260" width="80" height="100" as="geometry" />
3791+
<mxCell id="bS2VUSNe2yy4efDYJTGr-1" value="" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=23;" vertex="1" parent="1">
3792+
<mxGeometry x="410" y="260" width="200" height="120" as="geometry" />
3793+
</mxCell>
3794+
<mxCell id="bS2VUSNe2yy4efDYJTGr-2" value="&lt;span style=&quot;text-wrap: wrap;&quot;&gt;mySecrets.&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap; background-color: initial;&quot;&gt;omsecrets&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
3795+
<mxGeometry x="439" y="380" width="140" height="30" as="geometry" />
3796+
</mxCell>
3797+
<mxCell id="bS2VUSNe2yy4efDYJTGr-3" value="SecretsCollection" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
3798+
<mxGeometry x="439" y="280" width="120" height="60" as="geometry" />
3799+
</mxCell>
3800+
<mxCell id="bS2VUSNe2yy4efDYJTGr-4" value="SecretsCollection" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
3801+
<mxGeometry x="449" y="290" width="120" height="60" as="geometry" />
3802+
</mxCell>
3803+
<mxCell id="bS2VUSNe2yy4efDYJTGr-5" value="SecretsCollection" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;verticalAlign=middle;" vertex="1" parent="1">
3804+
<mxGeometry x="459" y="300" width="120" height="60" as="geometry" />
37913805
</mxCell>
37923806
</root>
37933807
</mxGraphModel>

site/docs/connectors/secrets/yaml-file-secrets-store-connector.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,28 @@
1212

1313
## Overview
1414

15-
The *YAML File Secrets Store Connector* retrieves secrets from environment variables. The name of the secret requested is the name of the environment variable it tries to retrieve. It returns null if the environment variable is not defined.
15+
The *YAML File Secrets Store Connector* is a [Secrets Store Connector](/concepts/secret-store-connector) that retrieves secrets from a named YAML file. By convention, these YAML files have a file extension of `omsecrets`.
1616

1717
![Figure 1](yaml-file-secrets-store-connector.svg)
1818
> **Figure 1:** Operation of the YAML File Secrets Store Connector
1919
20+
Secrets within the YAML file are organized into collections. Each collection represents a set of secrets needed by a particular type of caller. When the YAML File Secrets Store Connector starts up, it opens the YAML file using the address passed in the endpoint of its connection. It located the appropriate collection using the name specified in the `secretsCollectionName` property found in the connection's `configurationProperties`. The connector will fail if either of these two values are missing.
21+
22+
23+
24+
Inside a collection are:
25+
26+
* A refresh time interval (`refreshTimeInterval`) that defines how long the secrets can be cached. When the time expires, the connector retrieves the secrets from the cache.
27+
* A map of named secrets (`secrets`) - such as details of certificates or userId and passwords. These secrets are used by other connectors, and automated services to log on to remote services.
28+
* The details of an API to call to retrieve a token (`tokenAPI`). This includes the HTTP request type, URL and details fo the request and response body. This supplements the secrets map allowing certain secrets to be retrieved dynamically.
29+
* A map of userIds to user account details (`users`). This is needed by a connector that is supporting a user authentication service.
30+
* A map of named lists (`namedLists`) that is used to represent organizational units, security roles and groups needed by an authorization service.
31+
32+
Complete details of this structure can be found in [Egeria's Javadoc](https://odpi.github.io/egeria/org/odpi/openmetadata/adapters/connectors/secretsstore/yaml/secretsstore/package-summary.html) and an example can be found in [GitHub](https://github.com/odpi/egeria/tree/main/open-metadata-resources/open-metadata-deployment/secrets).
2033

2134
## Configuration
2235

23-
This is its connection definition to embed into a connector's connection object.
36+
This is its connection definition to embed into a calling connector's connection object.
2437

2538
!!! example "Connection configuration for the environment variable secrets store connector"
2639
```json linenums="1" hl_lines="14"
@@ -33,6 +46,15 @@ This is its connection definition to embed into a connector's connection object.
3346
{
3447
"class" : "ConnectorType",
3548
"connectorProviderClassName" : "org.odpi.openmetadata.adapters.connectors.secretsstore.yaml.YAMLSecretsStoreProvider"
49+
},
50+
"endpoint" :
51+
{
52+
"class" : "Endpoint",
53+
"address" : {{secretsStoreFileLocation}}
54+
},
55+
"configurationProperties" :
56+
{
57+
"secretsCollectionName" : {{secretsCollectionName}}
3658
}
3759
}
3860
}

site/docs/connectors/secrets/yaml-file-secrets-store-connector.svg

Lines changed: 1 addition & 1 deletion
Loading

site/docs/services/omes/context-event/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ An context event engine hosts specialized governance services called [context ev
2020

2121
The Context Event OMES is capable of hosting one or more [context event engines](/concepts/context-event-engine).
2222

23-
The context event engine services call the [Governance Engine Open Metadata Access Service (OMAS)](/services/omas/governance-engine/overview) running in an open metadata server to retrieve information about events and to store the results of the context event services' work.
23+
The context event engine services call the [Stewardship Action Open Metadata Access Service (OMAS)](/services/omas/stewardship-action/overview) running in an open metadata server to retrieve information about events and to store the results of the context event services' work.
2424

2525
--8<-- "snippets/abbr.md"

site/docs/services/omes/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The engine services run in the [engine host](/concepts/engine-host). They provi
1414
|-----------------------------------------------------------------------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------|
1515
| [Survey Action OMES](/services/omes/survey-action/overview) | [Survey Action Service](/concepts/survey-action-service) | [Asset Owner OMAS](/services/omas/asset-owner/overview) |
1616
| [Governance Action OMES](/services/omes/governance-action/overview) | [Governance Action Service](/concepts/governance-action-service) | [Governance Server OMAS](/services/omas/governance-server/overview) |
17-
| [Context Event OMES](/services/omes/context-event/overview) | [Context Event Service](/concepts/context-event-service) | [Stewardship Action OMAS](/services/omas/stewardship-action/overview) |
17+
| [Context Event OMES](/services/omes/context-event/overview) | [Context Event Service](/concepts/context-event-service) | [Stewardship Action OMAS](/services/omas/stewardship-action/overview) |
1818
| [Repository Governance OMES](/services/omes/repository-governance/overview) | [Repository Governance Service](/concepts/repository-governance-service) | [Repository Governance OMAS](/services/omrs) |
1919

2020

site/mkdocs.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ nav:
4848
- Connector Catalog:
4949
- Connector Overview: connectors/index.md
5050
- Secrets Store:
51+
- YAML File: connectors/secrets/yaml-file-secrets-store-connector.md
5152
- Environment Variables: connectors/secrets/environment-variable-secrets-store-connector.md
5253
- Files:
5354
- Any File:
@@ -545,7 +546,7 @@ nav:
545546
- Engine Services (OMES):
546547
- Open Metadata Engine Services: services/omes/index.md
547548
- Governance Action: services/omes/governance-action/overview.md
548-
- Context Event: services/omes/event-action/overview.md
549+
- Context Event: services/omes/context-event/overview.md
549550
- Survey Action: services/omes/survey-action/overview.md
550551
- Repository Governance: services/omes/repository-governance/overview.md
551552
- Integration Services (OMIS):
@@ -768,6 +769,7 @@ nav:
768769
- Placeholders: concepts/placeholder.md
769770
- Platform Metadata Security Connector: concepts/platform-metadata-security-connector.md
770771
- Platform URL Root: concepts/platform-url-root.md
772+
- Process: concepts/process.md
771773
- Project: concepts/project.md
772774
- pyegeria: concepts/pyegeria.md
773775
- Referenceable: concepts/referenceable.md

site/snippets/connectors/secrets-store-connector-intro.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@
22
<!-- Copyright Contributors to the Egeria project. -->
33

44

5-
The *secrets store connector* provides access to secrets such as passwords and certificates that are stored in a secure location. Its purpose is to remove the need to store secrets in Egeria's [configuration document](/concepts/configuration-document) or [open metadata repository](/concepts/open-metadata-repository). With the secrets store connector, it is possible to manage secrets relating to a resource or service connected to the open metadata ecosystem in secure vaults or services managed by the security team.
5+
The *secrets store connector* provides access to secrets such as passwords and certificates that are stored in a secure location. Its purpose is to remove the need to store secrets in Egeria's [configuration document](/concepts/configuration-document) or [open metadata repository](/concepts/open-metadata-repository).
6+
7+
With the secrets store connector, it is possible to manage:
8+
9+
* A user directory containing log-on information (userId, password), groups and roles to support an authentication service, such as a token issuing service.
10+
* Secrets needed by a connector or other type of automated service in order to connect to a remote service. This includes a description of the token API to call and the secret values to use.
11+
* Named lists of users, roles and groups that define access to specific resources. These list are used to to support a service that is providing authorization control, such as the [Open Metadata Security Connectors](/features/metadata-security/overview/).
612

713
The secrets store connector is typically embedded in a connector that needs one or more secrets to perform its tasks. Both connectors are initialised together by the [ConnectorBroker](/concepts/connector-broker). The secrets store connector is called by the surrounding connector to extract the needed secrets.
814

@@ -16,11 +22,11 @@ When the *ConnectorBroker* detects that there is a secrets connector embedded in
1622

1723
This means that even if the outer connector is written to expect these secrets in its connection object, they do not need to be stored in the connection object (ie in the configuration document or in the metadata store) but will be placed in the right fields by the [ConnectorBroker](/concepts/connector-broker).
1824

19-
If the name(s) of the secret(s) needed by the connector must be configured, they can be stored in the securedProperties. The connector code knows the logical name and it looks up the real secret's name in secured properties. Then the real secret's name is passed to the secrets store connector to do the look up for the secret value.
25+
If the name(s) of the secret(s) needed by the connector must be configured, they can be stored in the securedProperties. The connector code knows the logical name and it looks up the real secret's name in secured properties. Then the real secret's name is passed to the secrets store connector to do the look-up for the secret value.
2026

21-
![Secrets store connector](/connectors/secrets/secured-properties.svg)
27+
![Secured properties](/connectors/secrets/secured-properties.svg)
2228

23-
The picture below shows a practical example of using the secrets store connector. It is embedded in an [integration connector](/concepts/integration-connector) which is deployed in a secured data centre to harvest metadata which is stored in an external cloud service. The secrets store connector is initialized with the integration connector, both running in the secured data centre. The secrets store connector uses a secrets store located in the secured data centre and managed by the data centre's team. The data centre's team has complete control of the secrets that are being used by the integration connector and only the name of the secret is known outside of the secured data centre.
29+
The picture below shows a practical example of using the secrets store connector. It is embedded in an [integration connector](/concepts/integration-connector) which is deployed in a secured data centre to harvest metadata into a metadata repository running in an external cloud service. The secrets store connector is initialized with the integration connector, both running in the secured data centre. The secrets store connector uses a secrets store located in the secured data centre and managed by the data centre's team. The data centre's team has complete control of the secrets that are being used by the integration connector and only the name of the secret is known outside of the secured data centre.
2430

2531
![Secured data centre](/connectors/secrets/secrets-store-connector-example.svg)
2632

0 commit comments

Comments
 (0)