Un Capability Registry es un servicio o componente fundamental en arquitecturas de seguridad que implementan el modelo de seguridad basado en capacidades. Su función principal es la emisión, gestión y revocación de 'capabilities', que son tokens criptográficamente seguros o referencias a derechos específicos sobre recursos. A diferencia de los modelos de control de acceso basados en listas (ACLs) o roles (RBAC), donde los permisos se asocian al usuario o rol, en un sistema basado en capacidades, el permiso se asocia directamente al token. El Registry actúa como una autoridad de confianza que, tras autenticar y autorizar a una entidad (usuario, servicio, proceso), le otorga una capability que encapsula los derechos para realizar una acción específica sobre un recurso determinado, sin necesidad de revalidación constante por parte del recurso.
En el mundo real, los principios de un Capability Registry se manifiestan en diversas formas. Por ejemplo, en sistemas basados en microservicios, un servicio de autorización centralizado que emite JSON Web Tokens (JWTs) con 'scopes' o 'claims' específicos para otros servicios puede considerarse una forma de Capability Registry. OAuth 2.0, aunque no es un Capability Registry per se, utiliza 'access tokens' que actúan como capabilities delegadas, y un servidor de autorización (Authorization Server) cumple un rol similar al de emitir y gestionar estos tokens. En sistemas operativos distribuidos o entornos de computación en la nube, los servicios de gestión de identidades y accesos (IAM) como AWS IAM o Google Cloud IAM, que emiten credenciales temporales o tokens de sesión con permisos específicos, también reflejan la lógica de un Capability Registry al delegar derechos de acceso a recursos.
Para un Arquitecto de Sistemas, el Capability Registry es crucial por su impacto en la seguridad, la escalabilidad y la resiliencia. Permite implementar el principio de mínimo privilegio de forma granular, ya que las capabilities pueden ser muy específicas y de corta duración. Reduce la superficie de ataque al limitar lo que una entidad comprometida puede hacer. Estratégicamente, facilita la construcción de sistemas distribuidos donde la confianza se delega de manera controlada, eliminando la necesidad de que cada microservicio mantenga su propia lógica de autorización compleja. Los trade-offs incluyen la complejidad inicial de diseño e implementación del Registry, la gestión de la revocación de capabilities (especialmente en sistemas de alta concurrencia) y la necesidad de una infraestructura de clave pública (PKI) robusta si las capabilities son criptográficamente firmadas. Sin embargo, los beneficios en términos de seguridad descentralizada y eficiencia en la autorización suelen superar estos desafíos.