Reference
Credentials
Four ways a volume can authenticate, resolved in a fixed order, and the rules that stop a half-configured secret from failing quietly.
Credentials#
Resolved per volume, in this order. The first that applies wins.
- Presigned mode, when
presignEndpointis set. The node holds no S3 credentials at all; the driver asks a signer service for a fresh URL per upload. Combining it with static credential keys in the same secret is rejected, since that would ship to the node exactly what the mode exists to avoid. - Per-volume secret via
nodePublishSecretRef, with keysaccessKeyId,secretAccessKey, optionalsessionToken, orpresignTokenfor presigned mode. - Driver-global
S3A_ACCESS_KEY_ID,S3A_SECRET_ACCESS_KEYandS3A_SESSION_TOKEN. - AWS default provider chain, which is what makes IRSA, EKS Pod Identity and node instance profiles work with no driver configuration at all.
apiVersion: v1
kind: Secret
metadata:
name: s3-creds
namespace: team-a
stringData:
accessKeyId: AKIAEXAMPLE
secretAccessKey: "…"
---
# in the pod spec
csi:
driver: s3archiver.csi.trion.de
volumeAttributes:
bucket: prod-dumps
nodePublishSecretRef:
name: s3-credsThe repository ships a reference signer for presigned mode, run as
csi-s3-archiver presign-signer. It reads S3A_PRESIGN_PORT, S3A_PRESIGN_TOKEN (the bearer
token the driver must present) and S3A_PRESIGN_EXPIRY_SECONDS, and it holds the S3
credentials the nodes do not. It is a starting point rather than a product: One static token,
no TLS termination, no rate limiting and no audit log.
The security page says what you would need to add.