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!
CAS auto;
CASLIB _ALL_ assign;
/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
DATA casuser.Receipts;
LENGTH ID 8 Nom $ 20 CCnum $ 16;
INPUT ID Nom $ CCnum $;
DATALINES;
101 John_Doe 1234-5678-9012-3456
102 Jane_Smith 9876-5432-1098-7654
103 Peter_Jones 1122-3344-5566-7788
;
RUN;
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
proc casutil;
load data=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
run;
/* Masquer la colonne CCnum pour tous les utilisateurs (*) et la rendre visible pour 'groupA' */
proc cas;
accessControl.updSomeAcsColumn
acs={
{caslib="sales",
table="Receipts",
column="CCnum",
identity="*",
identityType="Group",
permType="Deny",
permission="ReadInfo"},
{caslib="sales",
table="Receipts",
column="CCnum",
identity="*",
identityType="Group",
permType="Deny",
permission="Select"},
{caslib="sales",
table="Receipts",
column="CCnum",
identity="groupA",
identityType="Group",
permType="Grant",
permission="ReadInfo"},
{caslib="sales",
table="Receipts",
column="CCnum",
identity="groupA",
identityType="Group",
permType="Grant",
permission="Select"}
};
run;
/* Vérifier les accès (en tant qu'administrateur ou membre de groupA pour voir CCnum) */
proc cas;
accessControl.viewAcsTable{caslib="sales", table="Receipts"};
run;
1
CAS auto;
2
CASLIB _ALL_ assign;
3
4
/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
5
DATA casuser.Receipts;
6
LENGTH ID 8 Nom $ 20 CCnum $ 16;
7
INPUT ID Nom $ CCnum $;
8
DATALINES;
9
101 John_Doe 1234-5678-9012-3456
10
102 Jane_Smith 9876-5432-1098-7654
11
103 Peter_Jones 1122-3344-5566-7788
12
;
13
RUN;
14
15
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
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!
CAS auto;
CASLIB _ALL_ assign;
/* Supposons que la table 'Receipts' existe dans la caslib 'sales' */
/* Créer une table de démonstration 'Receipts' avec une colonne sensible 'CCnum' */
DATA casuser.Receipts;
LENGTH ID 8 Nom $ 20 CCnum $ 16;
INPUT ID Nom $ CCnum $;
DATALINES;
101 John_Doe 1234-5678-9012-3456
102 Jane_Smith 9876-5432-1098-7654
103 Peter_Jones 1122-3344-5566-7788
;
RUN;
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
proc casutil;
load data=casuser.Receipts outcaslib="sales" casout="Receipts" replace;
run;
/* Révoquer toutes les permissions (ReadInfo, Select, Update, Delete) sur la table 'Receipts' pour 'userB' */
proc cas;
accessControl.updSomeAcsTable
acs={
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="ReadInfo"},
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="Select"},
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="Update"},
{caslib="sales",
table="Receipts",
identity="userB",
identityType="User",
permType="Deny",
permission="Delete"}
};
run;
/* Vérifier les accès (en tant qu'administrateur) */
proc cas;
accessControl.viewAcsTable{caslib="sales", table="Receipts"};
run;
1
CAS auto;
2
CASLIB _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' */
6
DATA casuser.Receipts;
7
LENGTH ID 8 Nom $ 20 CCnum $ 16;
8
INPUT ID Nom $ CCnum $;
9
DATALINES;
10
101 John_Doe 1234-5678-9012-3456
11
102 Jane_Smith 9876-5432-1098-7654
12
103 Peter_Jones 1122-3344-5566-7788
13
;
14
RUN;
15
16
/* Charger la table dans la caslib 'sales' (ou une autre caslib accessible) */
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!
CAS auto;
CASLIB _ALL_ assign;
/* Créer une table de données avec une colonne région */
DATA casuser.SalesData;
LENGTH Region $ 10 Product $ 10 Sales 8;
INPUT Region $ Product $ Sales;
DATALINES;
East A 100
West B 150
East C 200
South D 50
North E 120
West F 180
;
RUN;
/* Charger la table dans la caslib 'sales' */
proc casutil;
load data=casuser.SalesData outcaslib="sales" casout="SalesData" replace;
run;
/* Définir un filtre au niveau des lignes : 'groupEast' ne voit que les données de la région 'East' */
proc cas;
accessControl.updSomeAcsTable
acs={
{caslib="sales",
table="SalesData",
identity="groupEast",
identityType="Group",
permType="Grant",
permission="RowFilter",
filter="Region = 'East'"}
};
run;
/* Vérifier les accès (en tant qu'administrateur, puis simuler groupEast) */
proc cas;
accessControl.viewAcsTable{caslib="sales", table="SalesData"};
/* Pour tester, un utilisateur de 'groupEast' verrait : */
/* proc cas;
simple.fetch caslib='sales' table='SalesData';
run; */
run;
1
CAS auto;
2
CASLIB _ALL_ assign;
3
4
/* Créer une table de données avec une colonne région */
/* Pour tester, un utilisateur de 'groupEast' verrait : */
41
/* proc cas;
42
simple.fetch caslib='sales' table='SalesData';
43
run; */
44
RUN;
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!
CAS auto;
CASLIB _ALL_ assign;
/* Supposons qu'une caslib 'mylib' existe et que des contrôles d'accès y sont définis */
/* Vous pouvez créer une caslib de démonstration si nécessaire */
proc cas;
caslib _name_="mylib" path="/tmp/mylib" subdirs;
run;
/* Assigner des permissions de démonstration à la caslib */
proc cas;
accessControl.updSomeAcsCaslib
acs={
{caslib="mylib",
identity="userA",
identityType="User",
permType="Grant",
permission="Read"}
};
run;
/* Visualiser tous les contrôles d'accès définis pour la caslib 'mylib' */
proc cas;
accessControl.viewAcsCaslib{caslib="mylib"};
run;
1
CAS auto;
2
CASLIB _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 */
6
PROC CAS;
7
caslib _name_="mylib" path="/tmp/mylib" subdirs;
8
RUN;
9
10
/* Assigner des permissions de démonstration à la caslib */
11
PROC CAS;
12
ACCESSCONTROL.updSomeAcsCaslib
13
acs={
14
{caslib="mylib",
15
identity="userA",
16
identityType="User",
17
permType="Grant",
18
permission="Read"}
19
};
20
RUN;
21
22
/* Visualiser tous les contrôles d'accès définis pour la caslib 'mylib' */
23
PROC CAS;
24
ACCESSCONTROL.viewAcsCaslib{caslib="mylib"};
25
RUN;
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.