Evitar abusos da API Gemini com o Firebase App Check

Ao chamar uma API diretamente de um app para dispositivos móveis ou da Web (por exemplo, as APIs que permitem acesso a modelos de IA generativa), ela fica vulnerável a abusos por clientes não autorizados. Para ajudar a proteger essas APIs contra abusos, use Firebase App Check para verificar se todas as chamadas de API recebidas são do seu app real e de um dispositivo não adulterado.

Firebase AI Logic oferece um gateway de proxy que permite a integração com Firebase App Check e protege as APIs de modelo de IA generativa chamadas pelos seus apps para dispositivos móveis e da Web. O uso de App Check com os Firebase AI Logic SDKs oferece suporte a todas as nossas configurações:

  • Protege os dois provedores da "API Gemini": Gemini Developer API e Vertex AI Gemini API.

  • Protege todos os modelos com suporte, tanto os modelos Gemini quanto os Imagen modelos.

App Check também oferece suporte à proteção contra repetição, o que significa que um token App Check só pode ser usado uma vez.

Resumo de alto nível de como App Check funciona

Com App Check, os dispositivos que executam seu app usam um provedor de atestado de app ou dispositivo que verifica um ou ambos os itens a seguir:

  • As solicitações vêm do seu app autêntico
  • As solicitações vêm de um dispositivo autêntico que não foi comprometido

Esse atestado é anexado a cada solicitação feita pelo seu app usando um Firebase AI Logic SDK. Quando você ativa a aplicação App Check, as solicitações de clientes sem um atestado válido são recusadas, assim como qualquer solicitação originada de um app ou plataforma que você não autorizou.

Ao configurar App Check, considere adicionar proteção contra repetição, que torna os tokens App Check de uso único. Essa opção oferece proteção aprimorada além da proteção de linha de base e permite definir um nível adequado de proteção para seu app e casos de uso.

Você pode encontrar informações detalhadas sobre App Check na documentação, incluindo cotas e limites.

Configurar App Check

A documentação do App Check oferece descrições detalhadas dos provedores de atestado , bem como instruções de implementação detalhadas.

  1. Escolha um provedor de atestado padrão e siga as instruções de implementação nos links a seguir:

    Se nenhum dos provedores de atestado padrão for suficiente para suas necessidades, implemente um provedor personalizado que use um provedor de atestado terceirizado ou suas próprias técnicas de atestado.

  2. (Obrigatório) Ative a aplicação App Check antes de confirmar o app em um sistema de controle de código-fonte disponível publicamente, compartilhar ou disponibilizar o app publicamente.

  3. (Recomendado) Melhore a proteção adicionando a proteção contra repetição, o que significa que um token App Check só pode ser usado uma vez.

Melhorar a proteção adicionando proteção contra repetição

Recomendamos o uso das versões mais recentes do SDK, mas verifique se você está usando pelo menos uma destas versões para usar a proteção contra repetição:
Plataformas da Apple v12.2.0+ | BoM do Android v34.14.0+ (App Check v19.1.0+) | Web v12.14.0+ | Flutter v4.15.0+ (App Check v4.10.0+) | Unity v13.12.0+

Por padrão, App Check usa tokens de sessão que têm um tempo de vida (TTL, na sigla em inglês) configurável entre 30 minutos e 7 dias. Esses tokens de sessão são armazenados em cache pelo App Check SDK, enviados com solicitações do seu app e podem ser reutilizados até que o TTL expire. O uso de tokens de sessão é considerado proteção de linha de base.

No entanto, você pode melhorar a proteção além dessa proteção de linha de base aplicando a proteção contra repetição, que usa tokens de uso limitado. Quando a proteção contra repetição é aplicada, acontece o seguinte:

  • App Check vai bloquear solicitações para Firebase AI Logic que usam tokens de sessão. Em vez disso, App Checkpermite uma solicitação para Firebase AI Logic se ela usar um token de uso limitado recém-criado.

  • Depois que o token de uso limitado é verificado, ele é consumido para que possa ser usado apenas uma vez, o que impede ataques de repetição.

  • O App Check SDK gera um novo token de uso limitado para cada solicitação. Esse processo pode afetar suas solicitações, adicionando alguma latência e, às vezes, custo (dependendo do provedor de atestado).

Configurar e aplicar a proteção contra repetição

Clique no seu provedor Gemini API para conferir o conteúdo específico do provedor e o código nesta página.

Saiba como configurar e aplicar a proteção contra repetição:

  1. Se ainda não fez isso, implemente App Check e ative App Check a restrição para seu app.

  2. Ative o uso de tokens de uso limitado.

    No seu app durante a instanciação, defina o parâmetro useLimitedUseAppCheckTokens como true:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. Aplique a proteção contra repetição.

    1. Na base de código do app, verifique se você ativou o uso de tokens de uso limitado (consulte a etapa anterior).

    2. No console do Firebase, acesse Segurança > App Check.

    3. Expanda a visualização de métricas para Firebase AI Logic.

    4. Verifique se a proteção de linha de base está aplicada e clique em Continuar.

    5. Para proteção contra repetição, escolha Não aplicado (somente monitoramento) ou Aplicado.

      Considere o seguinte para decidir quando aplicar a proteção contra repetição:

      • O monitoramento das solicitações é recomendado se um número substancial de usuários estiver usando versões anteriores do seu app sem o uso de tokens de uso limitado ativado. Se você aplicar a proteção contra repetição imediatamente, as solicitações desses usuários serão bloqueadas.

      • Você pode monitorar especificamente a métrica Não verificado: token reutilizado, que é o número de solicitações que têm um token que já foi usado em uma solicitação anterior. Monitore essa métrica no Firebase console (acesse a guia Segurança > App Check > APIs).

        Se uma parte significativa das solicitações recentes estiver nessa categoria, você poderá evitar interrupções aos usuários e considerar esperar para aplicar a proteção contra repetição até que mais usuários tenham atualizado para uma versão do seu app que use tokens de uso limitado.

Entender como Firebase AI Logic se integra ao App Check

Para usar os Firebase AI Logic SDKs, a Firebase AI Logic API (firebasevertexai.googleapis.com) precisa estar ativada no seu projeto do Firebase. Isso ocorre porque as solicitações feitas pelos Firebase AI Logic SDKs são enviadas primeiro ao Firebase AI Logic servidor, que atua como um gateway de proxy em que a verificação Firebase App Check ocorre antes que a solicitação possa prosseguir para o back-end do provedor "Gemini API" escolhido e as APIs para acessar os modelos Gemini e Imagen.