accessControl assumeRole

Auditoría de Datos Sensibles por un Analista de Cumplimiento

Scénario de test & Cas d'usage

Contexto empresarial

Un analista del departamento de cumplimiento normativo necesita acceso temporal a tablas de clientes que se encuentran en una caslib restringida para realizar una auditoría. El analista no debe tener permisos para ejecutar acciones administrativas, solo para leer datos. Este escenario prueba la correcta aplicación y limitación del rol 'DATA'.
Sobre el conjunto : accessControl

Gestión de derechos de acceso y seguridad de datos.

Descubrir todas las acciones de accessControl
Preparación de datos

Se crea una tabla de clientes (`CLIENTES_SENSIBLES`) y se carga en una caslib (`AUDIT_CAS`) a la que un usuario estándar ('sasdemo') no tiene acceso por defecto.

¡Copiado!
1DATA casuser.clientes_sensibles;
2 LENGTH id_cliente $ 10 nombre $ 50 direccion $ 100;
3 DO i = 1 to 100;
4 id_cliente = 'CUST' || put(i, z4.);
5 nombre = 'Cliente ' || put(i, z4.);
6 direccion = 'Dirección Confidencial ' || put(i, z4.);
7 OUTPUT;
8 END;
9RUN;

Étapes de réalisation

1
Crear una caslib restringida y cargar los datos. Luego, intentar acceder a la tabla como usuario estándar (se espera un fallo).
¡Copiado!
1PROC CAS;
2 /* 1. Crear caslib restringida (como admin) */
3 addCaslib / caslib='AUDIT_CAS' dataSource={srcType='path'} path='/tmp/audit_data' subdirs=true;
4 
5 /* 2. Cargar la tabla en la caslib restringida */
6 TABLE.promote / caslib='casuser' name='clientes_sensibles' targetCaslib='AUDIT_CAS';
7 
8 /* 3. Como usuario 'sasdemo', intentar acceder a la tabla (debe fallar) */
9 TABLE.tableInfo / caslib='AUDIT_CAS' name='clientes_sensibles';
10RUN;
2
Asumir el rol 'DATA' para obtener privilegios de acceso a datos.
¡Copiado!
1 
2PROC CAS;
3ACCESSCONTROL.assumeRole / adminRole='
4DATA';
5RUN;
6 
3
Reintentar el acceso a la tabla. Ahora debería tener éxito.
¡Copiado!
1 
2PROC CAS;
3TABLE.tableInfo / caslib='AUDIT_CAS' name='clientes_sensibles';
4RUN;
5 
4
Intentar realizar una acción administrativa (no relacionada con datos), como listar roles. Debería fallar.
¡Copiado!
1 
2PROC CAS;
3ACCESSCONTROL.listRoles / all=true;
4/* Se espera un error de autorización */
5RUN;
6 
5
Abandonar el rol 'DATA' y verificar que el acceso se revoca.
¡Copiado!
1PROC CAS;
2 ACCESSCONTROL.dropRole / adminRole='DATA';
3 TABLE.tableInfo / caslib='AUDIT_CAS' name='clientes_sensibles'; /* Debería fallar de nuevo */
4RUN;

Resultado esperado


El escenario demuestra que el rol 'DATA' otorga acceso temporal a recursos de datos restringidos sin conceder otros privilegios administrativos. Al abandonar el rol, el acceso se revoca correctamente, validando el ciclo completo de elevación y descenso de privilegios.