fix(vault): a hoszt Vault-hitelesítése jusson el a konténerbe - #2
Merged
Conversation
… a három módon, ahogy eddig nem
A `make release` "[FATAL] VAULT_ADDR and VAULT_TOKEN must be set" hibát adott
egy olyan shellből, ahol MINDKETTŐ be volt állítva. Három külön ok volt, és
mindegyik félrevezető hibaüzenetet szült.
1. A konténer sosem látta a hitelesítő adatokat
A docker-compose.yml LÉTREHOZÁSKOR helyettesíti be a ${VAULT_ADDR}-t és a
${VAULT_TOKEN}-t. Egy builder, amit a token exportálása ELŐTT indítottak,
üres sztringeket kap, és azokat hordozza az élettartamára. Konkrétan ez
történt: a konténer 2026-08-10 21:21-kor indult egy olyan munkamenetből, ahol
a változók nem voltak beállítva.
2. A 127.0.0.1 mást jelent a konténerben
VAULT_ADDR=https://127.0.0.1:18200 a hoszton helyes, a konténerben a SAJÁT
loopbackjára mutat → "Connection refused", olyan tracebackkel, ami egy szót sem
szól névterekről. Mérve: a konténerből a 127.0.0.1:18200 elérhetetlen, a
host.docker.internal:18200 HTTP 200 — a compose az extra_hosts-ot már ma is
biztosítja.
3. A TLS rossz okból kapcsolt ki
A compiler.py a VAULT_CACERT-et olvassa, a hoszt konvenciója viszont
VAULT_CA_CERT_FILE, és a fájl a $XDG_RUNTIME_DIR alatt van, ami nincs
mountolva. Így a hitelesítés csendben "disabled"-re esett vissza —
FELESLEGESEN: a szerver tanúsítványának SAN-ja tartalmazza a
host.docker.internal-t, tehát az ellenőrzés sikerülne.
subject=CN = localhost
SAN: DNS:localhost, IP:127.0.0.1, DNS:host.docker.internal
A tools/vault-exec.sh mindhármat kezeli: exec-időben adja át a tokent, a címben
a hoszt-részt átírja, a CA-t bemásolja a mountolt fába és rámutat. Lemérve:
TLS-ELLENŐRZÉSSEL HTTP 200 a konténerből.
Ha nincs CA, a script MEGÁLL, nem esik vissza ellenőrzés nélküli kapcsolatra:
az aláíró token többet ér, mint egy megszakadt release kellemetlensége.
---
[signing-metadata]
key = cic-my-sign-key
signature = vault:v1:MEUCIQCGMIJx2Hwh9nEYAZw72loPrNpAZFm48CcHYIfdBmz7lAIgNNW5dc5EnZQ6G8/aoa22j5YdDFjI0MQKggTRVwMjixU=
hash-algorithm = sha256
digest = Fh0Ev0LWTV/GKIa5FR875KFKz/27e4MFzWT2VAI1cD0=
[certificate]
-----BEGIN CERTIFICATE-----
MIICBjCCAaygAwIBAgIUSnRMR6RPnEbg296XWPOqq/u5PCwwCgYIKoZIzj0EAwIw
QzELMAkGA1UEBhMCSFUxGTAXBgNVBAoMEENlbnRyYWxJbmZyYUNvcmUxGTAXBgNV
BAMMEENJQyBEZXZlbG9wZXIgQ0EwHhcNMjYwMzIwMTMyMjU5WhcNMjYxMjMxMTMy
MjU5WjBFMQswCQYDVQQGEwJIVTEZMBcGA1UECgwQQ2VudHJhbEluZnJhQ29yZTEb
MBkGA1UEAwwSR2Fib3IgWm9sdGFuIFNpbmtvMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEIG2CVmTfmLB9pLLclj7YmP2eedAjklpy4LGrU2ijoiy6Xqpuybv7OgJe
i+ez31s65NEV8+X/ByeX1cstR988z6N8MHowCQYDVR0TBAIwADAdBgNVHQ4EFgQU
yZN6AIX/TNnIJ9GwAa/NRN3ujHAwHwYDVR0jBBgwFoAUXn6CHYzPUqU4JVP8g+OS
WeDYjhcwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDAKBggqhkjOPQQDAgNIADBFAiEA+bFzXRoJ4PCQbhAAtpkcMjt0vNj5rEW0
lOMBGDNyaWkCIB1vmM7PcZzv/c9bIrxF5kqv6QXomouhByUfeNUTbpKW
-----END CERTIFICATE-----
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A
make releaseezt adta egy olyan shellből, ahol mindkét változó be volt állítva:Három külön ok, mindegyik félrevezető hibaüzenettel.
1. A konténer sosem látta őket
A
docker-compose.ymllétrehozáskor helyettesíti be a${VAULT_ADDR}-t és a${VAULT_TOKEN}-t. Egy builder, amit a token exportálása előtt indítottak, üres sztringeket kap és azokat hordozza az élettartamára.Konkrétan ez történt: a konténer
2026-08-10 21:21-kor indult — általam, egy olyan munkamenetből, ahol a változók nem voltak beállítva.2. A
127.0.0.1mást jelent a konténerbenA hoszton helyes, a konténerben a saját loopbackjára mutat →
Connection refused, olyan tracebackkel, ami egy szót sem szól névterekről.A compose az
extra_hosts: host.docker.internal:host-gateway-t már ma is biztosítja.3. A TLS rossz okból kapcsolt ki
A
compiler.pyaVAULT_CACERT-et olvassa, a hoszt konvenciója viszontVAULT_CA_CERT_FILE, és a fájl a$XDG_RUNTIME_DIRalatt van, ami nincs mountolva. Így a hitelesítés csendben „disabled"-re esett — feleslegesen:A tanúsítvány SAN-ja tartalmazza a
host.docker.internal-t, tehát az ellenőrzés sikerül. Lemérve: TLS-ellenőrzéssel HTTP 200 a konténerből.A megoldás
tools/vault-exec.shmindhármat kezeli: exec-időben adja át a tokent (nem függ attól, ki és mikor indította a konténert), a címben átírja a hoszt-részt, a CA-t bemásolja a mountolt fába és rámutat.Ha nincs CA, a script megáll — nem esik vissza ellenőrzés nélküli kapcsolatra. Az aláíró token többet ér, mint egy megszakadt release kellemetlensége.
Ez a release előfeltétele
A
primitives/releases/v0.2.0ágon amake releaseenélkül nem fut le. Javaslat: ez a PR menjen előbb, utána a release-ág rebase-elvemain-re, és onnan amake release.