Publicado el :
Administración CREATION_INTERNE

Ocultar una columna para la mayoría de los usuarios

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
La acción `accessControl.updSomeAcsColumn` se utiliza para definir reglas de acceso granulares a nivel de columna. Permite revocar los permisos 'ReadInfo' y 'Select' para el grupo genérico '*' (todos los usuarios) en la columna 'CCnum' de la tabla 'Receipts.sashdat' en la caslib 'sales'. Simultáneamente, otorga explícitamente estos mismos permisos a 'groupA', garantizando así que solo los miembros de este grupo podrán ver y seleccionar esta columna, reforzando la seguridad de los datos sensibles.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (paso DATA con DATALINES) o SASHELP si es necesario.

1 Bloque de código
CASL Data
Explicación :
Este ejemplo comienza creando una tabla simple 'Receipts' con datos ficticios y una columna sensible 'CCnum'. Luego carga esta tabla en la caslib 'sales'. La acción `accessControl.updSomeAcsColumn` se utiliza para denegar los permisos 'ReadInfo' y 'Select' en la columna 'CCnum' a todos los usuarios (grupo '*') y otorgar estos mismos permisos a 'groupA'. Esto garantiza que solo los miembros de 'groupA' puedan ver el contenido de esta columna.
¡Copiado!
1CAS auto;
2CASLIB _ALL_ assign;
3 
4/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
5DATA casuser.Receipts;
6 LENGTH ID 8 Nom $ 20 CCnum $ 16;
7 INPUT ID Nom $ CCnum $;
8 DATALINES;
9101 John_Doe 1234-5678-9012-3456
10102 Jane_Smith 9876-5432-1098-7654
11103 Peter_Jones 1122-3344-5566-7788
12;
13RUN;
14 
15/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
16PROC CASUTIL;
17 load DATA=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
18RUN;
19 
20/* Masquer la colonne CCnum pour tous les utilisateurs (*) et la rendre visible pour 'groupA' */
21PROC CAS;
22 ACCESSCONTROL.updSomeAcsColumn
23 acs={
24 {caslib="sales",
25 TABLE="Receipts",
26 column="CCnum",
27 identity="*",
28 identityType="Group",
29 permType="Deny",
30 permission="ReadInfo"},
31 {caslib="sales",
32 TABLE="Receipts",
33 column="CCnum",
34 identity="*",
35 identityType="Group",
36 permType="Deny",
37 permission="Select"},
38 {caslib="sales",
39 TABLE="Receipts",
40 column="CCnum",
41 identity="groupA",
42 identityType="Group",
43 permType="Grant",
44 permission="ReadInfo"},
45 {caslib="sales",
46 TABLE="Receipts",
47 column="CCnum",
48 identity="groupA",
49 identityType="Group",
50 permType="Grant",
51 permission="Select"}
52 };
53RUN;
54 
55/* Vérifier les accès (en tant qu'administrateur ou membre de groupA pour voir CCnum) */
56PROC CAS;
57 ACCESSCONTROL.viewAcsTable{caslib="sales", TABLE="Receipts"};
58RUN;
59 
2 Bloque de código
CASL
Explicación :
Este ejemplo demuestra cómo revocar todos los permisos de acceso (ReadInfo, Select, Update, Delete) en la tabla 'Receipts' para un usuario específico ('userB'). Esto impide que 'userB' realice cualquier operación en esta tabla, independientemente de cualquier otro permiso heredado o general.
¡Copiado!
1CAS auto;
2CASLIB _ALL_ assign;
3 
4/* Supposons que la table 'Receipts' existe dans la caslib 'sales' */
5/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
6DATA casuser.Receipts;
7 LENGTH ID 8 Nom $ 20 CCnum $ 16;
8 INPUT ID Nom $ CCnum $;
9 DATALINES;
10101 John_Doe 1234-5678-9012-3456
11102 Jane_Smith 9876-5432-1098-7654
12103 Peter_Jones 1122-3344-5566-7788
13;
14RUN;
15 
16/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
17PROC CASUTIL;
18 load DATA=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
19RUN;
20 
21/* Révoquer toutes les permissions (ReadInfo, Select, Update, Delete) sur la table 'Receipts' pour 'userB' */
22PROC CAS;
23 ACCESSCONTROL.updSomeAcsTable
24 acs={
25 {caslib="sales",
26 TABLE="Receipts",
27 identity="userB",
28 identityType="User",
29 permType="Deny",
30 permission="ReadInfo"},
31 {caslib="sales",
32 TABLE="Receipts",
33 identity="userB",
34 identityType="User",
35 permType="Deny",
36 permission="Select"},
37 {caslib="sales",
38 TABLE="Receipts",
39 identity="userB",
40 identityType="User",
41 permType="Deny",
42 permission="Update"},
43 {caslib="sales",
44 TABLE="Receipts",
45 identity="userB",
46 identityType="User",
47 permType="Deny",
48 permission="Delete"}
49 };
50RUN;
51 
52/* Vérifier les accès (en tant qu'administrateur) */
53PROC CAS;
54 ACCESSCONTROL.viewAcsTable{caslib="sales", TABLE="Receipts"};
55RUN;
56 
3 Bloque de código
CASL
Explicación :
Este ejemplo crea un filtro a nivel de fila para la tabla 'SalesData'. La acción `accessControl.updSomeAcsTable` se utiliza para otorgar el permiso 'RowFilter' a 'groupEast' con la condición 'Region = 'East''. Esto significa que cualquier usuario miembro de 'groupEast' solo verá las filas donde la columna 'Region' sea 'East', incluso si tiene acceso a toda la tabla, ofreciendo un control de acceso dinámico y avanzado.
¡Copiado!
1CAS auto;
2CASLIB _ALL_ assign;
3 
4/* Créer une table de données avec une colonne région */
5DATA casuser.SalesData;
6 LENGTH Region $ 10 Product $ 10 Sales 8;
7 INPUT Region $ Product $ Sales;
8 DATALINES;
9East A 100
10West B 150
11East C 200
12South D 50
13North E 120
14West F 180
15;
16RUN;
17 
18/* Charger la table dans la caslib 'sales' */
19PROC CASUTIL;
20 load DATA=casuser.SalesData outcaslib="sales" casout="SalesData" replace;
21RUN;
22 
23/* Définir un filtre au niveau des lignes : 'groupEast' ne voit que les données de la région 'East' */
24PROC CAS;
25 ACCESSCONTROL.updSomeAcsTable
26 acs={
27 {caslib="sales",
28 TABLE="SalesData",
29 identity="groupEast",
30 identityType="Group",
31 permType="Grant",
32 permission="RowFilter",
33 filter="Region = 'East'"}
34 };
35RUN;
36 
37/* Vérifier les accès (en tant qu'administrateur, puis simuler groupEast) */
38PROC CAS;
39 ACCESSCONTROL.viewAcsTable{caslib="sales", TABLE="SalesData"};
40 /* Pour tester, un utilisateur de 'groupEast' verrait : */
41 /* proc cas;
42 simple.fetch caslib='sales' table='SalesData';
43 run; */
44RUN;
45 
4 Bloque de código
CASL
Explicación :
Este ejemplo utiliza la acción `accessControl.viewAcsCaslib` para mostrar todos los controles de acceso definidos en una caslib específica, aquí 'mylib'. Esta es una acción útil para los administradores para auditar y comprender los permisos aplicados a los recursos CAS. El ejemplo incluye la creación de una caslib temporal y la asignación de un permiso simple para que el ejemplo sea ejecutable y relevante.
¡Copiado!
1CAS auto;
2CASLIB _ALL_ assign;
3 
4/* Supposons qu'une caslib 'mylib' existe et que des contrôles d'accès y sont définis */
5/* Vous pouvez créer une caslib de démonstration si nécessaire */
6PROC CAS;
7 caslib _name_="mylib" path="/tmp/mylib" subdirs;
8RUN;
9 
10/* Assigner des permissions de démonstration à la caslib */
11PROC CAS;
12 ACCESSCONTROL.updSomeAcsCaslib
13 acs={
14 {caslib="mylib",
15 identity="userA",
16 identityType="User",
17 permType="Grant",
18 permission="Read"}
19 };
20RUN;
21 
22/* Visualiser tous les contrôles d'accès définis pour la caslib 'mylib' */
23PROC CAS;
24 ACCESSCONTROL.viewAcsCaslib{caslib="mylib"};
25RUN;
26 
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved.