Categories
Developers Tutoriales de Salesforce

Aprenda MOAR en Spring '22 con grupos de conjuntos de permisos ☁️

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.

Mire, no hay vuelta de hoja: los conjuntos de permisos no son tan emocionantes. Nadie salta de la cama el lunes con ganas de construir un conjunto de permisos. Entonces, ¿por qué escribir una publicación sobre conjuntos de permisos y grupos de conjuntos de permisos? ¡Porque los grupos de conjuntos de permisos ahora son mucho más útiles! Hemos hecho que las asignaciones de grupos de conjuntos de permisos sean recalculables en las pruebas unitarias. Siga leyendo para saber por qué eso es increíble.

Resumen rápido: ¿Qué es un grupo de conjuntos de permisos?

Muy bien, resumen rápido. Un conjunto de permisos es una colección de configuraciones y permisos que brindan a los usuarios acceso a varias herramientas y funciones. Los conjuntos de permisos amplían el acceso funcional de los usuarios sin cambiar sus perfiles. De hecho, incluso puede reemplazar en gran medida el uso de perfiles combinando el perfil de acceso mínimo estándar con conjuntos de permisos. Estos conjuntos de permisos se asignan luego a los usuarios seleccionados.

Los conjuntos de permisos son un poco como clases; deben centrarse en una sola área de responsabilidad. Por ejemplo, echemos un vistazo a los usuarios que están asignados al grupo Pronóstico de ingresos. Puede crear un conjunto de permisos que les otorgue acceso de lectura a los campos Ingresos en todas las oportunidades. Debido a que este permiso solo lo necesitan los pronosticadores de ingresos, no querrá combinar esos permisos con el resto de los permisos para el grupo Oportunidades.

Esto conduce inevitablemente a muchos conjuntos de permisos en su organización. ¡Es probable que cualquier usuario determinado deba ser asignado a una serie de conjuntos de permisos! Esto puede ser un poco como un festival administrativo de hacer clic, esperar, hacer clic y esperar, por lo que Salesforce introdujo Grupos de conjuntos de permisos. Como su nombre lo indica, un grupo de conjuntos de permisos es una colección de conjuntos de permisos que se pueden asignar todos a la vez. Una forma de pensar en cómo funcionan los grupos de conjuntos de permisos es la analogía de una persona. Primero crea conjuntos de permisos individuales para una tarea de trabajo determinada, como actualizar la información de contacto. Luego, establece un grupo de conjunto de permisos de estas tareas de trabajo individuales para definir la persona, como "Ejecutivo de cuenta".

Este diagrama de Venn muestra la relación entre conjuntos de permisos y grupos de conjuntos de permisos. Los segmentos de círculo rojo, amarillo y azul hacen referencia a conjuntos de permisos individuales; en este caso, conjuntos de permisos para acceder a los programas de Cuenta, Oportunidad e Ingresos. Los segmentos gris, morado y verde representan grupos de conjuntos de permisos, o personas, que se definen como la unión de esos conjuntos de permisos. Tenga en cuenta que el segmento naranja no representa una persona existente; en este ejemplo, nadie necesita acceder a los cronogramas de Cuentas e Ingresos sin tener también acceso a Oportunidades.

El problema

