Proteggi le credenziali Cloud della tua app Firebase ML Apple

Se la tua app Apple utilizza una delle API cloud di Firebase ML, prima di avviare la tua app in produzione, dovresti eseguire alcuni passaggi aggiuntivi per impedire l'accesso non autorizzato alle API.

1. Riduci l'ambito delle chiavi API esistenti

Innanzitutto, configura le chiavi API esistenti per impedire l'accesso all'API Cloud Vision:

  1. Apri la pagina Credenziali di Google Cloud Console. Quando richiesto, seleziona il tuo progetto.

  2. Per ogni chiave API esistente nell'elenco, apri la visualizzazione di modifica.

  3. Nella sezione Restrizioni API , seleziona Limita chiave , quindi aggiungi all'elenco tutte le API a cui desideri che la chiave API abbia accesso. Assicurati di non includere l'API Cloud Vision.

    Quando configuri le restrizioni API di una chiave API , dichiari esplicitamente le API a cui la chiave ha accesso. Per impostazione predefinita, quando la sezione Restrizioni API ha Non limitare la chiave selezionata, è possibile utilizzare una chiave API per accedere a qualsiasi API abilitata per il progetto.

Ora, le tue chiavi API esistenti non concederanno l'accesso ai servizi cloud ML, ma ogni chiave continuerà a funzionare per tutte le API che hai aggiunto al relativo elenco di restrizioni API .

Tieni presente che se in futuro abiliti API aggiuntive, devi aggiungerle all'elenco delle restrizioni API per la chiave API applicabile.

2. Crea una nuova chiave API da utilizzare con Firebase ML

Quindi, crea una nuova chiave API per Firebase ML che consenta solo chiamate all'API Cloud Vision:

  1. Torna alla pagina Credenziali . Assicurati che il tuo progetto Firebase sia ancora selezionato.

  2. Fare clic su Crea credenziali > Chiave API . Prendi nota della nuova chiave API, quindi fai clic su Limita chiave .

  3. Nella sezione Restrizioni API , seleziona Restrict key , quindi aggiungi all'elenco solo l'API Cloud Vision.

Questa chiave API consente l'accesso solo all'API Cloud Vision e può essere utilizzata da Firebase ML per accedere ai modelli basati su cloud.

Per ridurre le conseguenze di una chiave compromessa, dovresti ridurre la quota per utente dell'API Cloud Vision dall'impostazione predefinita. Fare così:

  1. Apri la pagina Quote API Cloud Vision di Google Cloud Console. Quando richiesto, seleziona il tuo progetto.

  2. Nella sezione Richieste , imposta la quota Richieste al minuto per utente su un valore ragionevole per la tua app. Ad esempio, se la tua app prevede il caricamento di un'immagine di un documento per recuperarne il testo, è improbabile che un utente lo faccia più di una volta ogni pochi secondi, quindi una quota di 30-40 sarebbe probabilmente sicura.

    Si noti che in questo contesto "richieste per utente" si riferisce a richieste provenienti da un unico indirizzo IP. Potrebbe essere necessario considerare questo se prevedi che più utenti utilizzino la tua app contemporaneamente da dietro un NAT.

4. Chiama le API Cloud utilizzando la tua chiave API Firebase ML

Infine, nella tua app, configura Firebase ML per utilizzare la tua nuova chiave API.

Poiché la chiave API Firebase ML consente l'accesso non autenticato all'API Cloud Vision, è importante mantenere la chiave riservata per prevenire l'uso non autorizzato e gli addebiti sul tuo account di fatturazione. Per fare ciò, dovresti astenerti dall'includere la tua chiave API nel file binario dell'app. Al contrario, in fase di esecuzione dell'app, verifica che un utente valido noto abbia effettuato l'accesso e, solo allora, recupera la chiave API da un server.

Anche quando queste pratiche vengono osservate, è possibile che una chiave API venga compromessa. È necessario adottare misure per ridurre le conseguenze di una chiave compromessa, ad esempio riducendo la quota per utente dell'API come descritto sopra, implementando criteri di rotazione delle chiavi ed emettendo chiavi diverse a gruppi di utenti diversi.

Dopo che la tua app ha acquisito in sicurezza la chiave API, quando desideri chiamare un'API Firebase ML Cloud, specifica la chiave:

Veloce

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Obiettivo-C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

Inoltre, dovresti seguire i consigli generali in Protezione di una chiave API .

Prossimi passi

Consulta l'elenco di controllo per l'avvio per informazioni sulla preparazione dell'app per l'avvio quando utilizzi altre funzionalità di Firebase.