Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A integração do APIM (Gerenciamento de API do Azure) à API do Microsoft Fabric para GraphQL aprimora significativamente os recursos da API fornecendo recursos robustos de escalabilidade e segurança. O APIM atua como um gateway de nível empresarial que adiciona recursos avançados, incluindo gerenciamento de identidade, limitação de taxa, cache de resposta, proteção contra ameaças e monitoramento centralizado, tudo isso sem modificar a configuração da API do Fabric.
Ao rotear suas solicitações do GraphQL por meio do APIM, você pode dimensionar para lidar com o aumento do tráfego, implementar políticas de segurança sofisticadas e obter visibilidade dos padrões de uso da API em toda a sua organização.
Este artigo orienta você pela integração do APIM com a API do Fabric para GraphQL, a configuração da autenticação de identidade gerenciada e a implementação de políticas de cache e limitação de taxa.
Quem usa o Gerenciamento de API do Azure com o GraphQL
A integração do APIM é valiosa para:
- Arquitetos empresariais expondo dados do Fabric por meio de um gateway de API centralizado e controlado para acesso em toda a organização
- Administradores do Fabric implementando políticas de limitação de taxas, cache e segurança para proteger a capacidade e os dados do Fabric
- Equipes de segurança de TI que exigem autenticação avançada, autorização e proteção contra ameaças para acesso a dados do Fabric
- Equipes de plataforma gerenciando e supervisionando várias APIs do Fabric GraphQL em departamentos e unidades de negócios
Use a integração APIM quando precisar de recursos de gerenciamento de API de nível empresarial, como limitação de taxa, cache, políticas de segurança e gestão centralizada para suas APIs GraphQL do Fabric.
Pré-requisitos
Antes de começar, verifique se você tem:
- Uma API do Fabric para GraphQL já criada. Caso contrário, consulte Criar uma API para GraphQL ou usar Iniciar com o banco de dados SQL de exemplo no portal da API para GraphQL
- Uma instância de Gerenciamento de API do Azure. Para obter instruções de instalação, consulte Criar uma instância de Gerenciamento de API
- Permissões para criar identidades gerenciadas e configurar políticas do APIM
Adicionar uma API do GraphQL do Fabric ao Gerenciamento de API do Azure
A primeira etapa na integração do APIM ao Fabric é importar sua API do GraphQL para o Gerenciamento de API do Azure. Esse processo cria um proxy que roteia solicitações por meio do APIM, mantendo a conexão com suas fontes de dados do Fabric. Ao importar a API, você estabelece a base para adicionar recursos corporativos, como políticas de autenticação, cache e limitação de taxa.
O processo de importação requer duas informações da API do GraphQL do Fabric: a URL do ponto de extremidade (em que o APIM envia solicitações) e o arquivo de esquema (que define a estrutura da API e as operações disponíveis).
Exportar os detalhes da API do GraphQL
Primeiro, colete as informações necessárias da API do GraphQL do Fabric:
Abra a API do GraphQL no portal do Fabric
Na faixa de opções, selecione Copiar ponto de extremidade para obter a URL da API
Selecione Exportar esquema para baixar o arquivo de esquema GraphQL em seu dispositivo local
Importar a API para o APIM
Com a URL do ponto de extremidade e o arquivo de esquema prontos, agora você pode registrar a API do GraphQL no APIM. Isso cria uma definição de API que o APIM usa para validar solicitações, gerar documentação e aplicar políticas. O esquema carregado define quais consultas e mutações os clientes podem executar.
Navegue até a instância de Gerenciamento de API no portal do Azure
Selecionar APIs>+ Adicionar API
Selecione o ícone do GraphQL
Na tela Criar a partir do esquema GraphQL , forneça:
- Nome de exibição: um nome amigável para a API
- Nome: o identificador da API
- Ponto de extremidade da API do GraphQL: a URL do ponto de extremidade copiada do Fabric
Selecione Carregar esquema e escolha o arquivo de esquema que você baixou
Configurar a autenticação de identidade gerenciada
Agora que a API do GraphQL está registrada no APIM, você precisa configurar como o APIM se autentica com o Fabric. As identidades gerenciadas fornecem um método de autenticação seguro e sem senha que elimina a necessidade de armazenar credenciais na configuração do APIM. O Azure gerencia automaticamente o ciclo de vida de identidade e lida com a aquisição de tokens, tornando essa abordagem mais segura e fácil de manter do que os métodos tradicionais de autenticação.
A configuração de autenticação envolve três etapas principais: criar a identidade gerenciada no Azure, conceder permissões para acessar o workspace do Fabric e fontes de dados e configurar o APIM para usar essa identidade ao fazer solicitações ao Fabric.
Criar e atribuir uma identidade gerenciada
Primeiro, crie a identidade gerenciada que o APIM usa para autenticar:
- Crie uma identidade gerenciada atribuída pelo usuário no portal do Azure.
- Observe a ID do cliente da identidade gerenciada: você precisa da ID do cliente para a configuração da política.
Conceder as permissões de identidade gerenciada no Fabric
Depois de criar a identidade gerenciada, você deve conceder a ela permissões para acessar os recursos do Fabric. A identidade gerenciada precisa de acesso tanto ao próprio item da API GraphQL quanto a quaisquer fontes de dados às quais se conecta (como lakehouses ou warehouses). Adicionar a identidade como um membro do workspace é a abordagem mais simples porque concede acesso a todos os itens no workspace de uma só vez.
- Abra o workspace do Fabric que contém a API do GraphQL
- Selecione Gerenciar acesso
- Adicionar a identidade gerenciada (por exemplo, apim-id) com pelo menos a função Contribuidor
Dica
Para um controle mais granular, você pode conceder permissões diretamente a itens individuais do Fabric (a API e suas fontes de dados) em vez de acesso no nível do workspace. O controle granular é especialmente importante se sua API usa autenticação de SSO (logon único). Para obter mais informações, consulte Autenticação e resumo de permissões.
Configurar o APIM para usar a identidade gerenciada
Com as permissões concedidas no Fabric, você precisa informar à APIM qual identidade gerenciada usar. Essa associação permite que o APIM se autentique como essa identidade ao fazer solicitações para sua API do GraphQL do Fabric.
- No portal do Azure, navegue até a instância do APIM
- Ir para Segurança>Identidades gerenciadas
- Adicione a identidade gerenciada atribuída ao usuário que você criou anteriormente
Adicionar política de autenticação
A etapa final de autenticação é adicionar uma política APIM que obtém um token de acesso usando a identidade gerenciada e a inclui em solicitações ao Fabric. Essa política é executada em todas as solicitações, gerenciando automaticamente a aquisição e renovação do token. A política usa o authentication-managed-identity elemento para obter um token para o recurso de API do Fabric e, em seguida, adiciona-o ao cabeçalho autorização.
Na API do GraphQL no APIM, selecione a guia Políticas de API
Editar a política de processamento de entrada
Adicione o seguinte XML em
<inbound><base/>:<authentication-managed-identity resource="https://analysis.windows.net/powerbi/api" client-id="YOUR-MANAGED-IDENTITY-CLIENT-ID" output-token-variable-name="token-variable" ignore-error="false" /> <set-header name="Authorization" exists-action="override"> <value>@("Bearer " + (string)context.Variables["token-variable"])</value> </set-header>Substitua
YOUR-MANAGED-IDENTITY-CLIENT-IDpelo ID do cliente da identidade gerenciadaSalvar a política
Testar a conexão
Antes de continuar a adicionar o cache e a limitação de taxa, verifique se a configuração de autenticação funciona corretamente. O teste agora garante que todos os problemas encontrados posteriormente não estejam relacionados à configuração de autenticação.
- No APIM, navegue até sua API do GraphQL
- Vá para a guia Teste
- Executar uma consulta de exemplo ou mutação para confirmar se a conexão funciona
Configurar o cache de resposta
O cache de resposta reduz significativamente a latência para os chamadores de API e diminui a carga de back-end em suas fontes de dados do Fabric. O APIM dá suporte ao cache interno ou a instâncias externas do Redis. Para APIs do GraphQL, o cache usa o corpo da solicitação (a consulta GraphQL) como a chave de cache, garantindo que consultas idênticas retornem respostas armazenadas em cache.
Benefícios do cache de respostas do GraphQL:
- Latência reduzida: as respostas armazenadas em cache retornam instantaneamente sem consultar o Fabric
- Menor consumo de capacidade: menos solicitações ao Fabric reduzem o uso de CU (unidade de capacidade)
- Melhor escalabilidade: lidar com usuários mais simultâneos sem aumentar a carga de back-end
Adicionar política de cache
Para implementar o cache, modifique a política de autenticação existente para adicionar a pesquisa de cache e a lógica de armazenamento. A política verifica se há respostas armazenadas em cache antes de encaminhar solicitações para o Fabric e armazena respostas bem-sucedidas para uso futuro. Este exemplo de política completa mostra como a autenticação e o cache funcionam juntos:
<policies>
<inbound>
<base />
<!-- Authenticate with managed identity -->
<authentication-managed-identity
resource="https://analysis.windows.net/powerbi/api"
client-id="YOUR-MANAGED-IDENTITY-CLIENT-ID"
output-token-variable-name="token-variable"
ignore-error="false" />
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + (string)context.Variables["token-variable"])</value>
</set-header>
<!-- Check if response is cached -->
<cache-lookup-value
key="@(context.Request.Body.As<String>(preserveContent: true))"
variable-name="cachedResponse"
default-value="not_exists" />
</inbound>
<backend>
<!-- Only forward request if not cached -->
<choose>
<when condition="@(context.Variables.GetValueOrDefault<string>("cachedResponse") == "not_exists")">
<forward-request />
</when>
</choose>
</backend>
<outbound>
<base />
<choose>
<!-- Return cached response if it exists -->
<when condition="@(context.Variables.GetValueOrDefault<string>("cachedResponse") != "not_exists")">
<set-body>@(context.Variables.GetValueOrDefault<string>("cachedResponse"))</set-body>
</when>
<!-- Cache successful responses for 60 seconds -->
<when condition="@((context.Response.StatusCode == 200) && (context.Variables.GetValueOrDefault<string>("cachedResponse") == "not_exists"))">
<cache-store-value
key="@(context.Request.Body.As<String>(preserveContent: true))"
value="@(context.Response.Body.As<string>(preserveContent: true))"
duration="60" />
</when>
</choose>
</outbound>
<on-error>
<base />
</on-error>
</policies>
Como essa política funciona:
- Entrada: autentica-se com identidade gerenciada e verifica se a resposta está armazenada em cache com base na consulta GraphQL
- Back-end: ignora o encaminhamento da solicitação para o Fabric se houver uma resposta armazenada em cache
- Saída: Retorna respostas armazenadas em cache ou armazena em cache novas respostas bem-sucedidas por 60 segundos
Verificar se o cache está funcionando
Para confirmar se as solicitações estão sendo armazenadas em cache:
No APIM, execute a mesma consulta GraphQL duas vezes
Rastrear a chamada à API para ver ocorrências de cache
Otimizar a duração do cache
O exemplo usa uma duração de cache de 60 segundos. Ajuste a duração com base nos requisitos de atualização de dados:
- Atualizações de alta frequência: use durações mais curtas (10 a 30 segundos) para alterar dados com frequência
- Dados estáticos ou de referência: use durações mais longas (5 a 60 minutos) para dados que são alterados com pouca frequência
- Requisitos em tempo real: não armazene consultas em cache que sempre devem retornar os dados mais recentes
Para cenários avançados de cache, incluindo a invalidação de cache e a configuração externa do Redis, consulte as políticas de cache do APIM.
Limitação de taxa
Você pode limitar o número de chamadas à API que um cliente pode fazer em um período de tempo específico. Aqui está um exemplo de entrada de política de limitação de taxa que você pode adicionar abaixo <inbound><base/> que impõe no máximo duas chamadas a cada 60 segundos para um determinado usuário:
<rate-limit-by-key
calls="2"
renewal-period="60"
counter-key="@(context.Request.Headers.GetValueOrDefault("Authorization"))"
increment-condition="@(context.Response.StatusCode == 200)"
remaining-calls-variable-name="remainingCallsPerUser" />
Depois de enviar mais de duas chamadas à API em um minuto, você receberá uma mensagem de erro:
{
"statusCode": 429,
"message": "Rate limit is exceeded. Try again in 58 seconds."
}
Para obter mais informações sobre como configurar políticas de limitação de taxa no APIM, consulte a documentação.
Práticas recomendadas
Ao integrar o APIM à API do Fabric para GraphQL, siga estas recomendações:
Segurança
- Usar identidades gerenciadas: preferir identidades gerenciadas em vez de chaves de API ou cadeias de conexão para autenticação
- Implementar privilégios mínimos: conceda apenas as permissões mínimas necessárias para a identidade gerenciada
- Habilitar somente HTTPS: configurar o APIM para rejeitar solicitações HTTP e impor HTTPS
- Validar entradas: usar políticas APIM para validar consultas GraphQL antes de encaminhar para o Fabric
Performance
- Armazenar em cache dados acessados com frequência: identificar consultas comuns e definir as durações de cache apropriadas
- Monitorar as taxas de acerto do cache: use a análise de APIM para monitorar a eficácia do cache
- Otimizar limites de taxa: balancear a experiência do usuário com a proteção de capacidade
- Usar a implantação regional: implantar o APIM na mesma região que a capacidade do Fabric
Monitoramento e governança
- Habilitar o diagnóstico: configurar o log de diagnóstico do APIM para acompanhar o uso da API
- Configurar alertas: criar alertas para violações e erros de limite de taxa
- Versionar suas APIs: Usar o controle de versão do APIM para gerenciar quaisquer alterações disruptivas
- Documente suas APIs: use o portal do desenvolvedor do APIM para fornecer a documentação da API
Otimização de custos
- Ajuste os limites de taxa: defina limites que se alinhem à camada de capacidade
- Monitorar o consumo de capacidade: acompanhar o uso da capacidade do APIM e do Fabric
- Usar o cache estrategicamente: balancear os requisitos de atualização com economia de capacidade
- Examinar padrões de uso: analisar regularmente quais consultas consomem a maioria dos recursos
Resumo
Integrar a API do Fabric para GraphQL com o Gerenciamento de API do Azure une as poderosas capacidades de dados do Fabric com os recursos de gateway de API de nível empresarial do APIM. Essa combinação fornece:
- Segurança aprimorada: autenticação de identidade gerenciada, proteção contra ameaças e controle de acesso baseado em política
- Escalabilidade aprimorada: cache de resposta, limitação de taxa e distribuição de carga em vários back-ends
- Melhor desempenho: latência reduzida por meio de cache e roteamento de solicitação otimizado
- Governança centralizada: monitoramento unificado, controle de versão e gerenciamento em várias APIs
- Controle de custo: limitação de taxa e cache reduzem o consumo de capacidade do Fabric
Seguindo as etapas de configuração e as práticas recomendadas neste artigo, você pode criar uma camada de API robusta, segura e escalonável que dá suporte a cargas de trabalho de produção em toda a sua organização.