Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Permite el acceso a los atributos de una entidad (ABAC)
El control de acceso basado en atributos (ABAC) es una estrategia de autorización que define permisos en función de atributos. Verified Permissions permite adjuntar atributos a las entidades principales, las acciones y los recursos. Después se puede hacer referencia a estos atributos en las cláusulas when
y unless
de las políticas que evalúan los atributos de las entidades principales, las acciones y los recursos que componen el contexto de la solicitud.
En los ejemplos siguientes se utilizan los atributos definidos en la aplicación hipotética denominada PhotoFlash descrita en la sección de ejemplos de esquemas
En este ejemplo se muestra cómo puede crear una política que permita a cualquier entidad principal del departamento HardwareEngineering
con un nivel de trabajo superior o igual a 5 ver y publicar las fotos del álbum device_prototypes
.
permit( principal, action in [Action::"listPhotos", Action::"view"], resource in Album::"device_prototypes" ) when { principal.department == "HardwareEngineering" && principal.jobLevel >= 5 };
En este ejemplo, se muestra cómo puede crear una política que permita al usuario alice
ver cualquier recurso de tipo de archivo JPEG
.
permit( principal == User::"alice", action == Action::"view", resource ) when { resource.fileType == "JPEG" };
Las acciones tienen atributos de contexto. Debe incluir estos atributos en una solicitud context
de autorización. En este ejemplo se muestra cómo se puede crear una política que permita alice
al usuario realizar cualquier readOnly
acción. También puede establecer una appliesTo
propiedad para las acciones del esquema. Esto especifica las acciones válidas para un recurso cuando se quiere garantizar que, por ejemplo, los usuarios solo puedan intentar autorizar ViewPhoto
un recurso de ese tipoPhotoFlash::Photo
.
permit( principal == PhotoFlash::User::"alice", action, resource ) when { context has readOnly && context.readOnly == true };
Sin embargo, una forma mejor de establecer las propiedades de las acciones del esquema es organizarlas en grupos de acciones funcionales. Por ejemplo, puede crear una acción con el nombre de un grupo de acciones ReadOnlyPhotoAccess
y PhotoFlash::Action::"ViewPhoto"
configurarla ReadOnlyPhotoAccess
como miembro. En este ejemplo, se muestra cómo se puede crear una política que conceda a Alice acceso a las acciones de solo lectura de ese grupo.
permit( principal == PhotoFlash::User::"alice", action, resource ) when { action in PhotoFlash::Action::"ReadOnlyPhotoAccess" };
En este ejemplo, se muestra cómo puede crear una política que permita a todas las entidades principales realizar cualquier acción en los recursos para los cuales tengan el atributo owner
.
permit( principal, action, resource ) when { principal == resource.owner };
En este ejemplo se muestra cómo puede crear una política que permita a cualquier entidad principal ver cualquier recurso si el atributo department
de la entidad principal coincide con el atributo department
del recurso.
nota
Si una entidad no tiene un atributo mencionado en una condición de la política, la política se ignorará al tomar una decisión de autorización y la evaluación de esa política fallará para esa entidad. Por ejemplo, esta política no puede conceder acceso a ningún recurso a ninguna entidad principal que no tenga un atributo department
.
permit( principal, action == Action::"view", resource ) when { principal.department == resource.owner.department };
En este ejemplo, se muestra cómo puede crear una política que permita a cualquier entidad principal realizar cualquier acción en un recurso si la entidad principal es el owner
del recurso O si la entidad principal forma parte del grupo admins
del recurso.
permit( principal, action, resource, ) when { principal == resource.owner | resource.admins.contains(principal) };