[android] Qual è il modo preferito di utilizzare AWS (in particolare S3) dalle app mobili?


Answers

Non sono sicuro di come gli URL firmati si riferiscono a TVM, perché non capisco i concetti al 100% ma gli URL firmati mi hanno davvero risolto il problema. Avevo bisogno di un meccanismo che alimentasse le app web e i dati delle app mobili senza consentire l'uso improprio delle credenziali. Mettere la chiave nel codice è davvero una pessima idea in quanto potrebbe generare un conto enorme per l'azienda.

Dopo 3 giorni di ricerche approfondite, ho trovato una soluzione semplice e, a quanto sembra, affidabile e relativamente sicura: URL firmati . L'idea è che un back-end molto leggero possa generare un URL temporaneo che consentirà all'utente di accedere alla risorsa specifica per un tempo limitato . Quindi l'idea è semplice:

  • l'utente chiede al nostro back-end con una chiamata a riposo di volere una risorsa specifica

  • il back-end è già autorizzato con AWS S3

  • il back-end genera un URL temporaneo per l'utente e lo invia nella risposta Rest

  • l'utente utilizza l'URL per recuperare i dati direttamente da AWS

Un'implementazione Python plug-and-play può essere trovata qui e con una leggera modifica che dovevo usare: qui .

Naturalmente, un'altra cosa da capire sarebbe come autorizzare l'utente prima di sapere che possiamo garantirlo, ma questo è un altro paio di scarpe.

Question

L'aggiunta della chiave di accesso AWS e della chiave segreta direttamente nel codice dell'app non è sicuramente un buon approccio, principalmente perché l'app risiede sul dispositivo dell'utente (diversamente dal codice lato server) e può essere decodificata per ottenere le credenziali, che possono quindi essere utilizzate in modo improprio .

Anche se trovo queste informazioni ovunque, ma non sono in grado di trovare una soluzione definitiva a questo problema. Quali sono le mie opzioni? Ho letto dell'architettura dei distributori di gettoni per credenziali temporanee, ma non sono convinto che sia meglio. Se riesco a decodificare la chiave segreta, posso quindi decodificare il codice che richiede credenziali temporanee. E una volta che ho una serie di credenziali temporanee per accedere a S3, sono bravo come se avessi la chiave. Posso richiedere le credenziali temporanee ancora e ancora, anche se scadono abbastanza rapidamente. Per riassumere, se un'applicazione può fare qualcosa, posso fare lo stesso di un utente malintenzionato. Se non altro, il TVM può essere un po 'meglio alla gestione (rotazione delle credenziali e modifica della chiave in caso di violazione, ecc.). Si prega di notare che possiamo mettere le stesse restrizioni di accesso sulla chiave segreta, come pianifichiamo di fare in caso di credenziali temporanee TVM.

Inoltre, se Amazon non vuole che le persone utilizzino la chiave segreta direttamente nell'app, perché non la bloccano nel loro SDK e impongono TVM o la soluzione corretta. Se lascerai un percorso, le persone lo useranno. Ho letto diversi articoli come questi e mi chiedo perché ?: http://blog.rajbala.com/post/81038397871/amazon-is-downloading-apps-from-google-play-and

Sono principalmente di provenienza web, quindi la mia comprensione di questo potrebbe essere un po 'imperfetta. Per favore aiutami a capire se questo è migliore, e se c'è una soluzione perfetta (o potrebbe essere buona) disponibile a questo problema.

PS: Esiste un'implementazione su rotaie di TVM?




Links