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.
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-minimalpermissions
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.
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.
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 , resourceGroupName
e serviceName
propriedades, forneça as informações sobre sua instância do subscriptionId
Centro 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.