sí, son sutilmente diferentes (pero solo si está modelando completamente el Control de acceso basado en roles (RBAC)):
considere un modelo ER para la autorización basada en roles:
- una aplicación tiene funciones
- las funciones pueden ser realizadas por roles
- se asignan roles a las identidades
- los individuos están provistos de identidades
uniendo eso un poco, podemos decir:
A un individuo (que tiene una identidad en línea), se le otorga permiso para desempeñar una función para realizar funciones en aplicaciones
Entonces:
- el permiso es el enlace ER entre la función, la función y la aplicación, es decir, los permisos se otorgan a las funciones
- el privilegio es el enlace ER entre un individuo y la aplicación, es decir, los privilegios se otorgan a las personas.
SIN EMBARGO, muchos diseñadores no se molestan en separar el individuo y el rol o no separan la función y la aplicación, por lo que se pierde la diferencia entre privilegio y permiso. En mi experiencia, a menudo se ve esto cuando alguien dice "usar grupos de AD para almacenar RBAC"; este es un antipatrón serio.
En un mundo donde existen requisitos para informar sobre combinaciones tóxicas y el permiso granular es más común que el modelo de datos para almacenar RBAC es mucho más importante.