File tree Expand file tree Collapse file tree 2 files changed +27
-1
lines changed
mkosi.images/terraform/share/terraform Expand file tree Collapse file tree 2 files changed +27
-1
lines changed Original file line number Diff line number Diff line change @@ -264,6 +264,7 @@ resource "vault_cert_auth_backend_role" "node" {
264264 vault_policy . node-cert-self-renew . name ,
265265 vault_policy . ssh-host-self-signer . name ,
266266 vault_policy . consul-gossip . name ,
267+ vault_policy . node-recovery-keys . name ,
267268 ]
268269}
269270
@@ -277,6 +278,22 @@ resource "vault_policy" "node-cert-self-renew" {
277278 EOP
278279}
279280
281+ resource "vault_policy" "node-recovery-keys" {
282+ name = " node-recovery-keys"
283+
284+ policy = <<- EOP
285+ # Allow nodes to create recovery keys for their own machine-id only (write-once, no read/update)
286+ # No read allowed because node does not need to read its own recovery key,
287+ # it is only needed to be read by admins to recover the node
288+ # No update allowed to avoid compromised node may update recovery key
289+ # Any update of recovery keys (even for rotating recovery keys) need admin actions
290+ # For which admin key should be used
291+ path "secrets/mangos/recovery-keys/{{identity.entity.metadata.machine_id}}/*" {
292+ capabilities = ["create"]
293+ }
294+ EOP
295+ }
296+
280297resource "vault_identity_group" "vault-servers" {
281298 name = " vault-servers"
282299 type = " internal"
Original file line number Diff line number Diff line change @@ -489,6 +489,11 @@ do_enroll() {
489489 entity_name=$( vault write -field=name identity/lookup/entity alias_name=${HOSTNAME} .mangos alias_mount_accessor=${node_auth_accessor} )
490490 echo $entity_name
491491
492+ step " Setting machine-id as entity metadata"
493+ machine_id=$( cat /etc/machine-id)
494+ vault write identity/entity/name/${entity_name} metadata=machine_id=" ${machine_id} "
495+ greenln Success
496+
492497 for group in ${! groups[@]}
493498 do
494499 do_step " Adding host to group '${group} '" chronic do_entity addgroup ${entity_name} ${group}
@@ -1046,7 +1051,11 @@ do_bootstrap() {
10461051 CONSUL_HTTP_TOKEN=${consul_mgmt_token} \
10471052 do_step " Final Terraform run" run_terraform_apply
10481053
1049- do_step " Enrolling recovery keys for encrypted partitions" enroll_recovery_keys " $( systemd-creds decrypt /var/lib/private/vault.root_token) "
1054+ echo
1055+ echo " Bootstrap complete! Next steps:"
1056+ echo " 1. Run: mangosctl sudo enroll -g vault-server -g consul-server -g nomad-server 127.0.0.1"
1057+ echo " 2. This will enroll the bootstrap node's identity and recovery keys"
1058+ echo
10501059}
10511060
10521061set_agent_token () {
You can’t perform that action at this time.
0 commit comments