Compartilhar via


Como verificar se meu aplicativo está chamando APIs com permissões mínimas

Durante o desenvolvimento do seu aplicativo, é provável que você integre várias APIs e operações. Para garantir que seu aplicativo seja seguro e siga o princípio de privilégios mínimos, verifique se ele está chamando APIs com permissões mínimas. Ao usar permissões mínimas, você reduz o risco de acesso não autorizado aos seus dados e recursos.

O que é difícil ao verificar se seu aplicativo está chamando APIs com permissões mínimas é que sempre que você integra uma nova operação, precisa avaliar o conjunto de permissões que você usa em seu aplicativo. Acompanhar manualmente todas as operações e permissões é demorado e propenso a erros. Com o Dev Proxy e o Centro de API do Azure, você pode automatizar a verificação do uso de permissões mínimas pelo seu aplicativo ao chamar APIs.

Para verificar se seu aplicativo está chamando APIs usando permissões mínimas, você pode usar o ApiCenterMinimalPermissionsPlugin plug-in. Esse plug-in compara as permissões que seu aplicativo usa com as permissões definidas no Centro de API do Azure e relata todas as permissões excessivas. Ele também recomenda o conjunto mínimo de permissões que você deve usar.

Captura de tela de um prompt de comando mostrando o Dev Proxy verificando se as solicitações de API registradas usam permissões mínimas de API de tokens.

Antes de começar

Para verificar se seu aplicativo está chamando APIs usando permissões mínimas, você precisa ter uma instância do Centro de API do Azure com informações sobre as APIs que você usa em sua organização.

Dica

Baixe a predefinição para este artigo de instruções executando devproxy preset get demo-apicenter-minimalpermissions no prompt de comando.

Criar uma instância do Centro de API do Azure

Antes de começar, crie uma instância do Centro de API do Azure e registre as APIs que você usa em sua organização. Para cada API, carregue o arquivo de especificação OpenAPI que descreve as operações e permissões da API.

Captura de tela do Centro de API do Azure com uma API e sua especificação OpenAPI com informações de segurança.

O usa ApiCenterMinimalPermissionsPlugin essas informações para verificar se o aplicativo está chamando APIs usando permissões mínimas.

Copiar informações do Centro de API

A partir da página Visão Geral da instância do Centro de API do Azure, copie o nome da instância do Centro de API, o nome do grupo de recursos e a ID da assinatura. Você precisa dessas informações para configurar o ApiCenterMinimalPermissionsPlugin de forma que possa se conectar à sua instância do Centro de API do Azure.

Captura de tela da página de visão geral do Centro de API do Azure com várias propriedades realçadas.

Configurar o Dev Proxy

Para verificar se seu aplicativo está chamando APIs usando permissões mínimas, você precisa habilitar o ApiCenterMinimalPermissionsPlugin no arquivo de configuração do Dev Proxy. Para criar um relatório de permissões que seu aplicativo usa, adicione um relatório.

Habilitar o ApiCenterMinimalPermissionsPlugin

No arquivo devproxyrc.json, adicione a seguinte configuração:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

Nas propriedades subscriptionId, resourceGroupName e serviceName, forneça as informações sobre sua instância do Centro de API do Azure.

Na propriedade urlsToWatch, especifique as URLs que o seu aplicativo usa.

Dica

Use a extensão do Visual Studio Code do Kit de Ferramentas do Dev Proxy para gerenciar a configuração do Dev Proxy com facilidade.

Adicionar um relatório

O ApiCenterMinimalPermissionsPlugin produz um relatório de APIs que seu aplicativo está usando e as permissões mínimas necessárias para chamá-las. Para exibi-lo, adicione um relatório ao arquivo de configuração do Dev Proxy. O Dev Proxy oferece vários geradores de relatórios. Nesse exemplo, você usa o gerador de relatórios em texto sem formatação.

