0

私はAndroidアプリケーションを持っています。私はaws秘密の資格情報を使用して、現在私はコードでそれをハードコードしている。秘密の資格情報を安全に保管する方法

外部パラメータとして資格情報を渡すことで、Androidアプリを安全に配備する方法はありますか。私たちがサーバアプリケーションで行うように、環境変数として資格を渡します。私は自分のコードベースで秘密鍵を開けたくありません。

Androidアプリで同様のことをする方法があるかどうかを知りたかったのです。

答えて

0

ビルド中に、Envirnoment Variablesをapkに渡す以下のメソッドが見つかりました。これらはビルド変数として保存されます。プロジェクトディレクトリで

gradle.propertiesファイルを作成し、資格情報を追加します。

AWS_CRED=aws_cred 

あなたのGradleのビルドファイルには、アンドロイドの下に次の行を追加します。

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

これは何され、あなたのアンドロイドマニフェストにビルド変数を渡します。今のAndroidManifest.xmlに移動して、タグの下に次の行を追加します。

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

以下のように今、任意のJavaコード内の値にアクセス:この方法は私のために働いた

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

、たら、コメントしてください誰もがそれを行うためのより良い方法を知っています。

0

セットアップによっては、これを行う方法はいくつかあります。おそらく最も安全な方法は、アプリケーションインスタンスに必要なアクセス許可を持つ役割を引き受け、資格情報をまったく格納する必要がないことです。 http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html

+0

お返事ありがとうございました –

1

私はEnvironment variablesのと同じ原理を使用しますが、Gradleの通過になります。

さらに読書はあなたが始めるのに十分でなければなりません。

考えられるのは、Gradleがピックアップのプロパティを取得できるユーザーフォルダにgradle.propertiesというファイルがあるということです。もちろん、このファイルはソース管理に追加されません。

あなたは後に(この

〜/ .gradle/gradle.properties

projectAwsCred1=cred1 
projectAwsCred2=cred2 

build.gradle(アプリ)

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

ような何かを行うことができますし、ビルド)あなたは通常のようにあなたのコードでそれを呼び出すことができますBuild.AWS_CRED_1

この方法では、あなたの認証情報はあなたのアプリで焼き付けられますが、ビルド時にのみ使用されます。 READMEにこれを文書化して、他人(または将来のあなた)がprojectAwsCred*情報を置くことが分かるようにする必要があります。

+0

お返事ありがとうございます、 –

関連する問題