

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.

# Plantillas de políticas de permisos verificados de Amazon y políticas vinculadas a plantillas
<a name="policy-templates"></a>

En los permisos verificados, las plantillas de políticas son políticas con marcadores de posición para los permisos verificados `principal``resource`, o para ambos. Las plantillas de políticas por sí solas no se pueden utilizar para gestionar las solicitudes de autorización. Para gestionar las solicitudes de autorización, se debe crear una *política vinculada a una plantilla* basada en una plantilla de política. Las plantillas de políticas permiten definir una política una vez y, después, utilizarla con varios principios y recursos. Las actualizaciones de la plantilla de política se reflejan en todas las políticas que utilizan la plantilla. Para obtener información más detallada consulte [Plantillas de política de Cedar](https://docs.cedarpolicy.com/policies/templates.html) en la Guía de referencia sobre el lenguaje de las políticas de Cedar.

Si lo desea, puede asignar un nombre de plantilla de política a una plantilla de política. Los nombres de las plantillas de políticas deben ser únicos en el almacén de políticas y tener el prefijo. `name/` Puede utilizar un nombre de plantilla de política en lugar del ID de la plantilla de política en las operaciones del plano de control que acepten un `policyTemplateId` parámetro. Solo `GetPolicyTemplate` y `ListPolicyTemplates` devuelve el nombre en la salida. En el siguiente ejemplo, se utiliza un nombre de plantilla de política para recuperar una plantilla de política con`GetPolicyTemplate`.

```
$ aws verifiedpermissions get-policy-template \
    --policy-template-id name/example-policy-template \
    --policy-store-id PSEXAMPLEabcdefg111111
```

Por ejemplo, la siguiente plantilla de política proporciona `Read` y `Comment` permisos para el principal y el recurso que utilizan la plantilla de política. `Edit`

```
permit(
  principal == ?principal,
  action in [Action::"Read", Action::"Edit", Action::"Comment"],
  resource == ?resource
);
```

Si tuviera que crear una política con un nombre `Editor` basado en esta plantilla, cuando se designe a un director como editor de un recurso específico, su aplicación crearía una política que otorgue permisos al director para leer, editar y comentar el recurso.

A diferencia de las políticas estáticas, las políticas vinculadas a plantillas son dinámicas. Tomemos el ejemplo anterior: si eliminara la `Comment` acción de la plantilla de política, cualquier política vinculada a esa plantilla o basada en ella se actualizaría en consecuencia y los directores especificados en las políticas ya no podrían hacer comentarios sobre los recursos correspondientes.

Para ver más ejemplos de políticas vinculadas a plantillas, consulte. [Ejemplos de políticas vinculadas a plantillas de permisos verificados de Amazon](policy-templates-example-policies.md)

# Creación de plantillas de políticas de permisos verificados de Amazon
<a name="policy-templates-create"></a>

Puede crear plantillas de políticas en Verified Permissions utilizando el Consola de administración de AWS AWS CLI, el o el AWS SDKs. Las plantillas de políticas permiten definir una política una vez y, a continuación, utilizarla con varios principios y recursos. Una vez que haya creado una plantilla de política, podrá crear políticas vinculadas a plantillas para utilizarlas con principios y recursos específicos. Para obtener más información, consulte [Creación de políticas vinculadas a plantillas de permisos verificados de Amazon](policy-templates-create-policy.md).

------
#### [ Consola de administración de AWS ]

**Creación de una plantilla de política**

1. [Abra la consola de permisos verificados.](https://console.aws.amazon.com/verifiedpermissions/) Elige tu almacén de políticas.

1. En el panel de navegación de la izquierda, elija **Plantillas de política**.

1. Elija **Crear plantilla de política**.

1. En la sección **Detalles**, escriba una **descripción de la plantilla de política**.

1. En la sección **Cuerpo de la plantilla de política**, utilice los marcadores de posición `?principal` y `?resource` para permitir que las políticas creadas a partir de esta plantilla personalicen los permisos que conceden. Puede elegir **Formato** para dar formato a la sintaxis de su plantilla de política con el espaciado y la sangría recomendados.

1. Elija **Crear plantilla de política**.

------
#### [ AWS CLI ]

**Para crear una plantilla de política**  
Puede crear una plantilla de políticas mediante la [CreatePolicyTemplate](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_CreatePolicyTemplate.html)operación. En el siguiente ejemplo, se crea una plantilla de política con un marcador de posición para la entidad principal.

El archivo `template1.txt` contiene lo siguiente.

```
"VacationAccess"
permit(
    principal in ?principal,
    action == Action::"view",
    resource == Photo::"VacationPhoto94.jpg"
);
```

```
$ aws verifiedpermissions create-policy-template \
    --description "Template for vacation picture access" 
    --statement file://template1.txt 
    --policy-store-id PSEXAMPLEabcdefg111111
{
    "createdDate": "2023-05-18T21:17:47.284268+00:00",
    "lastUpdatedDate": "2023-05-18T21:17:47.284268+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

**Para crear una plantilla de política con un nombre de plantilla de política**  
Si lo desea, puede especificar un nombre de plantilla de política al crear una plantilla de política. El nombre debe ser único para todas las plantillas de políticas del almacén de políticas y debe tener el prefijo. `name/` Puede usar el nombre en lugar del ID de la plantilla de políticas.

```
$ aws verifiedpermissions create-policy-template \
    --description "Template for vacation picture access" \
    --statement file://template1.txt \
    --policy-store-id PSEXAMPLEabcdefg111111 \
    --name name/example-policy-template
{
    "createdDate": "2023-06-12T20:47:42.804511+00:00",
    "lastUpdatedDate": "2023-06-12T20:47:42.804511+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

**nota**  
Si especifica un nombre que ya está asociado a otra plantilla de políticas en el almacén de políticas, recibirá un `ConflictException` error.

------

# Creación de políticas vinculadas a plantillas de permisos verificados de Amazon
<a name="policy-templates-create-policy"></a>

Puede crear políticas vinculadas a plantillas, o políticas que se basen en una plantilla de política, utilizando, o. Consola de administración de AWS AWS CLI AWS SDKs Las políticas vinculadas a plantillas permanecen vinculadas a sus plantillas de políticas. Si cambia la declaración de política en la plantilla de política, cualquier política vinculada a esa plantilla utilizará automáticamente la nueva declaración para todas las decisiones de autorización que se tomen a partir de ese momento.

Para ver ejemplos de políticas vinculadas a plantillas, consulte. [Ejemplos de políticas vinculadas a plantillas de permisos verificados de Amazon](policy-templates-example-policies.md)

------
#### [ Consola de administración de AWS ]

**Para crear una política vinculada a una plantilla mediante la creación de una instancia de plantilla de política**

1. Abra la consola de permisos [verificados](https://console.aws.amazon.com/verifiedpermissions/). Elige tu almacén de políticas.

1. En el panel de navegación de la izquierda, elija **Políticas**.

1. Seleccione **Crear política** y, a continuación, elija **Crear política vinculada a una plantilla**.

1. Seleccione el botón de opción situado junto a la plantilla de política que desee utilizar y, a continuación, elija **Siguiente**.

1. Escriba la **entidad principal** y el **recurso** que desea utilizar para esta instancia específica de la política vinculada a la plantilla. Los valores especificados se muestran en el campo de **vista previa de la instrucción de política**.
**nota**  
Los valores de **Entidad principal** y **Recurso** deben tener el mismo formato que las políticas estáticas. Por ejemplo, para especificar el grupo `AdminUsers` de la entidad principal, escriba `Group::"AdminUsers"`. Si escribe `AdminUsers`, se muestra un error de validación.

1. Seleccione **Crear política vinculada a una plantilla**.

   La nueva política vinculada a una plantilla se muestra en **Políticas**.

------
#### [ AWS CLI ]

**Para crear una política vinculada a una plantilla mediante la creación de una instancia de plantilla de política**  
Puede crear una política vinculada a una plantilla que haga referencia a una plantilla de política existente y que especifique los valores de cualquier marcador de posición utilizado por la plantilla. 

En el siguiente ejemplo, se crea una política vinculada a una plantilla que utiliza una plantilla con la siguiente instrucción:

```
permit(
    principal in ?principal,
    action == PhotoFlash::Action::"view",
    resource == PhotoFlash::Photo::"VacationPhoto94.jpg"
);
```

También utiliza el siguiente archivo `definition.txt` para proporcionar el valor del parámetro `definition`:

```
{
    "templateLinked": {
        "policyTemplateId": "PTEXAMPLEabcdefg111111",
        "principal": {
            "entityType": "PhotoFlash::User",
            "entityId": "alice"
        }
    }
}
```

La salida muestra tanto el recurso, que se obtiene de la plantilla, como la entidad principal, que se obtiene del parámetro de definición.

```
$ aws verifiedpermissions create-policy \
    --definition file://definition.txt
    --policy-store-id PSEXAMPLEabcdefg111111
{
    "createdDate": "2023-05-22T18:57:53.298278+00:00",
    "lastUpdatedDate": "2023-05-22T18:57:53.298278+00:00",
    "policyId": "TPEXAMPLEabcdefg111111",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyType": "TEMPLATELINKED",
    "principal": {
        "entityId": "alice",
        "entityType": "PhotoFlash::User"
    },
    "resource": {
        "entityId": "VacationPhoto94.jpg",
        "entityType": "PhotoFlash::Photo"
    }
}
```

------

# Edición de plantillas de política de permisos verificados de Amazon
<a name="policy-templates-edit"></a>

Puede editar o actualizar las plantillas de políticas en Verified Permissions utilizando el Consola de administración de AWS AWS CLI, el o el AWS SDKs. Al editar una plantilla de políticas, se actualizarán automáticamente las políticas que estén vinculadas a la plantilla o se basen en ella, así que tenga cuidado al editar las plantillas de políticas y asegúrese de no introducir accidentalmente un cambio que interrumpa su solicitud.

Puede cambiar los siguientes elementos de una plantilla de política:
+ Los `action` referenciados por la plantilla de política
+ Una cláusula de condición, como `when` y `unless`

No puede cambiar los siguientes elementos de una plantilla de política. Para cambiar cualquiera de estos elementos, tendrá que eliminar y volver a crear la plantilla de política.
+ El efecto de una plantilla de política a partir de `permit` o `forbid`
+ Al que `principal` hace referencia una plantilla de política
+ Al que `resource` hace referencia una plantilla de política

------
#### [ Consola de administración de AWS ]

**Para editar sus plantillas de política**

1. Abra la [consola de permisos verificados](https://console.aws.amazon.com/verifiedpermissions/). Elige tu almacén de políticas.

1. En el panel de navegación de la izquierda, elija **Plantillas de política**. La consola muestra todas las plantillas de política que creó en el almacén de políticas actual.

1. Pulse el botón de opción situado junto a una plantilla de política para ver los detalles de la plantilla de política, como cuándo se creó, se actualizó y su contenido.

1. Seleccione **Editar** para editar sus plantillas de política. Actualice la **descripción** y el **cuerpo de la política** según sea necesario y, a continuación, seleccione **Actualizar la plantilla de política**.

1. Para eliminar una plantilla de política, pulse el botón de opción situado junto a la plantilla de política y, a continuación, seleccione **Eliminar**. Pulse **Aceptar** para confirmar la eliminación de la plantilla de política.

------
#### [ AWS CLI ]

**Para editar una plantilla de política**  
Puede crear una política estática mediante la [UpdatePolicy](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_UpdatePolicy.html)operación. En el siguiente ejemplo, la plantilla de política especificada se actualiza sustituyendo su cuerpo de política por una nueva política definida en un archivo.

Contenido del archivo `template1.txt`:

```
permit(
    principal in ?principal,
    action == Action::"view",
    resource in ?resource)
when {
    principal has department && principal.department == "research"
};
```

```
$ aws verifiedpermissions update-policy-template \
    --policy-template-id PTEXAMPLEabcdefg111111 \
    --description "My updated template description" \
    --statement file://template1.txt \ 
    --policy-store-id PSEXAMPLEabcdefg111111
{
    "createdDate": "2023-05-17T18:58:48.795411+00:00",
    "lastUpdatedDate": "2023-05-17T19:18:48.870209+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

**Para actualizar el nombre de una plantilla de política**  
Puede establecer o actualizar el nombre de una plantilla de política al actualizar una plantilla de política. El nombre debe ser único para todas las plantillas de políticas del almacén de políticas y debe ir precedido de`name/`. Si no incluye el campo de nombre en la solicitud de actualización, el nombre existente no cambiará. Para eliminar un nombre, configúrelo en una cadena vacía.

```
$ aws verifiedpermissions update-policy-template \
    --policy-template-id PTEXAMPLEabcdefg111111 \
    --statement file://template1.txt \
    --policy-store-id PSEXAMPLEabcdefg111111 \
    --name name/example-policy-template
{
    "createdDate": "2023-05-17T18:58:48.795411+00:00",
    "lastUpdatedDate": "2023-05-17T19:18:48.870209+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

------

# Ejemplos de políticas vinculadas a plantillas de permisos verificados de Amazon
<a name="policy-templates-example-policies"></a>

Al crear un almacén de políticas en Verified Permissions mediante el método de **almacén de políticas de muestra**, el almacén de políticas se crea con políticas predefinidas, plantillas de políticas y un esquema para el proyecto de ejemplo que haya elegido. Los siguientes ejemplos de políticas vinculadas a plantillas de Verified Permissions se pueden utilizar con los almacenes de políticas de muestra y sus políticas, plantillas de políticas y esquemas respectivos.

## PhotoFlash ejemplos
<a name="policy-templates-example-policies-photoflash"></a>

El siguiente ejemplo muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política **Conceder acceso limitado a las fotos no privadas compartidas** con un usuario y una foto individuales.

**nota**  
El lenguaje de las políticas de Cedar considera que una entidad está `in`. Por lo tanto, `principal in User::"Alice"` es equivalente a `principal == User::"Alice"`.

```
permit (
 principal in PhotoFlash::User::"Alice",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Photo::"VacationPhoto94.jpg"
 );
```

El siguiente ejemplo muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política **Conceder acceso limitado a las fotos compartidas no privadas** con un usuario y un álbum individuales.

```
permit (
 principal in PhotoFlash::User::"Alice",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Album::"Italy2023"
 );
```

El siguiente ejemplo muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política **Conceder acceso limitado a las fotos no privadas compartidas** con un grupo de amigos y una foto individual.

```
permit (
 principal in PhotoFlash::FriendGroup::"Jane::MySchoolFriends",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Photo::"VacationPhoto94.jpg"
 );
```

En el siguiente ejemplo, se muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política **Conceder acceso limitado a las fotos compartidas de carácter no privado** con un grupo de amigos y un álbum.

```
permit (
 principal in PhotoFlash::FriendGroup::"Jane::MySchoolFriends",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Album::"Italy2023"
 );
```

En el siguiente ejemplo, se muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política **Conceder acceso total a las fotos compartidas no privadas** con un grupo de amigos y una foto individual.

```
permit (
 principal in PhotoFlash::UserGroup::"Jane::MySchoolFriends",
 action in PhotoFlash::Action::"SharePhotoFullAccess",
 resource in PhotoFlash::Photo::"VacationPhoto94.jpg"
 );
```

**En el siguiente ejemplo, se muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política Bloquear a un usuario de una cuenta.**

```
forbid(
 principal == PhotoFlash::User::"Bob",
 action,
 resource in PhotoFlash::Account::"Alice-account"
 );
```

## DigitalPetStore ejemplos
<a name="policy-templates-example-policies-digitalpetstore"></a>

El almacén de políticas de DigitalPetStore muestra no incluye ninguna plantilla de políticas. Para ver las políticas incluidas en el almacén de políticas, seleccione **Políticas** en el panel de navegación de la izquierda después de crear el almacén de políticas de **DigitalPetStore**muestra.

## TinyToDo ejemplos
<a name="policy-templates-example-policies-tinytodo"></a>

El siguiente ejemplo muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política que da acceso al espectador a un usuario individual y a una lista de tareas.

```
permit (
    principal == TinyTodo::User::"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_h2aKCU1ts|5ae0c4b1-6de8-4dff-b52e-158188686f31|bob",
    action in [TinyTodo::Action::"ReadList", TinyTodo::Action::"ListTasks"],
    resource == TinyTodo::List::"1"
);
```

El siguiente ejemplo muestra cómo se puede crear una política vinculada a una plantilla que utilice la plantilla de política que da acceso de editor a un usuario individual y a una lista de tareas.

```
permit (
    principal == TinyTodo::User::"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_h2aKCU1ts|5ae0c4b1-6de8-4dff-b52e-158188686f31|bob",
    action in [
        TinyTodo::Action::"ReadList",
        TinyTodo::Action::"UpdateList",
        TinyTodo::Action::"ListTasks",
        TinyTodo::Action::"CreateTask",
        TinyTodo::Action::"UpdateTask",
        TinyTodo::Action::"DeleteTask"
    ],
    resource == TinyTodo::List::"1"
);
```