

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á.

# Implementando a autorização nas permissões verificadas da Amazon
<a name="authorization"></a>

Depois de criar seu repositório de políticas, políticas, modelos, esquema e modelo de autorização, você estará pronto para começar a autorizar solicitações usando as Permissões Verificadas da Amazon. Para implementar a autorização de Permissões Verificadas, você deve combinar a configuração das políticas de autorização AWS com a integração em um aplicativo. Para integrar as Permissões Verificadas ao seu aplicativo, adicione um AWS SDK e implemente os métodos que invocam a API de Permissões Verificadas e geram decisões de autorização em relação ao seu repositório de políticas.

A autorização com permissões verificadas é útil para *permissões de UX* e *permissões de API* em seus aplicativos.

**Permissões de UX**  
Controle o acesso do usuário à UX do seu aplicativo. Você pode permitir que um usuário visualize somente os formulários, botões, gráficos e outros recursos exatos que ele precisa acessar. Por exemplo, quando um usuário faz login, talvez você queira determinar se o botão “Transferir fundos” está visível na conta dele. Você também pode controlar as ações que um usuário pode realizar. Por exemplo, no mesmo aplicativo bancário, talvez você queira determinar se seu usuário tem permissão para alterar a categoria de uma transação.

**Permissões de API**  
Controle o acesso do usuário aos dados. Os aplicativos geralmente fazem parte de um sistema distribuído e trazem informações externas APIs. No exemplo do aplicativo bancário em que as Permissões Verificadas permitiram a exibição do botão “Transferir fundos”, uma decisão de autorização mais complexa deve ser tomada quando o usuário inicia uma transferência. As permissões verificadas podem autorizar a solicitação de API que lista as contas de destino que são alvos de transferência elegíveis e, em seguida, a solicitação para enviar a transferência para a outra conta.

