chore: move generated secrets to separate directory

This commit is contained in:
oddlama 2023-07-31 12:42:46 +02:00
parent eeac57d30d
commit 788e7e3fa7
No known key found for this signature in database
GPG key ID: 14EFE510775FE39A
27 changed files with 42 additions and 63 deletions

59
flake.lock generated
View file

@ -47,12 +47,13 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1687304097, "lastModified": 1690798647,
"narHash": "sha256-VId0oZxpYm4HSHwbsuGKI84zFkL6Gp4wuoJbbl52oZg=", "narHash": "sha256-7871l3pVqSIozmY/31G2aJRVmbN3kHbxj+GP2LS9N6k=",
"owner": "oddlama", "ref": "refs/heads/main",
"repo": "agenix-rekey", "rev": "af31e2c282ab26d2c7bb3524f6508df1cb88ff10",
"rev": "b1811920562ba287b680f35644ce3ed78d029cdf", "revCount": 72,
"type": "github" "type": "git",
"url": "file:///root/projects/agenix-rekey"
}, },
"original": { "original": {
"owner": "oddlama", "owner": "oddlama",
@ -159,11 +160,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1690278259, "lastModified": 1690739034,
"narHash": "sha256-0Ujy0ZD1Yg5+QDaEnk4TeYhIZ6AckRORrXLGsAEhFKE=", "narHash": "sha256-roW02IaiQ3gnEEDMCDWL5YyN+C4nBf/te6vfL7rG0jk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "5b19fb2e74df312751cecbf0f668217eb59d9170", "rev": "4015740375676402a2ee6adebc3c30ea625b9a94",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -364,11 +365,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1690269402, "lastModified": 1690790567,
"narHash": "sha256-SybA24IOGigiHfcTB5eBge4UZQI6a0z8Ah+EzD17tdk=", "narHash": "sha256-fymHCZFy+qjrNh+EZDHYEEtbZw1TvjtxtCBPBSWU7CM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "0306d5ed7e9d1662b55ec0d08afc73d4cb5eadca", "rev": "729ab77f9e998e0989fa30140ecc91e738bc0cb1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -379,11 +380,11 @@
}, },
"impermanence": { "impermanence": {
"locked": { "locked": {
"lastModified": 1684264534, "lastModified": 1690797372,
"narHash": "sha256-K0zr+ry3FwIo3rN2U/VWAkCJSgBslBisvfRIPwMbuCQ=", "narHash": "sha256-GImz19e33SeVcIvBB7NnhbJSbTpFFmNtWLh7Z85Y188=",
"owner": "nix-community", "owner": "nix-community",
"repo": "impermanence", "repo": "impermanence",
"rev": "89253fb1518063556edd5e54509c30ac3089d5e6", "rev": "e3a7acd113903269a1b5c8b527e84ce7ee859851",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -414,10 +415,12 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1689768420, "lastModified": 1690673766,
"narHash": "sha256-j6i9S2UNoBIpkUvGmI3GZr+rX4YiwACZsMypwKJJ9Tw=", "narHash": "sha256-CXid4DnH57//153gEdI+E9Fljoy7LMpf3xhBI1C40bI=",
"type": "git", "owner": "astro",
"url": "file:///root/projects/microvm.nix" "repo": "microvm.nix",
"rev": "3183d2a0c00e25772ed3926a24908e3445c69bbc",
"type": "github"
}, },
"original": { "original": {
"owner": "astro", "owner": "astro",
@ -463,11 +466,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1690200740, "lastModified": 1690704397,
"narHash": "sha256-aRkEXGmCbAGcvDcdh/HB3YN+EvoPoxmJMOaqRZmf6vM=", "narHash": "sha256-sgIWjcz0e+x87xlKg324VtHgH55J5rIuFF0ZWRDvQoE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "ba9650b14e83b365fb9e731f7d7c803f22d2aecf", "rev": "96e5a0a0e8568c998135ea05575a9ed2c87f5492",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -499,11 +502,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1690179384, "lastModified": 1690640159,
"narHash": "sha256-+arbgqFTAtoeKtepW9wCnA0njCOyoiDFyl0Q0SBSOtE=", "narHash": "sha256-5DZUYnkeMOsVb/eqPYb9zns5YsnQXRJRC8Xx/nPMcno=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b12803b6d90e2e583429bb79b859ca53c348b39a", "rev": "e6ab46982debeab9831236869539a507f670a129",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -586,11 +589,11 @@
"nixpkgs-stable": "nixpkgs-stable_2" "nixpkgs-stable": "nixpkgs-stable_2"
}, },
"locked": { "locked": {
"lastModified": 1689668210, "lastModified": 1690743255,
"narHash": "sha256-XAATwDkaUxH958yXLs1lcEOmU6pSEIkatY3qjqk8X0E=", "narHash": "sha256-dsJzQsyJGWCym1+LMyj2rbYmvjYmzeOrk7ypPrSFOPo=",
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "eb433bff05b285258be76513add6f6c57b441775", "rev": "fcbf4705d98398d084e6cb1c826a0b90a91d22d7",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -17,8 +17,7 @@ in {
}; };
age.secrets.grafana-loki-basic-auth-password = { age.secrets.grafana-loki-basic-auth-password = {
rekeyFile = config.node.secretsDir + "/grafana-loki-basic-auth-password.age"; generator.script = "alnum";
generator = "alnum";
mode = "440"; mode = "440";
group = "grafana"; group = "grafana";
}; };

View file

@ -73,7 +73,9 @@ in {
}; };
systemd.services.kanidm = { systemd.services.kanidm = {
# TODO this doesn't suffice, percieved 1 in 50 this fails because kanidm starts too soon,
# a requiredforonline might be necessary
after = ["sys-subsystem-net-devices-${utils.escapeSystemdPath "proxy-sentinel"}.device"]; after = ["sys-subsystem-net-devices-${utils.escapeSystemdPath "proxy-sentinel"}.device"];
serviceConfig.RestartSec = "600"; # Retry every 10 minutes serviceConfig.RestartSec = "60"; # Retry every minute
}; };
} }

