Przejdź do treści
WbudowaneSerwery i kontenery

Usługi systemd, które pobierają sekrety z Crunu

Uruchom agenta Crunu jako izolowaną usługę systemd na Linuksie, startuj swoje usługi przez crunu run albo zapisz plik env dla EnvironmentFile= przez crunu pull.

Obsługa
Działa z Crunu już dziś: obsługa systemd jest częścią produktu.
Funkcje Crunu
Maszyny i Reguły sieciowe
Sprawdzono
Z wersją Crunu 6.0.0, 27 października 2026
Przykład. Kiteline to fikcyjna firma.

Funkcje Crunu, które działają z systemd

Każda z poniższych funkcji działa tak samo w każdej integracji: serwer przechowuje zaszyfrowane dane, a odszyfrować je mogą tylko osoby, maszyny i tokeny, którym dasz dostęp.

  • Maszyny

    Zarejestruj serwer jednorazowym kodem, a agent crunu trzyma jego środowiska w pamięci i uruchamia z nimi twoje programy.

    Dowiedz się więcej

  • Reguły sieciowe

    Wydawaj zawartość środowiska tylko dozwolonym sieciom IPv4 i IPv6, z podpisanymi regułami, których nie da się po cichu złagodzić.

    Dowiedz się więcej

Jak to działa z systemd

Na tej stronie

Co Crunu robi z systemd

Na serwerze z Linuksem agent crunu działa jako usługa systemd crunu-agent. Loguje się własnymi kluczami maszyny, sprawdza serwer co minutę, trzyma odszyfrowane środowiska tylko w pamięci i przekazuje je crunu run przez lokalne gniazdo. Twoja usługa startuje przez crunu run i dostaje zmienne od agenta, więc nic nie trafia na dysk.

W ten sposób Crunu trzyma też production z dala od CI: serwer produkcyjny sam pobiera swoje środowisko, a potok tylko dostarcza kod i restartuje usługę.

Rejestracja maszyny

W Crunu otwórz Machines i wybierz New machine. Wybierz jej środowiska i sposób dostarczania, a potem skopiuj polecenie instalacji z okna Enroll machine. Instaluje ono agenta, sprawdza SHA-256 pliku binarnego i rejestruje maszynę jednorazowym kodem odczytywanym ze stdin:

Shell
printf '%s\n' 'crunu_enr_…' | sudo sh install.sh --version 6.0.0 --sha256 amd64=<sum> --sha256 arm64=<sum> --base-url https://releases.crunu.com/6.0.0 --server https://app.crunu.com --enroll -

Okno samo wpisuje kod rejestracji i sumy kontrolne. Wydania agenta są publikowane na releases.crunu.com: wersja 6.0.0 ma pliki binarne dla Linuksa i macOS, pakiety .deb, install.sh i podpisany manifest. Na serwerze, który prowadzisz samodzielnie, okno pokazuje adresy skonfigurowane na tym serwerze. Kod jest domyślnie ważny 15 minut i zużywa się przy pierwszym przedstawieniu. crunu enroll wypisuje odcisk klucza maszyny; zatwierdź maszynę w Machines, gdy sprawdzisz, że odcisk się zgadza.

Instalator jest testowany z systemd na Ubuntu 24.04, Ubuntu 22.04 i Debianie 12. Budowany jest też pakiet .deb dla amd64 i arm64.

Uruchamianie usługi przez crunu run

INI
# /etc/systemd/system/payments-api.service
[Service]
User=payments
ExecStart=/usr/local/bin/crunu run --env payments-api/production --restart on-change -- /opt/payments-api/bin/server

Użytkownik usługi musi należeć do grupy crunu, do której należy gniazdo agenta. Z --restart on-change polecenie crunu run uruchamia twój program ponownie po zmianie wartości: wysyła SIGTERM, a potem SIGKILL, jeśli program nie zatrzymał się w czasie przewidzianym na zatrzymanie, i uruchamia go ponownie z nowymi zmiennymi. Do dziennika trafiają tylko nazwy zmienionych zmiennych. Sygnały od systemd są przekazywane twojemu programowi, a jego kod wyjścia staje się kodem wyjścia crunu run.

Program dostaje czyste środowisko: krótką listę dozwolonych zmiennych, takich jak PATH, HOME i LANG, oraz zmienne środowiska Crunu.

Albo plik dla EnvironmentFile=

Jeśli jednostka ma odczytywać zmienne z pliku, crunu pull może zapisać je jako jeden plik env z uprawnieniami 0600:

Shell
crunu pull --env payments-api/production --env-out /etc/payments-api/env

Wskaż tę ścieżkę w EnvironmentFile= jednostki. Wartości są wtedy na dysku, czytelne dla roota i właściciela pliku, a Crunu nie usuwa później tego pliku. Gdy możesz, wybieraj crunu run.

Jak zabezpieczona jest usługa agenta

  • Jednostka działa jako użytkownik crunu bez uprawnień (capabilities), z ProtectSystem=strict, katalogiem domowym tylko do odczytu, prywatnymi /tmp i urządzeniami oraz SystemCallFilter ograniczonym do zwykłych wywołań usługi.
  • Zrzuty pamięci są wyłączone, a na Linuksie agent jest odizolowany od innych procesów tego samego użytkownika.
  • Pliki stanu są zapisywane atomowo. Agent zapisuje najnowszy zweryfikowany stan, zanim go wyda, więc po restarcie serwer nie może go po cichu cofnąć.

Obsługa

Shell
sudo systemctl enable --now crunu-agent
sudo systemctl kill -s HUP crunu-agent
crunu status

Pierwsze polecenie uruchamia agenta, gdy maszyna jest już zarejestrowana. SIGHUP sprawia, że agent sprawdza serwer od razu, a nie w następnej minucie. crunu status pokazuje maszynę, jej organizację i odciski kluczy, dzierżawę i każde środowisko.

Jeśli serwer jest nieosiągalny, agent wydaje ostatni zweryfikowany stan do końca dzierżawy, domyślnie przez 24 godziny. Po odebraniu dostępu maszynie agent, o ile jest online, usuwa jej środowiska z pamięci w ciągu kilku minut.

Zobacz także

Odpowiedzi na pytania

Nie ma tu odpowiedzi? Napisz na support@crunu.com, a odpowie ci człowiek.

Czy sekrety są zapisywane na dysku?

Nie przy crunu run: agent trzyma środowiska w pamięci i przekazuje je przez lokalne gniazdo. crunu pull --env-out zapisuje plik tylko wtedy, gdy o to poprosisz.

Co się dzieje, gdy serwer jest nieosiągalny?

Agent wydaje ostatni zweryfikowany stan do końca dzierżawy, domyślnie przez 24 godziny.

Czy usługa działa na macOS?

Nie. Usługa w tle działa tylko na Linuksie. Na macOS crunu działa jako narzędzie wiersza poleceń.

Wypróbuj z systemd

Utwórz organizację na app.crunu.com, dodaj jedno środowisko i je podłącz. Bezpłatnie we wczesnym dostępie.