Os exemplos que ilustram esse conteúdo vêm de um [exemplo de armazenamento de políticas](policy-stores-create.md#policy-stores-create.title). Para acompanhar, crie o repositório **DigitalPetStore**de políticas de amostra em seu ambiente de teste.

*Para um exemplo completo de aplicativo que implementa permissões de UX usando autorização em lote, consulte [Use Amazon Verified Permissions para obter autorizações detalhadas em grande escala no Security](https://aws.amazon.com/blogs/security/use-amazon-verified-permissions-for-fine-grained-authorization-at-scale/) Blog.AWS *

**Topics**
+ [

## Operações de API disponíveis para autorização
](#authorization-operations)
+ [

# Testando seu modelo de autorização
](authorization-testing.md)
+ [

# Integrando seus modelos de autorização com aplicativos
](authorization-sdk.md)

## Operações de API disponíveis para autorização
<a name="authorization-operations"></a>

A API de permissões verificadas tem as seguintes operações de autorização.

**[IsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html)**  
A operação `IsAuthorized` da API é o ponto de entrada para solicitações de autorização com permissões verificadas. Você deve enviar elementos principais, de ação, de recursos, de contexto e de entidades. As permissões verificadas avaliam sua solicitação em relação a todas as políticas no repositório de políticas solicitado que se aplicam às entidades na solicitação.

**[IsAuthorizedWithToken](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html)**  
A `IsAuthorizedWithToken` operação gera uma solicitação de autorização a partir dos dados do usuário em tokens web JSON (JWTs). As permissões verificadas funcionam diretamente com os provedores do OIDC, Amazon Cognito como uma fonte de identidade em seu repositório de políticas. As permissões verificadas preenchem todos os atributos do principal em sua solicitação a partir das declarações no ID do usuário ou nos tokens de acesso. Você pode autorizar ações e recursos a partir de atributos de usuário ou associação a grupos em uma fonte de identidade.  
Você não pode incluir informações sobre os principais tipos de grupos ou usuários em uma `IsAuthorizedWithToken` solicitação. Você deve preencher todos os dados principais do JWT que você fornece.

**[BatchIsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_BatchIsAuthorized.html)**  
A `BatchIsAuthorized` operação processa várias decisões de autorização para um único principal ou recurso em uma única solicitação de API. Essa operação agrupa as solicitações em uma única operação em lote que minimiza o [uso da cota](quotas.md#quotas-tps.title) e retorna as decisões de autorização para cada uma das até 30 ações aninhadas complexas. Com a autorização em lote para um único recurso, você pode filtrar as ações que um usuário pode realizar em um recurso. Com a autorização em lote para um único principal, você pode filtrar os recursos sobre os quais um usuário pode agir.

**[BatchIsAuthorizedWithToken](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_BatchIsAuthorizedWithToken.html)**  
A `BatchIsAuthorizedWithToken` operação processa várias decisões de autorização para um único principal em uma solicitação de API. O principal é fornecido pela fonte de identidade do seu repositório de políticas em um ID ou token de acesso. Essa operação agrupa as solicitações em uma única operação em lote que minimiza o [uso da cota](quotas.md#quotas-tps.title) e retorna as decisões de autorização para cada uma das até 30 solicitações de ações e recursos. Em suas políticas, você pode autorizar o acesso deles a partir de seus atributos ou de sua associação a um grupo em um diretório de usuários.  
Por exemplo`IsAuthorizedWithToken`, você não pode incluir informações sobre os principais tipos de grupos ou usuários em uma `BatchIsAuthorizedWithToken` solicitação. Você deve preencher todos os dados principais do JWT que você fornece.

# Testando seu modelo de autorização
<a name="authorization-testing"></a>

Para entender o efeito da decisão de autorização de Permissões Verificadas da Amazon quando você implanta seu aplicativo, você pode avaliar suas políticas à medida que as desenvolve com [Usando a bancada de testes de permissões verificadas da Amazon](test-bench.md) e com as solicitações da API REST HTTPS para Permissões Verificadas. A bancada de testes é uma ferramenta Console de gerenciamento da AWS para avaliar solicitações e respostas de autorização em seu repositório de políticas.

A API REST de permissões verificadas é a próxima etapa em seu desenvolvimento à medida que você passa da compreensão conceitual para o design do aplicativo. A API de permissões verificadas aceita solicitações de autorização com [IsAuthorized[IsAuthorizedWithToken](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html)](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html), e [BatchIsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_BatchIsAuthorized.html)como [solicitações de AWS API assinadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) para [endpoints de serviços](https://docs.aws.amazon.com/general/latest/gr/verifiedpermissions.html) regionais. Para testar seu modelo de autorização, você pode gerar solicitações com qualquer cliente de API e verificar se suas políticas estão retornando as decisões de autorização conforme o esperado.

Por exemplo, você pode testar `IsAuthorized` em um repositório de políticas de amostra com o procedimento a seguir.

------
#### [ Test bench ]

1. Abra o console de Permissões [verificadas no console de Permissões verificadas](https://console.aws.amazon.com/verifiedpermissions/). Crie um repositório de políticas a partir do **repositório de políticas de amostra** com o nome **DigitalPetStore**.

1. Selecione **Test bench** em seu novo repositório de políticas.

1. Preencha sua solicitação de bancada de testes [IsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html#API_IsAuthorized_Examples)na referência da API de permissões verificadas. Os detalhes a seguir replicam as condições do **Exemplo 4** que fazem referência à **DigitalPetStore**amostra.

   1. Defina Alice como diretora. Em **Principal tomando medidas**, escolha `DigitalPetStore::User` e insira`Alice`.

   1. Defina o papel de Alice como cliente. Escolha **Adicionar um pai**`DigitalPetStore::Role`, escolha e insira Cliente.

   1. Defina o recurso como pedido “1234”. Em **Recurso no qual o diretor está atuando**, escolha `DigitalPetStore::Order` e insira`1234`.

   1. O `DigitalPetStore::Order` recurso requer um `owner` atributo. Defina Alice como proprietária do pedido. Escolha `DigitalPetStore::User` e entre `Alice`

   1. Alice pediu para ver o pedido. Para **Ação que o diretor está tomando**, escolha`DigitalPetStore::Action::"GetOrder"`.

1. Escolha **Executar solicitação de autorização**. Em um repositório de políticas não modificado, essa solicitação resulta em uma `ALLOW` decisão. Observe a **política Satisfied** que retornou a decisão.

1. Escolha **Políticas** na barra de navegação à esquerda. Revise a política estática com a descrição **Customer Role - Get Order**.

1. Observe que as Permissões Verificadas permitiram a solicitação porque o diretor estava na função de cliente e era o proprietário do recurso.

------
#### [ REST API ]

1. Abra o console de Permissões [verificadas no console de Permissões verificadas](https://console.aws.amazon.com/verifiedpermissions/). Crie um repositório de políticas a partir do **repositório de políticas de amostra** com o nome **DigitalPetStore**.

1. Anote o **ID do repositório de políticas** do seu novo repositório de políticas.

1. [IsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html#API_IsAuthorized_Examples)Na referência da API de permissões verificadas, copie o corpo da solicitação do **Exemplo 4** que faz referência à **DigitalPetStore**amostra.

1. Abra seu cliente de API e crie uma solicitação para o endpoint de serviço regional para seu repositório de políticas. [Preencha os cabeçalhos conforme mostrado no exemplo.](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html#API_IsAuthorized_Examples)

1. Cole o corpo da solicitação de amostra e altere o valor `policyStoreId` para o ID do repositório de políticas que você anotou anteriormente.

1. Envie a solicitação e analise os resultados. Em um repositório **DigitalPetStore**de políticas padrão, essa solicitação retorna uma `ALLOW` decisão.

------

Você pode fazer alterações nas políticas, no esquema e nas solicitações em seu ambiente de teste para alterar os resultados e produzir decisões mais complexas.

1. Altere a solicitação de uma forma que altere a decisão das Permissões verificadas. Por exemplo, altere o papel de Alice para `Employee` ou altere o `owner` atributo da ordem 1234 para. `Bob`

1. Altere as políticas de forma que afetem as decisões de autorização. Por exemplo, modifique a política com a descrição **Customer Role - Get Order** para remover a condição de que ele `User` deve ser o proprietário do `Resource` e modifique a solicitação para que `Bob` ele queira visualizar o pedido.

1. Altere o esquema para permitir que as políticas tomem uma decisão mais complexa. Atualize as entidades solicitadas para que Alice possa atender aos novos requisitos. Por exemplo, edite o esquema para `User` permitir que você seja membro de `ActiveUsers` ou`InactiveUsers`. Atualize a política para que somente usuários ativos possam ver seus próprios pedidos. Atualize as entidades da solicitação para que Alice seja uma usuária ativa ou inativa.

# Integrando seus modelos de autorização com aplicativos
<a name="authorization-sdk"></a>

Para implementar as Permissões Verificadas da Amazon em seu aplicativo, você deve definir as políticas e o esquema que deseja que seu aplicativo aplique. Com seu modelo de autorização estabelecido e testado, sua próxima etapa é começar a gerar solicitações de API a partir do ponto de fiscalização. Para fazer isso, você deve configurar a lógica do aplicativo para coletar dados do usuário e preenchê-los para solicitações de autorização.

**Como um aplicativo autoriza solicitações com permissões verificadas**

1. Reúna informações sobre o usuário atual. Normalmente, os detalhes de um usuário são fornecidos nos detalhes de uma sessão autenticada, como um JWT ou um cookie de sessão da web. Esses dados do usuário podem se originar de uma [fonte de Amazon Cognito identidade](identity-sources.md#identity-sources.title) vinculada ao seu repositório de políticas ou de outro provedor do [OpenID Connect (OIDC](cognito-validation.md#identity-sources-other-idp.title)).

1. Reúna informações sobre o recurso que um usuário deseja acessar. Normalmente, seu aplicativo receberá informações sobre o recurso quando um usuário fizer uma seleção que exija que seu aplicativo carregue um novo ativo.

1. Determine a ação que seu usuário deseja realizar.

1. Gere uma solicitação de autorização para Permissões Verificadas com o principal, a ação, o recurso e as entidades para a tentativa de operação do usuário. As permissões verificadas avaliam a solicitação em relação às políticas em seu repositório de políticas e retornam uma decisão de autorização.

1. Seu aplicativo lê a resposta de permissão ou negação das Permissões verificadas e aplica a decisão à solicitação do usuário.

As operações da API de permissões verificadas estão incorporadas AWS SDKs. Para incluir permissões verificadas em um aplicativo, integre o AWS SDK do idioma escolhido ao pacote do aplicativo.

Para saber mais e fazer o download AWS SDKs, consulte [Ferramentas para Amazon Web Services](https://aws.amazon.com/tools/).

A seguir estão links para a documentação de vários recursos de permissões verificadas AWS SDKs.
+ [AWS SDK para .NET](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/VerifiedPermissions/NVerifiedPermissions.html)
+ [AWS SDK para C\$1\$1](https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-verifiedpermissions/html/class_aws_1_1_verified_permissions_1_1_verified_permissions_client.html)
+ [AWS SDK para Go](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/verifiedpermissions)
+ [AWS SDK para Java](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/verifiedpermissions/package-summary.html)
+ [AWS SDK para JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/verifiedpermissions/)
+ [AWS SDK para PHP](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-verifiedpermissions-2021-12-01.html)
+ [AWS SDK para Python (Boto)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/verifiedpermissions.html)
+ [AWS SDK para Ruby](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/VerifiedPermissions/Client.html)
+ [AWS SDK para Rust](https://docs.rs/aws-sdk-verifiedpermissions/latest/aws_sdk_verifiedpermissions/)

O AWS SDK para JavaScript exemplo a seguir `IsAuthorized` se origina da [autorização refinada Simplifique com as Permissões Verificadas da Amazon e o Amazon](https://aws.amazon.com/blogs/security/simplify-fine-grained-authorization-with-amazon-verified-permissions-and-amazon-cognito/) Cognito.

```
const authResult = await avp.isAuthorized({
    principal: 'User::"alice"',
    action: 'Action::"view"',
    resource: 'Photo::"VacationPhoto94.jpg"',
    // whenever our policy references attributes of the entity,
    // isAuthorized needs an entity argument that provides    
    // those attributes
    entities: {
       entityList: [
         {
            "identifier": {
                "entityType": "User",
                "entityId": "alice"
            },
            "attributes": {
                "location": {
                    "String": "USA"
                }
            }
         }
       ]
    }
});
```

**Mais recursos para desenvolvedores**
+ [Workshop de permissões verificadas da Amazon](https://catalog.workshops.aws/verified-permissions-in-action)
+ [Permissões verificadas pela Amazon - Recursos](https://aws.amazon.com/verified-permissions/resources/)
+ [Implemente um provedor de política de autorização personalizado para aplicativos ASP.NET Core usando Amazon Verified Permissions](https://aws.amazon.com/blogs/dotnet/implement-a-custom-authorization-policy-provider-for-asp-net-core-apps-using-amazon-verified-permissions/)
+ [Crie um serviço de qualificação para aplicativos de negócios usando Amazon Verified Permissions](https://aws.amazon.com/blogs/security/build-an-entitlement-service-for-business-applications-using-amazon-verified-permissions/)
+ [Simplifique a autorização refinada com as Permissões Verificadas da Amazon e o Amazon Cognito](https://aws.amazon.com/blogs/security/simplify-fine-grained-authorization-with-amazon-verified-permissions-and-amazon-cognito/)