Partilhar via


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

Ao criar seu aplicativo, você provavelmente se integra a várias APIs e operações. Para garantir que seu aplicativo seja seguro e siga o princípio de menor privilégio, verifique se seu aplicativo 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 verificar se seu aplicativo está chamando APIs com permissões mínimas é que cada vez que você integra uma nova operação, você precisa avaliar o conjunto de permissões que você usa em seu aplicativo. O rastreamento manual de todas as operações e permissões é demorado e propenso a erros. Usando o Proxy de Desenvolvimento e o Centro de API do Azure, você pode automatizar a verificação se seu aplicativo está chamando APIs com permissões mínimas.

Para verificar se seu aplicativo está chamando APIs usando permissões mínimas, você pode usar o ApiCenterMinimalPermissionsPlugin plug-in. Este plug-in compara as permissões que seu aplicativo usa com as permissões definidas na Central de APIs do Azure e relata quaisquer 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 Proxy de Desenvolvimento verificando se as solicitações de API gravadas 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 da Central de APIs do Azure com informações sobre as APIs que você usa em sua organização.

Gorjeta

Baixe a predefinição para este artigo executando no prompt devproxy preset get demo-apicenter-minimalpermissionsde 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 ecrã do Centro de API do Azure com uma API e as respetivas especificações OpenAPI com informações de segurança.

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

Copiar informações do Centro de API

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

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

Configurar proxy de desenvolvimento

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

Habilite o botão ApiCenterMinimalPermissionsPlugin

devproxyrc.json No arquivo, 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"
  }
}

No , resourceGroupNamee serviceName propriedades, forneça as informações sobre sua instância do subscriptionIdCentro de API do Azure.

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

Gorjeta

Use a extensão Dev Proxy Toolkit Visual Studio Code para gerenciar facilmente a configuração do Dev Proxy.

Adicionar um repórter

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 exibir esse relatório, adicione um repórter ao arquivo de configuração do Proxy de Desenvolvimento. Dev Proxy oferece vários repórteres. Neste exemplo, você usa o repórter de texto simples.

Atualize seu devproxyrc.json arquivo com uma referência ao repórter de texto simples:

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

Verifique 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 Proxy de Desenvolvimento e permitir que ele intercete solicitações de API do seu aplicativo. Em seguida, o Proxy de Desenvolvimento compara as informações sobre as solicitações de API com as informações do Centro de API do Azure e relata as permissões mínimas.

Ligar à sua subscrição do Azure

O Proxy de Desenvolvimento usa 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 proxy de desenvolvimento

Depois de se conectar à sua assinatura do Azure, inicie o Dev Proxy. Se você iniciar o Dev Proxy da mesma pasta onde o devproxyrc.json arquivo está localizado, ele carregará automaticamente a configuração. Caso contrário, especifique o caminho para o arquivo de configuração usando a --config-file opção.

Quando o Proxy de Desenvolvimento é iniciado, ele verifica se pode se conectar à sua assinatura do Azure. Quando a conexão é bem-sucedida, você vê 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 começar a gravar solicitações de API do seu aplicativo.

Utilizar a aplicação

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

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

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

 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 a gravação pressionando s. O Proxy de Desenvolvimento se conecta à instância do Centro de API e compara as informações sobre 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 o Dev Proxy conclui sua análise, ele cria um relatório em um arquivo nomeado 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

Usando o ApiCenterMinimalPermissionsPlugin, você pode verificar se seu aplicativo está chamando APIs usando permissões mínimas. O plug-in compara as informações sobre solicitações de API do seu aplicativo com informações da Central de APIs do Azure e 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 integrar-se ao pipeline de CI/CD para garantir que seu aplicativo esteja chamando APIs usando permissões mínimas antes de liberá-lo para produção.

Mais informações