Diferencias entre los permisos verificados de Amazon y el lenguaje de la política de Cedar - Amazon Verified Permissions

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.

Diferencias entre los permisos verificados de Amazon y el lenguaje de la política de Cedar

Amazon Verified Permissions utiliza el motor de lenguaje de políticas de Cedar para realizar las tareas de autorización. Sin embargo, existen algunas diferencias entre la implementación nativa de Cedar y la implementación de Cedar en Verified Permissions. En este tema se explican esas diferencias.

Definición de espacio de nombres

La implementación de Verified Permissions de Cedar presenta las siguientes diferencias con respecto a la implementación nativa de Cedar:

  • Verified Permissions solo admite un espacio de nombres en un esquema definido en un almacén de políticas.

  • Los permisos verificados no permiten crear un espacio de nombres que sea una cadena vacía o que incluya los siguientes valores:aws,amazon, o. cedar

Compatibilidad con las plantillas de política

Tanto Verified Permissions como Cedar solo permiten marcadores de posición en el ámbito para principal y resource. Sin embargo, Verified Permissions también requiere que ni principal ni resource carezcan de restricciones.

La siguiente política es válida en Cedar, pero Verified Permissions la rechaza porque la principal no tiene restricciones.

permit(principal, action == Action::"view", resource == ?resource);

Los dos ejemplos siguientes son válidos tanto en Cedar como en Verified Permissions porque la principal y el resource tienen restricciones.

permit(principal == User::"alice", action == Action::"view", resource == ?resource);
permit(principal == ?principal, action == Action::"a", resource in ?resource);

Compatibilidad con esquemas

Los permisos verificados requieren que todos los nombres de las JSON claves del esquema no sean cadenas vacías. Cedar permite cadenas vacías en algunos casos, como en el caso de propiedades o espacios de nombres.

Compatibilidad con tipos de extensión

Verified Permissions admite los tipos de extensión de Cedar en las políticas, pero actualmente no permite incluirlos en la definición de un esquema a través de la consola de permisos verificados.

Los tipos de extensión incluyen los tipos de datos de punto fijo (decimal) y dirección IP (ipaddr).

JSONFormato Cedar para entidades

En este momento, los permisos verificados requieren que pase la lista de entidades que se van a tener en cuenta en una solicitud de autorización utilizando la estructura definida para ellos EntitiesDefinition, que es una matriz de EntityItemelementos. Actualmente, Verified Permissions no permite aprobar la lista de entidades que deben tenerse en cuenta en una solicitud de autorización en JSONformato Cedar. Para conocer los requisitos específicos sobre el formato de las entidades para su uso en Verified Permissions, consulte Formato de entidades.

Definición de grupos de acción

Los métodos de autorización de Cedar requieren una lista de las entidades que se deben tener en cuenta al evaluar una solicitud de autorización con respecto a las políticas.

Puede definir las acciones y los grupos de acciones que utiliza su aplicación en el esquema. Sin embargo, Cedar no incluye el esquema como parte de una solicitud de evaluación. En su lugar, Cedar usa el esquema solo para validar las políticas y las plantillas de políticas que envíe. Dado que Cedar no hace referencia al esquema durante las solicitudes de evaluación, incluso si ha definido grupos de acción en el esquema, también debe incluir la lista de todos los grupos de acciones como parte de la lista de entidades que debe pasar a las API operaciones de autorización.

Verified Permissions lo hace por usted. Todos los grupos de acciones que defina en su esquema se anexan automáticamente a la lista de entidades que pase como parámetro de las operaciones IsAuthorized o IsAuthorizedWithToken.

Formato de entidades

El JSON formato de las entidades en Verified Permissions difiere del de Cedar en los siguientes aspectos:

  • En los permisos verificados, un JSON objeto debe tener todos sus pares clave-valor incluidos en un JSON objeto con el nombre de. Record

  • Una JSON lista de permisos verificados debe estar agrupada en un par JSON clave-valor en el que el nombre de la clave sea Set y el valor sea la lista original JSON de Cedar.

  • StringEn el caso Long de los nombres Boolean de tipo y de tipo, cada par clave-valor de Cedar se sustituye por un JSON objeto en Verified Permissions. El nombre del objeto es el nombre de la clave original. Dentro del JSON objeto, hay un par clave-valor en el que el nombre de la clave es el nombre de tipo del valor escalar (String,Long, oBoolean) y el valor es el valor de la entidad Cedar.

  • El formato de la sintaxis de las entidades de Cedar y Verified Permissions difiere en los siguientes aspectos:

    Formato de Cedar Formato de Verified Permissions
    uid Identifier
    type EntityType
    id EntityId
    attrs Attributes
    parents Parents
