Replies: 2 comments 4 replies
-
If I understand accurately, this will end up putting secrets in plain text on the host disk. What mitigations are there for this extra "attack surface"? |
Beta Was this translation helpful? Give feedback.
-
The STRIDE model is a security framework designed to identify threats in a system, focusing on six categories: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege. Here's an analysis for the Workload BLOB caching system using the model. Spoofing:Threats:
Mitigation:
Tampering:Threats:
Mitigation:
Repudiation:Threats:
Mitigation:
Information Disclosure:Threats:
Mitigation:
Denial of Service:Threats:
Mitigation:
Elevation of Privilege:Threats:
Mitigation:
Another consideration: given that a controller restart clears the BLOB cache, we would need to ensure data integrity and availability by backing up essential data elsewhere. We should consider implementing persistent volumes in a future version. |
Beta Was this translation helpful? Give feedback.
-
Workspace BLOB Caching
This document outlines the design and architecture of the BLOB caching mechanism in TF-Controller. The primary goal of this mechanism is to efficiently address the resource deletion problem using the contents of generated Workspace BLOBs, ensuring a streamlined process for Terraform finalization.
Definitions
Workflow
Italics are already implemented steps. Bolds are steps proposed to implement.
The content of the Workspace file system is compressed using tar and gzip to produce the Workspace BLOB.
The TF-Controller retrieves this BLOB as a byte array via the return value of the CreateWorkspaceBlob gRPC function.
BLOB encryption
Encryption/decryption tasks to the runner, while the controller only manages the storage of encrypted BLOBs.
For each namespace in this setup, a service account (usually named tf-runner) is essential. The most appropriate encryption key in this case would be the token of this service account. This is natively supported by Kubernetes, as detailed in their official documentation: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#manually-create-a-long-lived-api-token-for-a-serviceaccount
STRIDE Analysis
The STRIDE model is a security framework designed to identify threats in a system, focusing on six categories: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege.
Here's an analysis for the Workload BLOB caching system using the model.
Spoofing:
Threats:
Mitigation:
Tampering:
Threats:
Mitigation:
Repudiation:
Threats:
Mitigation:
Information Disclosure:
Threats:
Mitigation:
Denial of Service:
Threats:
Mitigation:
Elevation of Privilege:
Threats:
Mitigation:
Note: Each namespace in the Helm Chart will require an additional secret.
For the first MVP of this BLOB caching, the default pod local volume will suffice. However, it's crucial to note that a Controller restart will clear the BLOB cache. Given that a controller restart clears the BLOB cache, we would need to ensure data integrity and availability by backing up essential data elsewhere. We should consider implementing persistent volumes in a future version.
Beta Was this translation helpful? Give feedback.
All reactions