0

J'ai une application Android, que je veux déployer pour un usage commercial. J'utilise aws pouvoirs secrets, actuellement je l'ai codé en dur dans le code.Sécuriser le moyen de stockage des informations d'identification secrètes

Existe-t-il un moyen sûr de déployer l'application Android, en transmettant les informations d'identification en tant que paramètres externes. Tout comme ce que nous faisons dans l'application serveur, en passant les informations d'identification en tant que variables d'environnement. Je ne veux pas avoir de clés secrètes ouvertes dans ma base de code.

Je voulais savoir s'il y avait un moyen de faire quelque chose de similaire dans l'application android.

Répondre

0

J'ai trouvé la méthode suivante pour passer des creds comme variables Envirnoment à apk pendant la construction. Ceux-ci seront stockés en tant que variable de construction.

Dans votre répertoire de projet crée un fichier gradle.properties et ajoutez vos informations d'identification:

AWS_CRED=aws_cred 

Dans votre fichier build gradle, sous android ajouter ce qui suit:

android { 
defaultConfig{ 
manifestPlaceholders=[AWS_CRED:AWS_CRED] 
} 
} 

Qu'est-ce que cela fait est, il passera les variables de construction à votre manifeste android. Maintenant, allez à AndroidManifest.xml et sous l'étiquette ajouter ce qui suit:

<application 
<meta-data 
      android:name="AWS_CRED" 
      android:value="${AWS_CRED}" /> 
</application> 

maintenant accès à la valeur dans un code java, comme ci-dessous:

applicationInfo = getApplicationContext().getPackageManager().getApplicationInfo(getApplicationContext().getPackageName(), PackageManager.GET_META_DATA); 

Cette méthode a fonctionné pour moi, si S'il vous plaît commenter n'importe qui sait une meilleure manière de le faire.

0

Il existe plusieurs méthodes pour cela en fonction de votre configuration. La méthode la plus sûre consiste probablement à faire en sorte que vos instances d'application assument un rôle avec les autorisations nécessaires, de sorte que vous n'avez pas besoin de stocker vos informations d'identification.

Pour en savoir plus devrait être suffisant pour vous aider à démarrer: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html

+0

Merci d'avoir répondu –

1

Je voudrais utiliser le même principe de Environment variables mais par Gradle. L'idée est que vous devriez avoir un fichier gradle.properties dans votre dossier d'utilisateur où Gradle peut ramasser les propriétés à partir de gradle.properties. Ce fichier, bien sûr, ne sera pas ajouté au contrôle de la source.

vous pouvez faire quelque chose comme ça

~/.gradle/gradle.properties

projectAwsCred1=cred1 
projectAwsCred2=cred2 

build.gradle (app)

... 
buildConfigField "String", "AWS_CRED_1", "\"projectAwsCred1\"" 
buildConfigField "String", "AWS_CRED_2", "\"projectAwsCred2\"" 

puis (après bâtiment) vous pouvez l'appeler dans votre code comme d'habitude Build.AWS_CRED_1

De cette façon, vos informations d'identification seront cuites dans votre application, mais uniquement en temps de construction. Vous devrez bien sûr documenter cela dans un fichier README afin que les autres (ou vous futur) sachent où placer l'information projectAwsCred*.

+0

Merci d'avoir répondu, –