Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .
El enlace a la publicación original, lo encontrarás al final de este artículo.
…
Parte del desarrollo de aplicaciones seguras consiste en realizar auditorías periódicas de los permisos de los usuarios. Teniendo en cuenta el principio de privilegio mínimo , los desarrolladores y administradores deben monitorear constantemente los permisos clave en cada organización de Salesforce para asegurarse de que no hayan sobreaprovisionado privilegios especiales a sus usuarios finales. No hacerlo puede tener graves consecuencias y, si bien puede parecer extremo, los permisos demasiado generosos pueden provocar:
- Un usuario que accidentalmente realiza un cambio que afecta los procesos comerciales críticos.
- La pérdida o el robo de datos comerciales vitales
- Crecimiento exponencial del riesgo para su empresa
En esta publicación, me gustaría analizar las razones por las que debemos realizar auditorías de los permisos de nuestros usuarios, cómo podemos establecer pautas para garantizar que solo el número correcto de usuarios tenga acceso privilegiado y cómo identificar administradores y usuarios privilegiados. en su organización.
¿Por qué deberíamos auditar?
¿Cuánto tiempo ha existido su organización de Salesforce: un año, cinco años, diez años? ¿Cuántos administradores ha tenido la organización durante ese tiempo? ¿Cuántas veces se ha clonado, actualizado y asignado a un usuario el perfil de administrador del sistema? ¿Cuántos usuarios pueden crear nuevos usuarios y cuántos pueden modificar todos los datos ? Creo que la respuesta más común será:
«Ummm, no sé … ¿mucho?» 🤷♂️
No puedo pensar en un solo oficial de seguridad de la información que acepte esa respuesta, incluido Roger Grimes de CSO Online:
“Cada administrador adicional provoca un crecimiento del riesgo de lineal a exponencial. Cada administrador adicional no solo aumenta su propio riesgo; si están comprometidos, aumentan el riesgo de eliminación de todos los demás. Cada administrador puede pertenecer a grupos que otros no. Si un pirata informático compromete A y llega a B, B puede conducir más fácilmente a C, y así sucesivamente «.
Roger A. Grimes, columnista de CSO, en Demasiados administradores arruinan su seguridad .
En Salesforce, recomendamos que se realicen auditorías periódicas sobre los permisos que se han asignado a sus usuarios. Específicamente, es importante observar el número total de administradores y usuarios privilegiados para asegurarse de que los números sean razonables en función de su base total de usuarios y de que no haya ningún usuario a quien se le hayan otorgado privilegios de administrador que no los tengan. los necesita (es decir, han sido aprovisionados en exceso).
Establecer pautas para administradores y usuarios privilegiados
En Salesforce, un administrador se define como un usuario con tanto los permisos de aplicación Personalizar y modificar todos los datos.
Entonces, ¿cuál es una cantidad razonable de administradores en una organización?
Esto puede variar mucho según el tamaño de su organización y su industria. Las organizaciones más pequeñas tienden a tener un mayor porcentaje de usuarios con privilegios de administrador. Por ejemplo, una organización de 100 usuarios con cinco administradores, o el 5% de la base de usuarios total, puede parecer un poco alta, pero no es totalmente irrazonable. Sin embargo, una organización de 5,000 usuarios con 250 administradores, nuevamente ese mismo 5% de la base total de usuarios, ciertamente suena irrazonable y francamente difícil de manejar desde una perspectiva gerencial. Mi pauta personal es que entre el 1% y el 4% de su base total de usuarios debe tener privilegios de administrador. Si tiene un porcentaje mayor que ese, puede ser el momento de revisar su lista de administradores y hacer algunos recortes. Los clientes con organizaciones más grandes, o que se encuentran en industrias altamente reguladas como la atención médica y los servicios financieros, deberían encontrarse en el extremo inferior de ese rango.
¿Qué pasa con los usuarios privilegiados? ¿Qué son los usuarios privilegiados de todos modos?
Aquí en Salesforce, nos referimos a los usuarios privilegiados como aquellos usuarios con uno o más de los siguientes permisos:
- Personalizar aplicación
- Administrar usuarios
- Modificar todos los datos
- Ver todos los datos
Definir un número razonable de usuarios privilegiados es incluso más difícil que con los administradores. Debido a la forma en que las empresas están estructuradas y operan, podría haber grandes diferencias en el número de usuarios privilegiados de una organización a otra. Por ejemplo, considere una empresa que tiene cientos de sucursales de oficinas en todo el mundo. Cada sucursal puede necesitar un usuario (o usuarios) privilegiado designado que pueda agregar y eliminar a otros usuarios de su sucursal debido a la alta rotación. La estructura de esa empresa puede exigir un mayor número de usuarios privilegiados. Ahora, piense en una organización que se administra de manera centralizada y solo necesita un equipo muy pequeño de personas que agregan y eliminan usuarios porque la rotación es muy baja. Tendrían un porcentaje mucho menor de usuarios privilegiados que en el primer ejemplo. Debido a esto, es difícil dar una pauta absoluta; sin embargo, lo más importante es asegurarse de que su porcentaje se ajuste a las necesidades de su organización. En la mayoría de los casos, el 2% al 5% es razonable, pero si este porcentaje comienza a subir hasta el 10%, es posible que desee reconsiderar las políticas de su empresa sobre usuarios privilegiados. Tenga en cuenta que siempre debe ser la gran minoría de uso r s en su organigrama que son usuarios privilegiados.
Identificación de administradores y usuarios privilegiados
Ahhh, por fin hemos llegado al meollo del artículo. Para realizar su auditoría, deberá crear listas de sus administradores y usuarios privilegiados. Hay varias formas de hacer esto. En el que quiero centrarme es en el uso de SOQL para consultar a todos los usuarios a los que se les asigna un permiso específico. Si bien los administradores pueden aprovechar Salesforce Optimizer para proporcionar una lectura básica de los administradores en su organización, o instalar Profile and Permission Set Helper de Salesforce AppExchange para buscar perfiles y conjuntos de permisos de su organización, SOQL es la opción rápida y fácil para los desarrolladores.
Ejecutar una consulta SOQL en una organización es fácil y hay varias herramientas diferentes que puede utilizar. Personalmente, me gusta la Consola de desarrollo incorporada de Salesforce y el Código VisualStudio , ya que ahí es donde hago la mayor parte de mi trabajo de desarrollo. Para esta publicación, force:data:soql:query
Salesforce CLI (ver más información ) en la Terminal Integrada de VisualStudio Code.
Aquí hay una lista de objetos clave que usaremos en nuestras consultas:
- PermissionSet : representa un conjunto de permisos que se usa para otorgar acceso a uno o más usuarios. Tenga en cuenta que la documentación asociada no enumera todos los permisos disponibles para ser consultados. Para obtener una lista completa de permisos, deberá ejecutar
describeSObjects()
través del banco de trabajo o una de las API, como la API de SOAP . - PermissionSetAssignment : representa la asociación entre un usuario y un PermissionSet. Así es como un usuario obtiene los permisos en un perfil o conjunto de permisos.
- ObjectPermissions : representa los permisos de objeto habilitados para el PermissionSet principal.
Un par de cosas a tener en cuenta antes de comenzar a ejecutar consultas SOQL:
- NO recomendamos ejecutar estas consultas directamente en producción; en su lugar, ejecútelas en un entorno limitado recientemente actualizado. No tendría un gran impacto si los ejecutara en producción, pero puede obtener exactamente los mismos resultados ejecutando las consultas en un nuevo entorno de pruebas para desarrolladores, ¡y eso es mucho más seguro!
- Deberá tener el permiso Ver configuración y configuración para acceder a los objetos mencionados anteriormente.
Comencemos por encontrar a nuestros administradores: aquellos usuarios con Personalizar aplicación y Modificar todos los datos permisos . Aquí está el SOQL que usaremos:
SELECT Assignee.Id,Assignee.Username,Assignee.Name
FROM PermissionSetAssignment
WHERE PermissionSet.PermissionsCustomizeApplication = true AND PermissionSet.PermissionsModifyAllData = true AND Assignee.IsActive=true
Usaremos el PermissionSetAssignment
y PermissionSet
para encontrar los usuarios con PermissionsCustomizeApplication
y PermissionsModifyAllData
. Lo bueno de esta consulta es que devolverá a cualquier usuario con los dos permisos, ya sea que tengan los permisos en su perfil o que se les hayan asignado a través de un conjunto de permisos. Así es como se verá el comando usando la CLI de Salesforce:
sfdx force:data:soql:query -q "SELECT Assignee.Id,Assignee.Username,Assignee.Name FROM PermissionSetAssignment WHERE PermissionSet.PermissionsCustomizeApplication = true AND PermissionSet.PermissionsModifyAllData = true AND Assignee.IsActive=true"
Y aquí está la salida de CLI:
Puede ver que en mi organización tengo dos administradores. Espere un segundo, ¿dos administradores? Pensé que era el único administrador de mi organización. Jimmy es nuestro Gerente de Operaciones de Ventas (un gran tipo, lee muchos cómics), ¡pero no debería tener derechos de administrador completos! Ok, tendré que arreglar eso.
Muy bien, pasemos a nuestros usuarios privilegiados. Aquí está el SOQL que usaremos, esta vez verificando más permisos usando el comando OR en la cláusula WHERE y también incluyendo los cuatro permisos en la cláusula SELECT, para que podamos ver quién tiene qué permisos:
SELECT Assignee.Id, Assignee.Username, Assignee.Name, PermissionSet.PermissionsModifyAllData, PermissionSet.PermissionsCustomizeApplication, PermissionSet.PermissionsManageUsers, PermissionSet.PermissionsViewAllData
FROM PermissionSetAssignment
WHERE (PermissionSet.PermissionsModifyAllData = true OR PermissionSet.PermissionsCustomizeApplication = true OR PermissionSet.PermissionsManageUsers = true OR
PermissionSet.PermissionsViewAllData = true)
Assignee.IsActive=true
Ejecutando esta consulta nuevamente a través de la CLI de Salesforce usando force:data:soql:query
, aquí están mis resultados:
Bien, esta vez tenemos tres resultados: yo, Jimmy (todavía tengo que arreglar eso), y espera… qué… ¿Susan? Ella es la vicepresidenta ejecutiva de marketing, pero tiene el permiso para administrar usuarios. Susan reúne algunas de las mejores campañas de marketing que he visto; sin embargo, no debería agregar y eliminar usuarios de nuestra organización de Salesforce. ¡Genial, otro elemento para agregar a mi lista de tareas pendientes!
Bueno, ahí lo tiene, dos consultas simples para ayudarlo a encontrar administradores y usuarios privilegiados en su organización. Pero, ¿y si desea profundizar y explorar otros permisos? Cubramos algunos otros escenarios comunes en la siguiente sección.
Encontrar otros usuarios con privilegios elevados en su organización
Seamos realistas, Salesforce es una herramienta increíblemente poderosa, y con todo ese poder viene… muchos permisos (tu sentido de la araña pensó que iba a otro lado con eso, ¿verdad? ¡Ja, te pillé!). Cubramos algunos otros escenarios comunes en los que es posible que desee ver cuántos usuarios tienen un permiso específico.
¿Qué hay de los usuarios que pueden ejecutar una exportación de datos o de informes ?
SELECT Assignee.Id,Assignee.Username,Assignee.Name
FROM PermissionSetAssignment
WHERE (PermissionSet.PermissionsExportReport = true OR PermissionSet.PermissionsDataExport = true) AND Assignee.IsActive=true
¿Necesita saber qué usuarios de su organización tienen acceso a la API ? Mira esto:
SELECT Assignee.Id,Assignee.Username,Assignee.Name
FROM PermissionSetAssignment
WHERE PermissionSet.PermissionsApiEnabled = true AND Assignee.IsActive=true
¿Tiene usuarios en su organización que tienen el permiso La contraseña nunca caduca? ¡Espero que no! Ejecute este SOQL para verificar dos veces:
SELECT Assignee.Id,Assignee.Username,Assignee.Name
FROM PermissionSetAssignment
WHERE PermissionSet.PermissionsPasswordNeverExpires = true AND Assignee.IsActive=true
Si tiene un modelo de uso compartido privado para un objeto que es muy sensible, puede valer la pena comprobar quién tiene los permisos Ver todo y Modificar todo en ese objeto. Este se vuelve un poco complicado, ya que tenemos que usar SOQL anidado y el objeto ObjectPermissions
En este caso, buscaré usuarios con Ver todo O Modificar todo en el objeto Oportunidad (puede reemplazar Oportunidad con cualquier nombre de API de objeto estándar o personalizado):
SELECT Assignee.Id,Assignee.Username,Assignee.Name
FROM PermissionSetAssignment
WHERE PermissionSetId in (
SELECT ParentId
FROM ObjectPermissions where (PermissionsViewAllRecords = true or PermissionsModifyAllRecords = true) And SObjectType = 'Opportunity'
)
AND Assignee.IsActive=true
Tenga en cuenta que, en algunos casos, puede ver lo que parecen ser usuarios duplicados en las listas que devuelven estas consultas. Esto sucederá cuando a un usuario se le asigne un perfil Y un conjunto de permisos, o se le asigne a varios conjuntos de permisos con los mismos permisos. Básicamente, al usuario se le concedieron los mismos permisos varias veces. Este escenario no es infrecuente, así que asegúrese de tenerlo en cuenta al formular recuentos y porcentajes. Puede resultar útil utilizar cláusulas GROUP BY en SOQL para agregar los duplicados.
Conclusión
Salesforce recomienda la mejor práctica de auditar y revisar los permisos de los usuarios como parte de su lista de verificación de preparación de la versión. Con cada versión de Salesforce, a medida que prueba en su entorno de pruebas de versión preliminar, audite sus permisos de usuario para asegurarse de que sus usuarios tengan los permisos adecuados. Las empresas con mayor rotación, que se encuentran en industrias altamente reguladas o que almacenan datos altamente sensibles en su organización, pueden querer realizar auditorías con mayor frecuencia (por ejemplo, trimestralmente). Como recordatorio final, algo más del 2% al 5% de los usuarios privilegiados en una organización es probablemente un motivo de preocupación. Asegurarse de que los usuarios no estén sobre aprovisionados ayudará a impulsar la postura de seguridad general de su organización, protegerá sus datos y garantizará que no exponga su empresa a riesgos adicionales innecesarios. Así que programemos la próxima auditoría de su organización ahora. Parece que estás libre el viernes …
Recursos adicionales:
Sobre el Autor
Christopher Marzilli, el Director, Platform Success en Salesforce, que pasa sus días impulsando el éxito de los clientes en Salesforce Platform y las noches jugando videojuegos con su hijo.
Más publicaciones en el blog de Christopher Marzilli
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2021/05/boost-security-by-auditing-your-privileged-users-with-soql.html