Atualize o arquivo devproxyrc.json com uma referência ao relatório de texto sem formatação:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

Verificar se seu aplicativo está chamando APIs usando permissões mínimas

Para verificar se seu aplicativo está chamando APIs usando permissões mínimas, você precisa se conectar à sua assinatura do Azure, executar o Dev Proxy e permitir que ele intercepte solicitações de API do seu aplicativo. Em seguida, o Dev Proxy compara as informações sobre as solicitações de API com as informações do Centro de API do Azure e relatórios sobre as permissões mínimas.

Conecte-se à sua assinatura do Azure

O Dev Proxy usa as informações do Centro de API do Azure para determinar se seu aplicativo está chamando APIs usando permissões mínimas. Para obter essas informações, ele precisa de uma conexão com sua assinatura do Azure. Você pode se conectar à sua assinatura do Azure de várias maneiras.

Executar o Dev Proxy

Após se conectar à sua assinatura do Azure, inicie o Dev Proxy. Se você iniciar o Dev Proxy na mesma pasta em que seu arquivo devproxyrc.json está localizado, a configuração será carregada automaticamente. Caso contrário, especifique o caminho para o arquivo de configuração usando a opção --config-file.

Quando é iniciado, o Dev Proxy verifica se consegue se conectar à sua assinatura do Azure. Se a conexão for bem-sucedida, você verá uma mensagem semelhante a:

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

Pressione r para iniciar o registro das solicitações de API a partir do seu aplicativo.

Usar seu aplicativo

Use seu aplicativo como faria normalmente. Neste tutorial, você pode usar a seguinte solicitação com um token de acesso simulado com permissão customer.readwrite:

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

GET https://api.northwind.com/customers/ALFKI
Authorization: Bearer {{readwriteToken}}

O Dev Proxy intercepta as solicitações de API e armazena as informações sobre elas na memória. Na linha de comando em que o Dev Proxy é executado, você deve ver informações sobre as solicitações de API que seu aplicativo faz.

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://api.northwind.com/customers/ALFKI
 mock  ╰ 200 /{customer-id}

Verificar permissões

Pare o gravação pressionando s. O Dev Proxy se conecta à instância do Centro de API e compara as informações sobre as solicitações com as informações do Centro de API.

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://api.northwind.com/customers/ALFKI
 mock  ╰ 200 /{customer-id}
○ Stopped recording
 info    Checking if recorded API requests use minimal permissions as defined in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    Checking minimal permissions for API https://api.northwind.com...
 info    Analyzing recorded requests...
 warn    Calling API Northwind with excessive permissions: customer.readwrite. Minimal permissions are: customer.read
 info    DONE

Quando termina sua análise, o Proxy de Desenvolvimento cria um relatório em um arquivo chamado ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt com o seguinte conteúdo:

Azure API Center minimal permissions report

APIS

Northwind

x Called using excessive permissions

Permissions

- Minimal permissions: customer.read
- Permissions on the token: customer.readwrite
- Excessive permissions: customer.readwrite

Requests

- GET https://api.northwind.com/customers/ALFKI

UNMATCHED REQUESTS

No unmatched requests found.

ERRORS

No errors occurred.

Resumo

Ao usar o ApiCenterMinimalPermissionsPlugin, você pode verificar se seu aplicativo está chamando APIs usando permissões mínimas. O plug-in compara as informações sobre as solicitações de API de seu aplicativo com informações do Centro de API do Azure e os relatórios sobre permissões excessivas. Ele também recomenda as permissões mínimas necessárias para chamar as APIs que você está usando em seu aplicativo. Verificar se seu aplicativo está chamando APIs usando permissões mínimas ajuda você a tornar seu aplicativo mais seguro. Você pode executar essa verificação manualmente ou integrá-la ao pipeline de CI/CD para garantir que seu aplicativo esteja chamando APIs com permissões mínimas antes de ser lançado em produção.

Mais informações