Skip to content

Commit 673d656

Browse files
committed
chore: update self-assessment for external-secrets-operator project
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
1 parent f8e0175 commit 673d656

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

community/assessments/projects/external-secrets/self-assessment.md

+26-17
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ This assessment was created by community members as part of the [Security Pals](
2121

2222
## Metadata
2323

24-
| | |
24+
| | |
2525
| -- | -- |
26-
| Assessment Stage | Incomplete |
26+
| Assessment Stage | Incomplete |
2727
| Software | A link to the External-Secret Operator's repository: [external-secrets](https://github.com/external-secrets/external-secrets) |
2828
| Security Provider | No - Primary function is to sync passwords from external secret store to k8 clusters.|
2929
| Languages | Go, HCL, Makefile, Shell, Smarty, Dockerfile |
@@ -59,9 +59,9 @@ The External Secrets Operator (ESO) is a tool designed for Kubernetes, a widely-
5959
* Employs custom resource definitions (CRDs) like ExternalSecret to define how external secrets should be fetched and synchronized.
6060
* Isolation: Kubernetes Role-Based Access Control (RBAC) limits potential lateral movement in case of a compromise.
6161
* For the External Secrets Operator (ESO), the key actors based on its [architecture](https://external-secrets.io/latest/api/components/), which includes the Core Controller, the Cert Controller, and the Webhook, can be described as follows:
62-
* Core Controller: The Core Controller is the primary component of ESO. It watches for `ExternalSecret` objects in Kubernetes and acts upon changes to these objects. It is responsible for fetching the secrets from external secret management systems and synchronizing them with Kubernetes Secrets.
62+
* Core Controller: The Core Controller is the primary component of ESO. It watches for `ExternalSecret` objects in Kubernetes and acts upon changes to these objects. It is responsible for fetching the secrets from external secret management systems and synchronizing them with Kubernetes Secrets.
6363
* Cert Controller: The Cert Controller is responsible for managing the TLS certificates that are used for secure communication within the Kubernetes cluster, particularly for the webhook service.
64-
* Webhook: The Webhook in ESO is used for various purposes, including mutating or validating `ExternalSecrets` and other related custom resources. It plays a critical role in ensuring the integrity and correctness of the `ExternalSecret` resources.
64+
* Webhook: The Webhook in ESO is used for various purposes, including mutating or validating `ExternalSecrets` and other related custom resources. It plays a critical role in ensuring the integrity and correctness of the `ExternalSecret` resources.
6565

6666

6767
#### 3. Kubernetes Secrets
@@ -74,7 +74,7 @@ The External Secrets Operator (ESO) is a tool designed for Kubernetes, a widely-
7474

7575

7676
### Actions
77-
The actions performed by ESO to synchronize secrets from external sources into Kubernetes can be outlined focusing on security checks, data handling, and interactions:
77+
The actions performed by ESO to synchronize secrets from/to external sources from/into Kubernetes can be outlined focusing on security checks, data handling, and interactions:
7878

7979
#### 1. Client Request to External Secret Management System
8080
ESO, acting as a client, sends a request to an external secret management system (like AWS Secrets Manager). This request includes authentication and authorization checks to ensure that ESO is permitted to access the requested secrets.
@@ -88,7 +88,10 @@ ESO validates the format and integrity of the received secrets. If necessary, it
8888
#### 4. Synchronization to Kubernetes Secrets
8989
ESO then creates or updates Kubernetes Secret objects with the retrieved data. This step involves interacting with the Kubernetes API server, which includes RBAC checks to ensure that ESO has the necessary permissions to perform these operations.
9090

91-
#### 5. Use by Kubernetes Workloads
91+
#### 5. Synchronization to Remote Provider
92+
ESO can synchronize secrets back to the provider using PushSecrets. It will keep the remote secret updated based on metadata provided by the user and information about the provider. Based on policy, if the local secret is deleted, remote secrets can either be orphaned or deleted completely.
93+
94+
#### 6. Use by Kubernetes Workloads
9295
Applications or workloads running in Kubernetes can then access these secrets. Access to these secrets within Kubernetes is controlled by namespace-specific policies and RBAC, ensuring that only authorized workloads can retrieve them.
9396

9497
To outline the actions performed by different components of the External Secrets Operator (ESO) that enable its proper functioning, we can break it down as follows:
@@ -98,6 +101,7 @@ To outline the actions performed by different components of the External Secrets
98101
* Secret Retrieval: Fetches secrets from external secret management systems (like AWS Secrets Manager, HashiCorp Vault) based on the details specified in ExternalSecret objects.
99102
* Data Transformation: Converts the fetched secrets into a format compatible with Kubernetes Secrets, if necessary.
100103
* Secret Synchronization: Creates or updates corresponding Kubernetes Secret objects with the fetched data, ensuring they are in sync with the external source.
104+
* Secret Push: Updates remote secrets at the provider based on the provided secret, transforming the secret if template data is provided by the user.
101105

102106
#### 2. Cert Controller Actions:
103107
* Certificate Generation: Automatically generates and renews TLS certificates needed for the secure functioning of webhooks.
@@ -109,19 +113,25 @@ To outline the actions performed by different components of the External Secrets
109113
* Mutation: Optionally modifies ExternalSecret objects as per predefined rules or logic to ensure they meet certain criteria or standards before processing.
110114

111115

112-
113116
### Goals
114-
117+
115118
#### 1. Secure Secret Management
116119
ESO's primary goal is to securely manage secrets within Kubernetes by leveraging external secret management systems. It ensures that sensitive information like API keys, passwords, and tokens are stored and managed in systems specifically designed for this purpose, offering robust security features.
117120

118121
#### 2. Automated Synchronization
119122
ESO automates the synchronization of secrets from these external systems into Kubernetes, ensuring that applications always have access to the latest version of each secret.
120123

121-
#### 3. Access Control
124+
#### 3. Automated Synchronization Back to the Provider
125+
Using PushSecrets, ESO can synchronize secrets FROM the Kubernetes cluster TO the remote provider. This is useful for backing up keys, sharing secrets between multiple clusters, maintaining a central secret manager that operates as a single source of truth.
126+
127+
#### 4. Generate Temporary Secrets for Ephemeral usage
128+
129+
With Generators it's possible to create temporary credentials for various puroses such as: STS token for AWS, Random Password, ECR access token, vault token, various webhook and more. These can easily be regenerated on a timer or manually.
130+
131+
#### 5. Access Control
122132
By integrating with external secret managers, ESO inherits and enforces their access control mechanisms. It guarantees that only authorized parties can retrieve or modify the secrets, both in the external systems and when they are injected into Kubernetes.
123133

124-
#### 4. Encryption and Integrity
134+
#### 6. Encryption and Integrity
125135
ESO ensures that the transmission of secrets from external systems to Kubernetes is secure, maintaining the confidentiality and integrity of the data throughout the process.
126136

127137

@@ -136,7 +146,7 @@ ESO does not function as an intrusion detection or prevention system. It does no
136146
#### 3. Full Lifecycle Management of Secrets
137147
The primary role of ESO is to synchronize secrets from external systems to Kubernetes. It does not manage the full lifecycle (like creation, rotation, and deletion) of secrets within the external systems.
138148

139-
Caveat: With generators managing the full lifecycle is possible, given that the external provider allows a mechanism to do that (like with vault dynamic secrets). Example: [True Secrets Auto Rotation with ESO and Vault](https://dev.to/canelasevero/true-secrets-auto-rotation-with-eso-and-vault-1g4o).
149+
Caveat: With generators and PushSecrets managing the full lifecycle is possible, given that the external provider allows a mechanism to do that (like with vault dynamic secrets). Example: [True Secrets Auto Rotation with ESO and Vault](https://dev.to/canelasevero/true-secrets-auto-rotation-with-eso-and-vault-1g4o).
140150

141151
#### 4. Direct Security Auditing or Compliance Assurance
142152
ESO does not perform security auditing or provide direct compliance assurance. It relies on the security and compliance features of the external secret management systems it integrates with.
@@ -154,7 +164,7 @@ This document provides the CNCF TAG-Security with an initial understanding of ES
154164

155165
### Critical Components
156166
* Authentication and Authorization Interface: Connects with external secret management systems; ensures only authenticated and authorized access to secrets.
157-
* Secret Synchronization Mechanism: Securely transfers secrets from external systems to Kubernetes, critical for maintaining the confidentiality and integrity of secret data.
167+
* Secret Synchronization Mechanism: Securely transfers secrets from/to external systems to/from Kubernetes, critical for maintaining the confidentiality and integrity of secret data.
158168
* Kubernetes Secrets Management: Handles the creation and updating of Kubernetes Secrets, a fundamental aspect of ensuring that only authorized Kubernetes workloads can access the synchronized secrets.
159169

160170
### Security Relevant Components.
@@ -164,7 +174,7 @@ This document provides the CNCF TAG-Security with an initial understanding of ES
164174

165175
## Project Compliance
166176

167-
* Compliance - No specific compliance certifications or adherence to standards like PCI-DSS, COBIT, ISO, or GDPR have been documented.
177+
* Compliance - No specific compliance certifications or adherence to standards like PCI-DSS, COBIT, ISO, or GDPR have been documented.
168178

169179
## Secure Development Practices
170180

@@ -174,11 +184,10 @@ This document provides the CNCF TAG-Security with an initial understanding of ES
174184
* Code changes are submitted via Pull Requests (PRs) and must be reviewed and approved by at least one maintainer.
175185
* Commits to the `main` branch are merged only when a PR is approved and passes all checks.
176186
* Once a pull request has been opened it will be assigned to a reviewer from external-secrets/maintainers.
177-
* ESO uses the GitHub Bot [Paul the Alien](https://github.com/apps/paul-the-alien) (which is still in Alpha) to store the list of maintainers, to approve/merge PRs and to delete branches after PR merges.
178187
* Raising a PR triggers a series of GitHub actions and workflows whose component checks are broken down below:
179188
* [Sonar Cloud Quality Gate](https://sonarcloud.io/project/issues?id=external-secrets_external-secrets) check initiated by the sonarcloud bot which checks for bugs, vulnerabilities, security hotspots, code smells, code coverage and duplication
180189
* Developer Certificate of Origin (DCO) check to verify commits are signed correctly
181-
* Detect noop ([skip-duplicate-actions](https://github.com/fkirc/skip-duplicate-actions))
190+
* Detect noop ([skip-duplicate-actions](https://github.com/fkirc/skip-duplicate-actions))
182191
* Linting check
183192
* Diff check
184193
* Unit tests
@@ -206,7 +215,7 @@ This document provides the CNCF TAG-Security with an initial understanding of ES
206215

207216
### Ecosystem
208217
* ESO has replaced the now deprecated and archived kubernetes-external-secrets as detailed in this [issue](https://github.com/external-secrets/kubernetes-external-secrets/issues/864). It can be expected that the services that used kubernetes-external-secrets will migrate to ESO in the future.
209-
* ESO also maintains an official list of its [Adopters](https://github.com/external-secrets/external-secrets/blob/main/ADOPTERS.md).
218+
* ESO also maintains an official list of its [Adopters](https://github.com/external-secrets/external-secrets/blob/main/ADOPTERS.md).
210219

211220
## Security Issue Resolution
212221
ESO's security policy can be found in [SECURITY.md](https://github.com/external-secrets/external-secrets/blob/main/SECURITY.md).
@@ -242,7 +251,7 @@ A few general use cases are available below followed by a case study:
242251

243252
* Use Case 1: Managing secrets for multiple environments
244253

245-
A company has multiple environments for their applications, such as development, staging, and production. They use different credentials for each environment to access external resources, such as databases and cloud storage. ESO can be used to automatically synchronize these credentials to the appropriate Kubernetes secrets for each environment. This makes it easy to manage secrets and ensures that applications always have access to the correct credentials.
254+
A company has multiple environments for their applications, such as development, staging, and production. They use different credentials for each environment to access external resources, such as databases and cloud storage. ESO can be used to automatically synchronize these credentials to the appropriate Kubernetes secrets for each environment. This makes it easy to manage secrets and ensures that applications always have access to the correct credentials.
246255

247256
* Use Case 2: Rotating secrets for security
248257

0 commit comments

Comments
 (0)