Implementando a autorização nas permissões verificadas da Amazon - Amazon Verified Permissions

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

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 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 de APIs externas. 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. Para acompanhar, crie o DigitalPetrepositório de políticas de amostra da Store 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 Blog.AWS

Operações de API para autorização

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

IsAuthorized

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 validam as entidades em sua solicitação em relação ao seu esquema de armazenamento de políticas. Em seguida, 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

A IsAuthorizedWithToken operação gera uma solicitação de autorização dos dados do usuário nos tokens web JSON (JWTs) do Amazon Cognito. As permissões verificadas funcionam diretamente com o 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 um grupo de usuários do Amazon Cognito.

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.

BatchIsAutorizado

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

BatchIsAuthorizedWithSímbolo

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 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 de usuários do Amazon Cognito.

Por exemploIsAuthorizedWithToken, 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

Para entender o efeito da decisão de autorização de Permissões Verificadas ao implantar seu aplicativo, você pode avaliar suas políticas à medida que as desenvolve com Banco de testes e com as solicitações da API REST HTTPS para Permissões Verificadas. A bancada de testes é uma ferramenta AWS Management Console 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 IsAuthorizedIsAuthorizedWithToken, e solicitações de AWS API BatchIsautorizadas como assinadas para endpoints de serviços 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 do Verified Permissions em 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 DigitalPetArmazenamento.

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

  3. Preencha sua solicitação de bancada de testes IsAuthorizedna referência da API de permissões verificadas. Os detalhes a seguir replicam as condições no Exemplo 4 que faz referência à amostra DigitalPetStore.

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

    2. Defina o papel de Alice como cliente. Escolha Adicionar um paiDigitalPetStore::Role, escolha e insira Cliente.

    3. Defina o recurso como pedido “1234”. Em Recurso sobre o qual o diretor está atuando, escolha DigitalPetStore::Order e insira1234.

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

    5. Alice pediu para ver o pedido. Para Ação que o diretor está tomando, escolhaDigitalPetStore::Action::"GetOrder".

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

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

  6. 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 do Verified Permissions em 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 DigitalPetArmazenamento.

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

  3. IsAuthorizedNa referência da API de permissões verificadas, copie o corpo da solicitação do Exemplo 4 que faz referência à amostra da DigitalPetStore.

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

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

  6. Envie a solicitação e analise os resultados. Em um DigitalPetrepositório de políticas de armazenamento 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

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

  3. 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 ouInactiveUsers. 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.

Integração com aplicativos e AWS SDKs

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 ser originários de uma fonte de identidade do Amazon Cognito vinculada ao seu repositório de políticas ou de outro provedor do OpenID Connect (OIDC).

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

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

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

  5. 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 são incorporadas aos 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 baixar AWS SDKs, consulte Ferramentas para Amazon Web Services.

A seguir estão links para a documentação dos recursos de permissões verificadas em vários AWS SDKs.

O AWS SDK for JavaScript exemplo a seguir IsAuthorized se origina da autorização refinada Simplifique com as Permissões Verificadas da Amazon e o Amazon 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" } } } ] } });