accessControl assumeRole

Ejecución de un Conjunto de Acciones de Modelado Restringido

Scénario de test & Cas d'usage

Contexto empresarial

Un científico de datos junior necesita ejecutar un modelo de scoring (`aStore.score`), cuya acción está restringida a usuarios senior. El objetivo es permitirle ejecutar el scoring sin darle acceso para ver o modificar los datos sensibles subyacentes. Este escenario prueba la segregación de permisos del rol 'ACTION'.
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 un modelo de árbol de decisión simple y se guarda como un astore. Tanto el modelo como los datos de scoring se colocan en una caslib donde el usuario tiene acceso de lectura a los datos, pero no permiso para ejecutar el conjunto de acciones 'aStore'.

¡Copiado!
1/* 1. Crear datos de entrenamiento */
2DATA casuser.train_data;
3 DO i = 1 to 1000;
4 x1 = rand('UNIFORM');
5 x2 = rand('UNIFORM');
6 IF x1 > 0.5 and x2 > 0.5 THEN target = 1; ELSE target = 0;
7 OUTPUT;
8 END;
9RUN;
10 
11/* 2. Crear datos para scoring */
12DATA casuser.score_data;
13 DO i = 1 to 10;
14 x1 = rand('UNIFORM');
15 x2 = rand('UNIFORM');
16 OUTPUT;
17 END;
18RUN;

Étapes de réalisation

1
Entrenar un modelo y guardarlo. Luego, como usuario junior, intentar usar 'aStore.score' (se espera un fallo).
¡Copiado!
1PROC CAS;
2 /* Como admin: entrenar y guardar el modelo */
3 decisionTree.dtreeTrain /
4 TABLE={caslib='casuser', name='train_data'},
5 target='target',
6 inputs={'x1', 'x2'},
7 savestate={name='DT_MODEL', caslib='casuser', replace=true};
8 
9 /* Como usuario junior: intentar ejecutar aStore.score (debe fallar si la acción está restringida) */
10 aStore.score /
11 TABLE={caslib='casuser', name='score_data'},
12 rstore={caslib='casuser', name='DT_MODEL'},
13 out={caslib='casuser', name='scored_output', replace=true};
14RUN;
2
Asumir el rol 'ACTION' para obtener permisos de ejecución de acciones.
¡Copiado!
1 
2PROC CAS;
3ACCESSCONTROL.assumeRole / adminRole='ACTION';
4RUN;
5 
3
Reintentar la ejecución de 'aStore.score'. Ahora debería tener éxito.
¡Copiado!
1PROC CAS;
2 aStore.score /
3 TABLE={caslib='casuser', name='score_data'},
4 rstore={caslib='casuser', name='DT_MODEL'},
5 out={caslib='casuser', name='scored_output', replace=true};
6RUN;
4
Intentar realizar una acción de manipulación de datos, como eliminar la tabla de entrada. Debería fallar si los permisos de datos son restrictivos.
¡Copiado!
1 
2PROC CAS;
3TABLE.dropTable / caslib='casuser' name='score_data';
4/* Se espera un error de autorización */
5RUN;
6 

Resultado esperado


El escenario valida que el rol 'ACTION' permite la ejecución de acciones restringidas sin conceder permisos de manipulación de datos no deseados. El científico de datos junior puede puntuar nuevos datos pero no puede alterar los activos de datos originales, cumpliendo con el principio de mínimo privilegio.