

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Modelos de política de permissões verificadas da Amazon e políticas vinculadas a modelos
<a name="policy-templates"></a>

Nas Permissões verificadas, os modelos de política são políticas com espaços reservados para `principal``resource`, ou para ambos. Os modelos de política por si só não podem ser usados para lidar com solicitações de autorização. Para lidar com solicitações de autorização, uma *política vinculada ao modelo* deve ser criada com base em um modelo de política. Os modelos de política permitem que uma política seja definida uma vez e depois usada com vários diretores e recursos. As atualizações do modelo de política são refletidas em todas as políticas que usam o modelo. Para obter mais informações, consulte [Modelos de políticas do Cedar](https://docs.cedarpolicy.com/policies/templates.html) no Guia de referência da linguagem de política Cedar.

Opcionalmente, você pode atribuir um nome de modelo de política a um modelo de política. Os nomes dos modelos de política devem ser exclusivos no repositório de políticas e prefixados com`name/`. Você pode usar um nome de modelo de política no lugar do ID do modelo de política em operações do plano de controle que aceitam um `policyTemplateId` parâmetro. Somente `GetPolicyTemplate` e `ListPolicyTemplates` retorne o nome na saída. O exemplo a seguir usa um nome de modelo de política para recuperar um modelo de política com`GetPolicyTemplate`.

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

Por exemplo, o modelo de política a seguir fornece`Read`,`Edit`, e `Comment` permissões para o principal e o recurso que usam o modelo de política.

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

Se você criasse uma política nomeada `Editor` com base nesse modelo, quando um diretor fosse designado como editor de um recurso específico, seu aplicativo criaria uma política que fornecesse permissões para o diretor ler, editar e comentar sobre o recurso.

Diferentemente das políticas estáticas, as políticas vinculadas a modelos são dinâmicas. Veja o exemplo anterior: se você removesse a `Comment` ação do modelo de política, qualquer política vinculada ou baseada nesse modelo seria atualizada adequadamente e os diretores especificados nas políticas não poderiam mais comentar sobre os recursos correspondentes.

Para obter mais exemplos de políticas vinculadas a modelos, consulte. [Exemplo de políticas vinculadas a modelos de permissões verificadas da Amazon](policy-templates-example-policies.md)

# Criação de modelos de política de permissões verificadas da Amazon
<a name="policy-templates-create"></a>

Você pode criar modelos de política em Permissões verificadas usando o Console de gerenciamento da AWS AWS CLI, o ou AWS SDKs o. Os modelos de política permitem que uma política seja definida uma vez e depois usada com vários diretores e recursos. Depois de criar um modelo de política, você pode criar políticas vinculadas a modelos para usar os modelos de política com princípios e recursos específicos. Para obter mais informações, consulte [Criação de políticas vinculadas a modelos de permissões verificadas da Amazon](policy-templates-create-policy.md).

------
#### [ Console de gerenciamento da AWS ]

**Como criar um modelo de política**

1. Abra o [console de Permissões verificadas](https://console.aws.amazon.com/verifiedpermissions/). Escolha seu repositório de políticas.

1. No painel de navegação à esquerda, escolha **Modelos de política**.

1. Escolha **Criar modelo de política**.

1. Na seção **Detalhes**, digite a **Descrição do modelo de política**.

1. Na seção **Corpo do modelo de política**, use os espaços reservados `?principal` e `?resource` para que as políticas criadas com base nesse modelo personalizem as permissões que elas concedem. Você pode escolher **Formatar** para formatar a sintaxe do seu modelo de política com o espaçamento e o recuo recomendados.

1. Escolha **Criar modelo de política**.

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

**Para criar um modelo de política**  
Você pode criar um modelo de política usando a [CreatePolicyTemplate](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_CreatePolicyTemplate.html)operação. O exemplo a seguir cria um modelo de política com um espaço reservado para a entidade principal.

Veja a seguir o conteúdo do arquivo `template1.txt`.

```
"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 criar um modelo de política com um nome de modelo de política**  
Opcionalmente, você pode especificar um nome de modelo de política ao criar um modelo de política. O nome deve ser exclusivo para todos os modelos de política no repositório de políticas e prefixado com`name/`. Você pode usar o nome no lugar do ID do modelo de política.

```
$ 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**  
Se você especificar um nome que já esteja associado a outro modelo de política no repositório de políticas, receberá um `ConflictException` erro.

------

# Criação de políticas vinculadas a modelos de permissões verificadas da Amazon
<a name="policy-templates-create-policy"></a>

Você pode criar políticas vinculadas a modelos ou políticas baseadas em um modelo de política usando o Console de gerenciamento da AWS AWS CLI, ou o. AWS SDKs As políticas vinculadas a modelos permanecem vinculadas a seus modelos de política. Se você alterar a declaração de política no modelo de política, todas as políticas vinculadas a esse modelo usarão automaticamente a nova declaração para todas as decisões de autorização tomadas a partir desse momento.

Para exemplos de políticas vinculadas a modelos, consulte. [Exemplo de políticas vinculadas a modelos de permissões verificadas da Amazon](policy-templates-example-policies.md)

------
#### [ Console de gerenciamento da AWS ]

**Para criar uma política vinculada a modelo instanciando um modelo de política**

1. Abra o [console de Permissões verificadas](https://console.aws.amazon.com/verifiedpermissions/). Escolha seu repositório de políticas.

1. No painel de navegação à esquerda, escolha **Políticas**.

1. Escolha **Criar política** e, em seguida, escolha **Criar política vinculada a modelo**.

1. Escolha o botão de opção ao lado do modelo de política a ser usado e, em seguida, escolha **Próximo**.

1. Digite a **Entidade principal** e o **Recurso** a serem usados nessa instância específica da política vinculada a modelo. Os valores especificados são exibidos no campo **Visualização da declaração de política**.
**nota**  
Os valores **Entidade principal** e **Recurso** devem ter a mesma formatação das políticas estáticas. Por exemplo, para especificar o grupo `AdminUsers` para a entidade principal, digite `Group::"AdminUsers"`. Se você digitar `AdminUsers`, será exibido um erro de validação.

1. Escolha **Criar política vinculada a modelo**.

   A nova política vinculada a modelo é exibida em **Políticas**.

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

**Para criar uma política vinculada a modelo instanciando um modelo de política**  
Você pode criar uma política vinculada a modelo que faça referência a um modelo de política existente e especifique valores para quaisquer espaços reservados usados pelo modelo. 

O exemplo a seguir cria uma política vinculada a modelo que usa um modelo com a seguinte declaração:

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

Ele também usa o arquivo `definition.txt` a seguir para fornecer o valor do parâmetro `definition`:

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

A saída mostra o recurso, extraído do modelo, e a entidade principal, extraída do parâmetro de definição

```
$ 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"
    }
}
```

------

# Editando modelos de política de permissões verificadas da Amazon
<a name="policy-templates-edit"></a>

Você pode editar ou atualizar modelos de política em Permissões verificadas usando o Console de gerenciamento da AWS AWS CLI, o ou AWS SDKs o. A edição de um modelo de política atualizará automaticamente as políticas vinculadas ou baseadas no modelo, portanto, tome cuidado ao editar os modelos de política e certifique-se de não introduzir acidentalmente uma alteração que interrompa seu aplicativo.

Você pode alterar os seguintes elementos de um modelo de política:
+ O `action` referenciado pelo modelo de política
+ Uma cláusula de condição, como e `when` `unless`

Você não pode alterar os seguintes elementos de um modelo de política. Para alterar qualquer um desses elementos, você precisará excluir e recriar o modelo de política.
+ O efeito de um modelo de política de `permit` ou `forbid`
+ O `principal` referenciado por um modelo de política
+ O `resource` referenciado por um modelo de política

------
#### [ Console de gerenciamento da AWS ]

**Para editar os modelos de política**

1. Abra o [console de Permissões verificadas](https://console.aws.amazon.com/verifiedpermissions/). Escolha seu repositório de políticas.

1. No painel de navegação à esquerda, escolha **Modelos de política**. O console exibe todos os modelos de política que você criou no armazenamento de políticas atual.

1. Escolha o botão de opção ao lado de um modelo de política para exibir os detalhes sobre o modelo de política, por exemplo, quando o modelo de política foi criado, atualizado e o conteúdo do modelo de política.

1. Escolha **Editar** para editar o modelo de política. Atualize a **Descrição da política** e o **Corpo da política** conforme necessário e escolha **Atualizar modelo de política**.

1. Você pode excluir um modelo de política escolhendo o botão de opção ao lado de um modelo de política e, em seguida, escolhendo **Excluir**. Escolha **OK** para confirmar a exclusão do modelo de política.

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

**Para editar um modelo de política**  
Você pode criar uma política estática usando a [UpdatePolicy](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_UpdatePolicy.html)operação. O exemplo a seguir atualiza o modelo de política especificado substituindo o corpo da política por uma nova política definida em um arquivo.

Conteúdo do arquivo `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 atualizar o nome de um modelo de política**  
Você pode definir ou atualizar o nome de um modelo de política ao atualizar um modelo de política. O nome deve ser exclusivo para todos os modelos de política no repositório de políticas e prefixado com`name/`. Se você não incluir o campo de nome na solicitação de atualização, o nome existente permanecerá inalterado. Para remover um nome, defina-o como uma string vazia.

```
$ 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"
}
```

------

# Exemplo de políticas vinculadas a modelos de permissões verificadas da Amazon
<a name="policy-templates-example-policies"></a>

Quando você cria um armazenamento de políticas no Verified Permissions usando o método **Exemplo de armazenamento de políticas**, seu armazenamento de políticas é criado com políticas predefinidas, modelos de política e um esquema para o exemplo de projeto escolhido. Os seguintes exemplos de políticas vinculadas a modelos do Verified Permissions podem ser usados com os exemplos de armazenamentos de políticas e suas respectivas políticas, modelos de políticas e esquemas.

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

O exemplo a seguir mostra como você pode criar uma política vinculada a um modelo que usa o modelo de política **Conceder acesso limitado a fotos compartilhadas não privadas** com um usuário e uma foto individuais.

**nota**  
A linguagem de política Cedar considera uma entidade como `in`. Portanto, `principal in User::"Alice"` é equivalente a `principal == User::"Alice"`.

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

O exemplo a seguir mostra como você pode criar uma política vinculada a um modelo que usa o modelo de política **Conceder acesso limitado a fotos compartilhadas não privadas** com um usuário e álbum individuais.

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

O exemplo a seguir mostra como você pode criar uma política vinculada a um modelo que usa o modelo de política **Conceder acesso limitado a fotos compartilhadas não privadas** com um grupo de amigos e uma foto individual.

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

O exemplo a seguir mostra como você pode criar uma política vinculada a um modelo que usa o modelo de política **Conceder acesso limitado a fotos compartilhadas não privadas** com um grupo de amigos e um álbum.

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

O exemplo a seguir mostra como você pode criar uma política vinculada a um modelo que usa o modelo de política. **Conceda acesso total a fotos compartilhadas não privadas** com um grupo de amigos e uma foto individual.

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

O exemplo a seguir mostra como você pode criar uma política vinculada a um modelo que usa o modelo de política **Bloquear usuário de** uma conta.

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

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

O repositório de políticas de DigitalPetStore amostra não inclui nenhum modelo de política. Você pode visualizar as políticas incluídas no repositório de **políticas escolhendo Políticas** no painel de navegação à esquerda após criar o **DigitalPetStore**exemplo de armazenamento de políticas.

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

O exemplo a seguir mostra como você pode criar uma política vinculada ao modelo que usa o modelo de política que dá ao espectador acesso a uma lista individual de usuários e tarefas.

```
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"
);
```

O exemplo a seguir mostra como você pode criar uma política vinculada ao modelo que usa o modelo de política que dá acesso ao editor para uma lista individual de usuários e tarefas.

```
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"
);
```