ejemplo - Listas

Los siguientes ejemplos muestran cómo se expresa una lista de entidades en Cedar y Verified Permissions, respectivamente.

Cedar
[ { "number": 1 }, { "sentence": "Here is an example sentence" }, { "Question": false } ]
Verified Permissions
{ "Set": [ { "Record": { "number": { "Long": 1 } } }, { "Record": { "sentence": { "String": "Here is an example sentence" } } }, { "Record": { "question": { "Boolean": false } } } ] }
ejemplo - Evaluación de políticas

Los siguientes ejemplos muestran cómo se formatean las entidades para evaluar una política en una solicitud de autorización en Cedar y Verified Permissions, respectivamente.

Cedar
[ { "uid": { "type": "PhotoApp::User", "id": "alice" }, "attrs": { "age": 25, "name": "alice", "userId": "123456789012" }, "parents": [ { "type": "PhotoApp::UserGroup", "id": "alice_friends" }, { "type": "PhotoApp::UserGroup", "id": "AVTeam" } ] }, { "uid": { "type": "PhotoApp::Photo", "id": "vacationPhoto.jpg" }, "attrs": { "private": false, "account": { "__entity": { "type": "PhotoApp::Account", "id": "ahmad" } } }, "parents": [] }, { "uid": { "type": "PhotoApp::UserGroup", "id": "alice_friends" }, "attrs": {}, "parents": [] }, { "uid": { "type": "PhotoApp::UserGroup", "id": "AVTeam" }, "attrs": {}, "parents": [] } ]
Verified Permissions
[ { "Identifier": { "EntityType": "PhotoApp::User", "EntityId": "alice" }, "Attributes": { "age": { "Long": 25 }, "name": { "String": "alice" }, "userId": { "String": "123456789012" } }, "Parents": [ { "EntityType": "PhotoApp::UserGroup", "EntityId": "alice_friends" }, { "EntityType": "PhotoApp::UserGroup", "EntityId": "AVTeam" } ] }, { "Identifier": { "EntityType": "PhotoApp::Photo", "EntityId": "vacationPhoto.jpg" }, "Attributes": { "private": { "Boolean": false }, "account": { "EntityIdentifier": { "EntityType": "PhotoApp::Account", "EntityId": "ahmad" } } }, "Parents": [] }, { "Identifier": { "EntityType": "PhotoApp::UserGroup", "EntityId": "alice_friends" }, "Parents": [] }, { "Identifier": { "EntityType": "PhotoApp::UserGroup", "EntityId": "AVTeam" }, "Parents": [] } ]

Límites de longitud y tamaño

Verified Permissions admite el almacenamiento en forma de almacenes de políticas para almacenar esquemas, políticas y plantillas de políticas. Ese almacenamiento hace que Verified Permissions imponga algunos límites de longitud y tamaño que no son relevantes para Cedar.

Objeto Límite de Verified Permissions (en bytes) Límite de Cedar
Tamaño de la política¹ 10 000 Ninguna
Descripción de la política insertada 150 No aplicable a Cedar
Tamaño de la plantilla de política 10 000 Ninguna
Tamaño del esquema 100 000 Ninguna
Tipo de identidad 200 Ninguna
ID de política 64 Ninguna
ID de plantilla de política 64 Ninguna
ID de la identidad 200 Ninguna
ID del almacén de políticas 64 No aplicable a Cedar

¹ Existe un límite de políticas por almacén de políticas en Verified Permissions en función del tamaño combinado de las entidades principales, las acciones y los recursos de las políticas creadas en el almacén de políticas. El tamaño total de todas las políticas pertenecientes a un único recurso no puede superar los 200 000 bytes. En el caso de las políticas vinculadas a plantillas, el tamaño de la plantilla de política se cuenta solo una vez, más el tamaño de cada conjunto de parámetros utilizado para crear una instancia de cada política vinculada a una plantilla.