Los grupos de conjuntos de permisos han existido durante algunos lanzamientos, pero hasta ahora, han tenido un pequeño problema. Los desarrolladores que escriben pruebas unitarias que usan grupos de conjuntos de permisos podrían asignarlas a un usuario para que las pruebe. Desafortunadamente, esas pruebas fallarían como si nunca se hubiera realizado la asignación del grupo del conjunto de permisos. Esto, por supuesto, es… subóptimo. Si no puede probarlo en su código, es difícil recomendarlos para su adopción en su organización.

 @isTest clase pública PSGFAIL { @isTest prueba de vacío estáticoEstoFallaTristemente() { // obtener el PSG por nombre (puede haber sido modificado en la implementación) PermissionSetGroup psg = [SELECCIONE Id, Estado DESDE PermissionSetGroup WHERE DeveloperName='Vendedor' ]; // Cree un TestUser, utilizando el método auxiliar de Recetas de Apex Usuario testUser = TestFactory.createMinAccessUser(true); // asignar PSG al usuario actual (esto falla si PSG está desactualizado) inserte un nuevo PermissionSetAssignment (PermissionSetGroupId = psg.Id, AssigneeId = UserInfo.getUserId()); Booleano tieneAcceso = falso; System.runAs(usuarioprueba){ // Esto usa la biblioteca CanTheUser de Apex Recipes tieneAcceso = CanTheUser . flsAccessible ( 'Account' , 'TradeStyle' ); } /** * Sadly this assertion fails prior to Spring '22! */ System.assert(hasAccess, 'Expected a min-access profile with the Sales Persona PSG to have access to tradeStyle'); } }

La solución

El cerebro de Cheryl Feldman, Chris Peterson, Daniel Ballinger y su equipo de ingenieros vieron este problema y, en Spring '22, nos brindaron una solución en forma de un nuevo método en el espacio de nombres Test. Dado un ID de grupo de conjunto de permisos, Test.calculatePermissionSetGroup(psg.Id); vuelve a calcular los permisos para ese grupo de conjuntos de permisos, por lo que se aplican correctamente cuando se asignan. En combinación con el campo Estado del registro del grupo del conjunto de permisos, puede optimizar sus pruebas para activar el recálculo solo cuando sea necesario. Veamos cómo arreglar nuestra prueba unitaria anterior con una llamada para volver a calcular el grupo de conjuntos de permisos.

 @isTest clase pública PSG { @isTest prueba de vacío estáticoRecalcularPSG() { // obtener el PSG por nombre (puede haber sido modificado en la implementación) PermissionSetGroup psg = [SELECCIONE Id, Estado DESDE PermissionSetGroup WHERE DeveloperName='Vendedor' ]; // forzar calculo del PSG si no esta ya Actualizado if (psg.Estado != 'Actualizado') { Test.calculatePermissionSetGroup(psg.Id); } // Cree un TestUser, utilizando el método auxiliar de Recetas de Apex Usuario testUser = TestFactory.createMinAccessUser(true); // asignar PSG al usuario actual (esto falla si PSG está desactualizado) inserte un nuevo PermissionSetAssignment (PermissionSetGroupId = psg.Id, AssigneeId = UserInfo.getUserId()); Booleano tieneAcceso = falso; System.runAs(usuarioprueba){ // Esto usa la biblioteca CanTheUser de Apex Recipes tieneAcceso = CanTheUser . flsAccessible ( 'Account' , 'TradeStyle' ); }  /** * Success with Spring '22! */ System . assert ( hasAccess , 'Expected a min-access profile with the Sales Persona PSG to have access to tradeStyle' ); } }

Dado que volver a calcular el grupo de conjuntos de permisos puede llevar un segundo, se recomienda verificar el campo de estado antes de realizar la llamada para calcular.

¡Incluso puede crear e insertar nuevos registros de grupos de conjuntos de permisos dentro de sus pruebas unitarias! Echa un vistazo a este fragmento:

 // crear un PS con un permiso de usuario habilitado
PermissionSet ps = new PermissionSet(Name='apexPS', Label='apexPS');
ps.PermissionsIsSsoEnabled = verdadero;
insertar pd; // crea un PSG y agrega PS como componente
PermissionSetGroup psg = new PermissionSetGroup(DeveloperName='apexPSG', MasterLabel='apexPSG');
insertar psg; // agregar el PS al PSG
inserte un nuevo PermissionSetGroupComponent (PermissionSetGroupId = psg.Id, PermissionSetId = ps.Id); // fuerza el cálculo sincrónico
Test.calculatePermissionSetGroup(psg.Id); // asignar PSG a un usuario (esto fallaría si PSG no se calculó previamente)
inserte un nuevo PermissionSetAssignment (PermissionSetGroupId = psg.Id, AssigneeId = UserInfo.getUserId());

¿Qué hago con esto?

Tengo que admitir que los conjuntos de permisos y los grupos de conjuntos de permisos no son el tema más interesante. Pero son cruciales para asegurar el desarrollo de software en la Plataforma Salesforce. Pero no basta con usar conjuntos de permisos y grupos de conjuntos de permisos. Debe saber que su código respeta estos conjuntos de permisos y cómo reacciona cuando falla por un acceso insuficiente (o si falla en absoluto). De lo contrario, acabas de codificarte un buen agujero de seguridad.

Del mismo modo, ayude a sus compañeros de equipo administradores asegurándose de que cuando su código falle, al menos le diga qué permiso falta. La forma más fácil de hacer esto es escribir pruebas unitarias, y eso significa escribir pruebas que asignan diferentes grupos de conjuntos de permisos. Recuerde que sus pruebas también contribuyen a las pruebas de Hammer , lo que ayuda a garantizar que la plataforma no introduzca cambios importantes.

¡Pero espera! Hay más. Los conjuntos de permisos y los grupos de conjuntos de permisos están mejorando aún más. Con Spring '22, hay dos funciones nuevas en Beta: caducidad automática de las asignaciones de grupos de conjuntos de permisos y creación de políticas de seguridad de transacciones ampliadas para eventos de conjuntos de permisos . Tengo muchas ganas de ver cómo las organizaciones usan las asignaciones de grupos de conjuntos de permisos que expiran automáticamente.

Aprende MOAR esta semana

Los Gerentes de Producto y Relaciones con Desarrolladores están de vuelta para compartir las características y funcionalidades más recientes para ayudarlo a desarrollarse más rápido con nuevo contenido de Relaciones con Desarrolladores que cubre sus nuevas funciones favoritas. Asegúrese de ver Release Readiness Live el viernes 4 de febrero a las 9:00 PST. Por último, ¡esté atento al blog de desarrolladores de Salesforce para obtener más publicaciones sobre Spring '22!

Para obtener aún más información, consulta el trailmix de Spring '22 .

Sobre el Autor

public with sharing KevinPoorman {
public static String pronouns = 'he/him';
public static Double startedWithSalesforceAtApiLevel = 11.0;
public static String[] interests = ['Apex', 'Testing', 'iOS SDK', 'Generics', 'Metaprogramming'];
public static String funFact = 'Has two daughters he's training to take over the world.';
public static String twitterHandle = '@Codefriar';
}

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2022/02/learn-moar-in-spring-22-with-permission-set-groups.html

Categories
Developers Tutoriales de Salesforce

Aumente la seguridad auditando a sus usuarios privilegiados con SOQL ☁️

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:

  1. 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!
  2. 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

Categories
Developers

Introducción a Salesforce Flow – Parte 62 (Asignar automáticamente o quitar conjunto de permisos a varios usuarios)

Gran idea o pregunta duradera:

Los conjuntos de permisos son útiles para proporcionar un conjunto particular de funcionalidades a un usuario además de los permisos proporcionados por su perfil . Por ejemplo, es posible que desee permitir que solo algunos de sus usuarios de ventas conviertan clientes potenciales. En este caso, en lugar de tener un perfil de ventas especial con el permiso de conversión de clientes potenciales, puede crear un conjunto de permisos y asignarlo a un usuario específico. ¿Qué sucede si solo desea que se asigne un conjunto de permisos durante un tiempo designado y no desea olvidarse de eliminarlo más tarde?
  • Asigne el conjunto de permisos para un período de tiempo específico del 01 de enero de 2022 al 15 de enero de 2022 (como si hubiera definido la hora de inicio y finalización)
  • Eliminar el conjunto de permisos del usuario el31 de agosto de 2021, es decir, una fecha futura
He escrito algunos artículos sobre la automatización del conjunto de permisos.   y automatización . ¡¿Por qué no les echas un vistazo mientras estás en ello ?!
  1. Introducción a Salesforce Flow – Parte 53 (Clonar un usuario con su grupo público asociado, pertenencia a la cola y conjuntos de permisos)
  2. Introducción a Salesforce Flow – Parte 24 (Asignar automáticamente conjuntos de permisos a un nuevo usuario)

Objetivos:

Después de leer este artículo, podrá:
  • Utilice el flujo activado por programación para asignar o eliminar el conjunto de permisos en la fecha especificada automáticamente
  • Práctica recomendada para referir el conjunto de permisos a un flujo activado por registro
  • Utilice un elemento de decisión para buscar: la variable de registro o la variable de colección de registros contiene un registro o no
  • Asignar un conjunto de permisos a los usuarios el primer día del mes
  • Eliminar el conjunto de permisos de los usuarios el sexto día del mes
  • Supervisar la cola de flujo de trabajo de programación
Brenda David es Administradora de sistemas en Universal Containers (UC). La gerencia de la UC ha anunciado una iniciativa para permitir que sus empleados actualicen o eliminen las solicitudes de vacaciones en lugar de enviar una solicitud por correo electrónico a RR.HH. Para hacer esto, los usuarios necesitarán permisos especiales, como actualizar o eliminar solicitudes de vacaciones (objetos personalizados) que están fuera de sus permisos estándar. Solo deben tener acceso desde el primer día de cada mes hasta el día 05 del mes (Otorgar acceso durante los primeros cinco días del mes).

Enfoque de campeón de automatización (I-do):

Si bien esto se puede resolver utilizando varias herramientas de automatización como Apex , etc. , usaremos el flujo activado programado . Antes de continuar, debe comprender el PermissionSetAssignment   objeto . Representa la asociación entre un usuario y un PermissionSet. A continuación se muestran los campos clave del objeto PermissionSetAssignment
Nombre del campo Detalles
PermissionSetId ID del PermissionSet para asignar al usuario especificado en AssigneeId.
AssigneeId ID del usuario para asignar el conjunto de permisos especificado en PermissionSetId.
Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo y comprenderlo. Comencemos a construir este proceso de automatización.

Práctica guiada (lo hacemos):

Hay 2 pasos para resolver los requisitos comerciales de Brenda mediante el flujo activado programado . Debemos:
  1. Creación de un conjunto de permisos: autenticación de dos factores
  2. Pasos del flujo de Salesforce:
    1. Definir propiedades de flujo para flujo activado programado
    2. Agregue una fórmula para obtener días a partir de la fecha
    3. Agregue un elemento de obtención de registros para encontrar la identificación del conjunto de permisos
    4. Agregue un elemento de decisión para verificar la identificación del conjunto de permisos de la variable de registro (del paso 2.3)
    5. Agregue un elemento de registro para encontrar el ID de asignación del conjunto de permisos
    6. Agregue un elemento de decisión para verificar el ID de asignación del conjunto de permisos de la variable de registro (del paso 2.5) y el día del mes
    7. Agregue un elemento de creación de registros para asignar el conjunto de permisos
    8. Agregue un elemento Eliminar registros para eliminar el conjunto de permisos

Paso 1: crear un conjunto de permisos

  1. Haga clic enConfiguración .
  2. En el cuadro Búsqueda rápida, escribaConjuntos de permisos .
  3. SeleccioneConjuntos de permisos y luego haga clic en Nuevo .
  4. Etiquete el conjunto de permisos y luego presione la tecla de tabulación, el nombre de la API se completará automáticamente.
  5. Haga clic enGuardar.

Paso 2.1: Flujo de Salesforce – Definir propiedades de flujo

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, escriba Flujos .
    3. Seleccione Flujos y luego haga clic en Nuevo flujo .
    4. Seleccione el flujo activado por programación   opción y haga clic en Siguiente   y configure el flujo de la siguiente manera:
      1. ¿Cómo quieres empezar a construir ? Freeform
      2. Establecer horario
        1. Fecha de inicio: 27 de abril de 2021
        2. Hora de inicio: 12:00 AM
        3. Frecuencia: Diaria
        4. Haz clic enListo .
      3. Seleccionar objeto : Usuario
    5. Seleccione Se cumplen todas las condiciones (Y) .
    6. Condición de establecimiento
      1. Fila 1
        1. Campo: Usuario | Está activo
        2. Operador: Igual a
        3. Valor: {! $ GlobalConstant.True}
      2. + Agregar condición
      3. Fila 2
        1. Campo: Usuario | Tipo de usuario
        2. Operador: Igual a
        3. Valor: estándar
    7. Haz clic enListo .

Paso 2.2: Flujo de Salesforce: cree una fórmula para obtener el día a partir de la fecha

  1. En Caja de herramientas , seleccione Administrador, luego haga clic en Nuevo recurso para crear una fórmula para obtener el día a partir de la fecha.
  2. Ingrese la siguiente información:
    1. Tipo de recurso : Fórmula
    2. Nombre de API : forNDaysOfMonth
    3. Tipo de datos : Número
    4. Lugares decimales : 0
    5. Fórmula : {DÍA ({! $ Flow.CurrentDate})
  3. Haz clic enListo .

Paso 2.3: Lightning Flow: agregar un elemento Get Record para encontrar el ID del conjunto de permisos

El siguiente paso es utilizar el  Obtener el elemento Registros para encontrar el conjunto de permisos Modificar solicitud de vacaciones . Para hacer eso, siga las instrucciones a continuación:
  1. En Caja de herramientas , seleccione Elemento .
  2. Arrastre y suelte el elemento Obtener registros en el diseñador de flujo.
  3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
  4. Seleccione el conjunto de permisos   objeto de la lista desplegable.
  5. SeleccioneSe cumplen todas las condiciones (Y) .
  6. Establecer condiciones de filtro
    1. Fila 1:
      1. Nombre del campo
      2. Operador: Igual a
      3. Valor: Modify_Vacation_Request
  7. Cuántos registros almacenar:
    1. seleccionesolo el primer registro
  8. Cómo almacenar datos de registro:
    1. Elija la opción para almacenar automáticamente todos los campos .
  9. Haz clic enListo .

Paso 2.4: Flujo de Salesforce: uso del elemento de decisión para verificar el ID del conjunto de permisos de la variable de registro (del paso 2.3)

Ahora usaremos el elemento Decisión para verificar la Variable de registro del paso 2.3 para encontrar si devuelve el ID del conjunto de permisos o no.
  1. En Caja de herramientas , seleccione Elemento .
  2. Arrastre y suelte el elemento Decisión en el diseñador de flujo.
  3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
  4. En Detalles del resultado ,   ingrese la etiqueta que el nombre de la API se completará automáticamente.
  5. Requisitos de las condiciones para ejecutar el resultado : se cumplen todas las condiciones (Y)
    1. Fila 1:
      1. Recurso: {! Get_Permission_Set}
      2. Operador: es nulo
      3. Valor: {! $ GlobalConstant.False}
  6. Haz clic enListo .

Paso 2.5: Lightning Flow: agregar un elemento Get Record para encontrar el ID de asignación del conjunto de permisos

El siguiente paso es utilizar el  Obtener el elemento Registros para encontrar el ID de asignación de configuración de permisos. Para hacer eso, siga las instrucciones a continuación:
  1. En Caja de herramientas , seleccione Elemento .
  2. Arrastre y suelte el elemento Obtener registros en el diseñador de flujo.
  3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
  4. Seleccione la asignación de conjunto de permisos   objeto de la lista desplegable.
  5. SeleccioneSe cumplen todas las condiciones (Y) .
  6. Establecer condiciones de filtro
    1. Fila 1:
      1. Campo: AssigneeId
      2. Operador: Igual a
      3. Valor: {! $ Record.Id}
    2. + Agregar condición
    3. Fila 2:
      1. Campo: PermissionSetId
      2. Operador: Igual a
      3. Valor: {! Get_Permission_Set.Id}
  7. Cuántos registros almacenar:
    1. seleccionesolo el primer registro
  8. Cómo almacenar datos de registro:
    1. Elija la opción para almacenar automáticamente todos los campos .
  9. Haz clic enListo .

Paso 2.6: Flujo de Salesforce: uso del elemento de decisión para verificar el ID de asignación del conjunto de permisos de la variable de registro (del paso 2.5) y el día del mes

Usaremos el elemento Decisión para verificar la Variable de registro del paso 2.5 para encontrar si el conjunto de permisos está asignado al usuario o no con el día del mes. Hay dos posibilidades:
    • Si hoy es el primer día del mes y el conjunto de permisos no está asignado al usuario, asigne el conjunto de permisos.
    • Si hoy es el sexto día del mes y el conjunto de permisos está asignado al usuario, elimínelo.
  1. En Caja de herramientas , seleccione Elemento .
  2. Arrastre y suelte el elemento Decisión en el diseñador de flujo.
  3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
  4. En Detalles del resultado ,   ingrese la etiqueta (Agregar conjunto de permisos), el nombre de la API se completará automáticamente.
  5. Requisitos de las condiciones para ejecutar el resultado : se cumplen todas las condiciones (Y)
    1. Fila 1:
      1. Recurso: {! Get_Permission_Set_Assignment}
      2. Operador: es nulo
      3. Valor: {! $ GlobalConstant.True}
    2. + Agregar condición
    3. Fila 2:
      1. Campo : {! ForNDaysOfMonth}
      2. Operador : Igual a
      3. Valor : 1
  6. Ahora agregue un segundo nodo al elemento de decisión.
  7. En Detalles de resultado , haga clic en +
  8. En Detalles del resultado ,   ingrese la etiqueta (Eliminar conjunto de permisos), el nombre de la API se completará automáticamente.
  9. Requisitos de las condiciones para ejecutar el resultado : se cumplen todas las condiciones (Y)
    1. Fila 1:
      1. Recurso: {! Get_Permission_Set_Assignment}
      2. Operador: es nulo
      3. Valor: {! $ GlobalConstant.False}
    2. + Agregar condición
    3. Fila 2:
      1. Campo : {! ForNDaysOfMonth}
      2. Operador : Igual a
      3. Valor : 6
  10. Haz clic enListo .

Paso 2.7: Flujo de Salesforce: crear registros para agregar un conjunto de permisos

El siguiente paso es agregar conjuntos de permisos a los usuarios. Usaremos elelementoCreate Records. Para hacer esto, arrastre y suelte el elemento Crear registros en el diseñador de flujo y mapee los campos de acuerdo con los detalles a continuación:
  1. En Caja de herramientas , seleccione Elementos . Arrastre y suelte Crear registros en el lienzo.
  2. Ingrese la siguiente información :
    1. Ingrese la etiqueta, el nombre de la API se completará automáticamente.
    2. Cuántos registros crear : uno
    3. Cómo configurar los campos de registro : use recursos separados y valores literales
    4. Objeto : PermissionSetAssignment
    5. Establecer valores de campo para la asignación de conjuntos de permisos
    6. Fila 1:
      1. Campo : AssigneeId
      2. Valor : {! $ Record.Id}
    7. Haga clic en Agregar fila
    8. Fila 2:
      1. Campo : PermissionSetId
      2. Valor : {! Fet_Permission_Set.Id}
  3. Haz clic en Listo .

Paso 2.8: Flujo de Salesforce: agregue un elemento Eliminar registros para eliminar el conjunto de permisos

El siguiente paso es eliminar los conjuntos de permisos para los usuarios. Usaremos elelementoDelete Records. Para hacer esto, arrastre y suelte el elemento Eliminar registros en el diseñador de flujo y mapee los campos de acuerdo con los detalles a continuación:
  1. Arrastre y suelte el elemento Eliminar registros en el diseñador de flujo.
  2. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
  3. Para Cómo encontrar registros para eliminar, seleccione Usar los ID almacenados en una variable de registro o una variable de colección de registros .
  4. Seleccionar registro (s) para eliminar
    1. Registro o colección de registros: {! Get_Permission_Set_Assignment}
  5. Haz clic en Listo .
Al final, el flujo de Brenda se verá como la siguiente captura de pantalla (activé el diseño automático ) para este flujo: Una vez que todo se vea bien, realice los pasos a continuación:
  1. Haga clic enGuardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completará automáticamente.
  3. Haga clic enMostrar avanzado .
  4. Tipo : flujo activado por programa
  5. Versión de API para ejecutar el flujo : 52
  6. Etiqueta de entrevista : Agregar o quitar conjunto de permisos automáticamente {! $ Flow.CurrentDateTime}
  7. Haga clic enGuardar .
¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar.

Supervise el flujo de su programación

Para monitorear los flujos que están programados, navegue a la siguiente ruta:
  1. Vaya a Configuración (icono de engranaje) | Ambientes | Trabajos | Trabajos programados .
  2. Ahora busque su flujo programado que muestra la información como se muestra en la siguiente captura de pantalla:
  3. Utilice el enlace Supr para eliminar el trabajo de flujo programado de la cola.

Prueba de concepto

Cada noche a las 12:00 a. M., Se ejecutará un trabajo programado y agregará o quitará el conjunto de permisos para el usuario según el día del mes.
  1. El primer día del mes, navegue hasta el registro de usuario y confirme que se asignó el conjunto de permisos Modificar solicitud de vacaciones.
  2. El sexto día del mes, navegue hasta el registro de usuario y confirme que se ha eliminado el conjunto de permisos Modificar solicitud de vacaciones.

Evaluación formativa:

¡Quiero saber de ti! ¿Qué aprendió de esta publicación, es relevante para usted y cómo modificará los conceptos enseñados en la publicación para sus propios procesos comerciales? Haz una publicación y etiquétame en Twitter @automationchamp usando #AutomationChampionFlow. … Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2021/04/26/auto-assign-or-remove-permission-set-to-multiple-users/