Attention : Este código requiere privilegios de administrador.
Este ejemplo modifica el acceso a una tabla CAS (`tableA`) para que un usuario específico (`userA`) solo pueda acceder a las filas donde el valor de la columna `Make` sea 'Ford'. Muestra el uso de la acción `accessControl.updSomeAcsTable` para asignar permisos de 'Select' y 'ReadInfo' con una condición de filtrado a nivel de filas. Se asume que el usuario no tiene ya un acceso `ReadInfo` a la tabla. Los ejemplos incluyen la creación de una tabla CAS temporal para asegurar la autonomía.
Análisis de datos
Type : CREATION_INTERNE
Los ejemplos utilizan datos generados a través de un DATA Step con Datalines, cargados luego en CAS (caslib 'casuser').
1 Bloque de código
DATA STEP / PROC CAS Data
Explicación : Este ejemplo crea una tabla llamada 'Cars' en la caslib 'casuser'. Luego, utiliza la acción `accessControl.updSomeAcsTable` para asignar a 'userA' los permisos de 'Select' y 'ReadInfo' sobre esta tabla. El permiso 'Select' va acompañado de un filtro, garantizando que 'userA' solo pueda ver las filas donde la columna 'Make' tiene el valor 'Ford'.
¡Copiado!
/* Création de données d'exemple dans CAS */
data casuser.Cars;
infile datalines;
input Make $ Model $ Price;
datalines;
Ford Focus 20000
Ford Mustang 35000
Honda Civic 22000
Honda CRV 28000
Toyota Camry 25000
Chevrolet Cruze 21000
;
run;
/* Charger la table dans CAS */
proc cas;
session casauto;
table.promote /
caslib='casuser'
name='Cars'
replace=true;
run;
quit;
/* Appliquer le filtre de sécurité au niveau ligne pour 'userA' */
/* Note: 'userA' doit exister dans l'environnement SAS Viya */
proc cas;
session casauto;
accessControl.updSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Grant",
permission="Select",
filter="Make='Ford'"},
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Grant",
permission="ReadInfo"}
};
run;
quit;
1
/* Création de données d'exemple dans CAS */
2
DATA casuser.Cars;
3
INFILEDATALINES;
4
INPUT Make $ Model $ Price;
5
DATALINES;
6
Ford Focus 20000
7
Ford Mustang 35000
8
Honda Civic 22000
9
Honda CRV 28000
10
Toyota Camry 25000
11
Chevrolet Cruze 21000
12
;
13
RUN;
14
15
/* Charger la table dans CAS */
16
PROC CAS;
17
SESSION casauto;
18
TABLE.promote /
19
caslib='casuser'
20
name='Cars'
21
replace=true;
22
RUN;
23
QUIT;
24
25
/* Appliquer le filtre de sécurité au niveau ligne pour 'userA' */
26
/* Note: 'userA' doit exister dans l'environnement SAS Viya */
27
PROC CAS;
28
SESSION casauto;
29
ACCESSCONTROL.updSomeAcsTable /
30
acs={
31
{caslib="casuser",
32
TABLE="Cars",
33
identity="userA",
34
identityType="User",
35
permType="Grant",
36
permission="Select",
37
filter="Make='Ford'"},
38
{caslib="casuser",
39
TABLE="Cars",
40
identity="userA",
41
identityType="User",
42
permType="Grant",
43
permission="ReadInfo"}
44
};
45
RUN;
46
QUIT;
2 Bloque de código
PROC CAS
Explicación : Este ejemplo extiende el concepto de filtrado aplicando un filtro más complejo para 'userB'. Este filtro permite a 'userB' ver las filas donde 'Make' es 'Honda' O 'Price' es mayor a 25000. Además de los permisos 'Select' y 'ReadInfo', 'userB' también recibe el permiso 'Update' sobre la tabla filtrada.
¡Copiado!
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
/* Appliquer un filtre plus complexe et des permissions additionnelles pour 'userB' */
/* Note: 'userB' doit exister dans l'environnement SAS Viya */
proc cas;
session casauto;
accessControl.updSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userB",
identityType="User",
permType="Grant",
permission="Select",
filter="Make='Honda' OR Price > 25000"},
{caslib="casuser",
table="Cars",
identity="userB",
identityType="User",
permType="Grant",
permission="ReadInfo"},
{caslib="casuser",
table="Cars",
identity="userB",
identityType="User",
permType="Grant",
permission="Update"}
};
run;
quit;
1
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
2
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
3
4
/* Appliquer un filtre plus complexe et des permissions additionnelles pour 'userB' */
5
/* Note: 'userB' doit exister dans l'environnement SAS Viya */
6
PROC CAS;
7
SESSION casauto;
8
ACCESSCONTROL.updSomeAcsTable /
9
acs={
10
{caslib="casuser",
11
TABLE="Cars",
12
identity="userB",
13
identityType="User",
14
permType="Grant",
15
permission="Select",
16
filter="Make='Honda' OR Price > 25000"},
17
{caslib="casuser",
18
TABLE="Cars",
19
identity="userB",
20
identityType="User",
21
permType="Grant",
22
permission="ReadInfo"},
23
{caslib="casuser",
24
TABLE="Cars",
25
identity="userB",
26
identityType="User",
27
permType="Grant",
28
permission="Update"}
29
};
30
RUN;
31
QUIT;
3 Bloque de código
PROC CAS
Explicación : Este ejemplo ilustra cómo usar una macro-variable SAS (`selected_make`) para insertar dinámicamente un valor en la condición de filtro. Esto simula un filtro dinámico sin necesidad de recodificar la acción. 'userC' tendrá acceso filtrado para los coches de marca 'Toyota'.
¡Copiado!
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
%let selected_make = Toyota;
/* Appliquer le filtre de sécurité avec une valeur dynamique pour 'userC' */
/* Note: 'userC' doit exister dans l'environnement SAS Viya */
proc cas;
session casauto;
accessControl.updSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userC",
identityType="User",
permType="Grant",
permission="Select",
filter="Make='%upcase(&selected_make)'"},
{caslib="casuser",
table="Cars",
identity="userC",
identityType="User",
permType="Grant",
permission="ReadInfo"}
};
run;
quit;
1
/* Assurez-vous que la table 'Cars' existe et est chargée comme dans l'Exemple 1 */
2
/* Si non, exécuter la partie de création de données de l'Exemple 1 */
3
4
%let selected_make = Toyota;
5
6
/* Appliquer le filtre de sécurité avec une valeur dynamique pour 'userC' */
7
/* Note: 'userC' doit exister dans l'environnement SAS Viya */
8
PROC CAS;
9
SESSION casauto;
10
ACCESSCONTROL.updSomeAcsTable /
11
acs={
12
{caslib="casuser",
13
TABLE="Cars",
14
identity="userC",
15
identityType="User",
16
permType="Grant",
17
permission="Select",
18
filter="Make='%upcase(&selected_make)'"},
19
{caslib="casuser",
20
TABLE="Cars",
21
identity="userC",
22
identityType="User",
23
permType="Grant",
24
permission="ReadInfo"}
25
};
26
RUN;
27
QUIT;
4 Bloque de código
PROC CAS
Explicación : Este ejemplo muestra cómo revocar los permisos (y, por lo tanto, el filtro de filas asociado) que se atribuyeron previamente a 'userA' sobre la tabla 'Cars'. La acción `accessControl.dropSomeAcsTable` con `permType='Revoke'` se utiliza para retirar los permisos 'Select' y 'ReadInfo', lo que también anula el filtro a nivel de filas para estos permisos. Después de esta operación, 'userA' ya no tendrá el acceso filtrado.
¡Copiado!
/* Assurez-vous qu'un filtre existe pour 'userA' comme dans l'Exemple 1 */
/* Suppression des permissions de sélection et ReadInfo pour 'userA' sur 'Cars' avec le filtre */
proc cas;
session casauto;
accessControl.dropSomeAcsTable /
acs={
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Revoke", /* Utiliser Revoke pour supprimer les permissions */
permission="Select"},
{caslib="casuser",
table="Cars",
identity="userA",
identityType="User",
permType="Revoke",
permission="ReadInfo"}
};
run;
quit;
/* Après exécution, 'userA' n'aura plus les permissions 'Select' et 'ReadInfo' sur la table 'Cars', et le filtre de lignes associé sera supprimé. */
1
/* Assurez-vous qu'un filtre existe pour 'userA' comme dans l'Exemple 1 */
2
3
/* Suppression des permissions de sélection et ReadInfo pour 'userA' sur 'Cars' avec le filtre */
4
PROC CAS;
5
SESSION casauto;
6
ACCESSCONTROL.dropSomeAcsTable /
7
acs={
8
{caslib="casuser",
9
TABLE="Cars",
10
identity="userA",
11
identityType="User",
12
permType="Revoke", /* Utiliser Revoke pour supprimer les permissions */
13
permission="Select"},
14
{caslib="casuser",
15
TABLE="Cars",
16
identity="userA",
17
identityType="User",
18
permType="Revoke",
19
permission="ReadInfo"}
20
};
21
RUN;
22
QUIT;
23
24
/* Après exécution, 'userA' n'aura plus les permissions 'Select' et 'ReadInfo' sur la table 'Cars', et le filtre de lignes associé sera supprimé. */
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.