mirror of
https://github.com/zoo-apps/papers.git
synced 2026-10-30 14:56:54 +00:00
29 lines
1.0 KiB
TeX
29 lines
1.0 KiB
TeX
\section{Security Considerations}
|
|
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{S3 credentials}: Stored in Kubernetes secrets,
|
|
never in ConfigMaps or container images. Accessed via
|
|
\texttt{LITESTREAM\_ACCESS\_KEY\_ID} and
|
|
\texttt{LITESTREAM\_SECRET\_ACCESS\_KEY} environment variables.
|
|
|
|
\item \textbf{At-rest encryption}: WAL segments encrypted with
|
|
\texttt{hanzoai/age} (X25519 + ChaCha20-Poly1305). Even if
|
|
the S3 bucket is compromised, data is unreadable without the
|
|
age secret key.
|
|
|
|
\item \textbf{Per-org isolation}: Base already encrypts each
|
|
org's SQLite shard with a unique DEK derived via HKDF.
|
|
Replicate streams the encrypted bytes --- it never sees
|
|
plaintext org data.
|
|
|
|
\item \textbf{Network policy}: The replicate sidecar only needs
|
|
egress to the S3 service (\texttt{s3.zoo.svc.cluster.local:9000}).
|
|
A NetworkPolicy can restrict this.
|
|
|
|
\item \textbf{Key rotation}: Age key rotation requires a
|
|
re-snapshot. The apply script can trigger this via
|
|
\texttt{replicate snapshots create}.
|
|
\end{enumerate}
|
|
|