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