feat: Automating node scanning (scripts/alta_nodo.rb, candado.rb) and updated ontology

This commit is contained in:
Ricardo Monla
2026-02-18 00:56:32 -03:00
parent 07a5bbb6c9
commit a56ab03d9d
7 changed files with 344 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
#!/usr/bin/env ruby
# script: candado.rb
# Uso: ruby scripts/candado.rb [minutos]
# Descripción: Genera un token de autorización temporal para que el Agente pueda ejecutar tareas críticas.
# Requiere que el usuario tenga claves SSH cargadas (prueba de identidad).
require 'json'
require 'fileutils'
TOKEN_FILE = File.expand_path('../.agent_token', __dir__)
DEFAULT_DURATION_MINS = 5
# 1. Validación de Identidad (Proof of User Presence)
puts "🔐 Requerimiento de Protocolo: Autorización FRESCA."
puts "🧹 Limpiando identidades previas en el agente SSH para exigir validación..."
system("ssh-add -D > /dev/null 2>&1") # Borra claves cacheadas para forzar el prompt
puts "🔑 Por favor, ingresa tu passphrase para autorizar al Agente:"
# Intentamos cargar las claves interactivamente (ahora sí pedirá pass porque borramos las anteriores)
system("ssh-add")
# Verificamos que la carga haya sido exitosa
system("ssh-add -l > /dev/null 2>&1")
unless $?.success?
puts "❌ ERROR: No se detectaron identidades SSH."
puts " Debes completar el desafío de identidad (passphrase) para continuar."
exit 1
end
# 2. Generación del Token
duration = (ARGV[0] || DEFAULT_DURATION_MINS).to_i
expires_at = Time.now + (duration * 60)
token_data = {
created_at: Time.now.to_s,
expires_at: expires_at.to_s,
duration_mins: duration,
authorized_by: ENV['USER'] || 'unknown',
signature: rand(36**8).to_s(36) # Firma aleatoria simple
}
File.write(TOKEN_FILE, JSON.pretty_generate(token_data))
FileUtils.chmod(0600, TOKEN_FILE) # Solo lectura para el usuario
puts "\n🔓 VACANCIA DE SEGURIDAD ACTIVADA"
puts "--------------------------------"
puts "✅ Agente AUTORIZADO para operaciones críticas."
puts "⏳ Ventana de tiempo: #{duration} minutos."
puts "💀 Expira: #{expires_at.strftime('%H:%M:%S')}"
puts "🔑 Token: #{TOKEN_FILE}"
puts "\n>> Ahora puedes pedirle al Agente que ejecute sus tareas."