View file

@ -14,10 +14,7 @@ in {
networking.providedDomains.loki = lokiDomain; networking.providedDomains.loki = lokiDomain;
age.secrets.loki-basic-auth-hashes = { age.secrets.loki-basic-auth-hashes = {
rekeyFile = config.node.secretsDir + "/loki-basic-auth-hashes.age"; generator.script = "basic-auth";
# Copy only the script so the dependencies can be added by the nodes
# that define passwords (using distributed-config).
generator.script = config.age.generators.basic-auth.script;
mode = "440"; mode = "440";
group = "nginx"; group = "nginx";
}; };

View file

@ -1,9 +0,0 @@
age-encryption.org/v1
-> X25519 JkYU2Cl00JF/GhXzdpiUgflrbrccHJs21Fzu3Qaw5gE
fC1m7yieLy3DxiUyz7twBLpS7f81Jq59jWMYf1DgFBE
-> piv-p256 xqSe8Q AgV+3PVzCEKzk8BFNpxH3aQ+aEtUj8J/h+nvNStufABq
8kNzjmSyg2KsHtQT9ZEPHoL7zz8S/KM/u8yAu/vp8vs
-> {-grease tf)|=
cDF+oRa+QUDN9YzV7BnKiI94C7JkDw
--- B8X7W4qjJYPC4W7+hHgTLA34seGqgfJ24lrWA3q/Cgs
ý­!hdÎß`0ýœ”Áìú�Rýdµ0‚k-ç·¯© „/ðNêòìÌmø•‚¸x„Åy±Ä?7'š¡r®J=>  _¦¦\©„MMxðD˜™)

View file

@ -25,10 +25,10 @@
# current system due to yubikey availability. # current system due to yubikey availability.
forceRekeyOnSystem = builtins.extraBuiltins.unsafeCurrentSystem; forceRekeyOnSystem = builtins.extraBuiltins.unsafeCurrentSystem;
hostPubkey = config.node.secretsDir + "/host.pub"; hostPubkey = config.node.secretsDir + "/host.pub";
generatedSecretsDir = inputs.self.outPath + "/secrets/generated/${config.node.name}";
}; };
age.generators.dhparams.script = {pkgs, ...}: "${pkgs.openssl}/bin/openssl dhparam 4096"; age.generators.basic-auth = {
age.generators.basic-auth.script = {
pkgs, pkgs,
lib, lib,
decrypt, decrypt,

View file

@ -36,8 +36,7 @@ in {
config = mkIf config.services.nginx.enable { config = mkIf config.services.nginx.enable {
age.secrets."dhparams.pem" = { age.secrets."dhparams.pem" = {
rekeyFile = config.node.secretsDir + "/dhparams.pem.age"; generator.script = "dhparams";
generator = "dhparams";
mode = "440"; mode = "440";
group = "nginx"; group = "nginx";
}; };

View file

@ -25,8 +25,7 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
age.secrets.promtail-loki-basic-auth-password = { age.secrets.promtail-loki-basic-auth-password = {
rekeyFile = config.node.secretsDir + "/promtail-loki-basic-auth-password.age"; generator.script = "alnum";
generator = "alnum";
mode = "440"; mode = "440";
group = "promtail"; group = "promtail";
}; };

View file

@ -16,7 +16,6 @@
; ;
cfg = config.meta.telegraf; cfg = config.meta.telegraf;
nodeName = config.node.name;
in { in {
options.meta.telegraf = { options.meta.telegraf = {
enable = mkEnableOption (mdDoc "telegraf to push metrics to influx."); enable = mkEnableOption (mdDoc "telegraf to push metrics to influx.");
@ -92,7 +91,7 @@ in {
flush_interval = "20s"; flush_interval = "20s";
flush_jitter = "5s"; flush_jitter = "5s";
precision = "1ms"; precision = "1ms";
hostname = nodeName; hostname = config.node.name;
omit_hostname = false; omit_hostname = false;
}; };
outputs = { outputs = {

View file

@ -3,17 +3,7 @@
pkgs, pkgs,
... ...
}: { }: {
age.secrets.initrd_host_ed25519_key = { age.secrets.initrd_host_ed25519_key.generator.script = "ssh-ed25519";
rekeyFile = config.node.secretsDir + "/initrd_host_ed25519_key.age";
# Generate only an ssh-ed25519 private key
generator.script = {
pkgs,
lib,
...
}: ''
(exec 3>&1; ${pkgs.openssh}/bin/ssh-keygen -q -t ed25519 -N "" -f /proc/self/fd/3 <<<y >/dev/null 2>&1)
'';
};
boot.initrd.network.enable = true; boot.initrd.network.enable = true;
boot.initrd.network.ssh = { boot.initrd.network.ssh = {