2011-06-28 9 views
3

AndroidアプリでAmazonのSimpleDBに接続する必要があります。 AmazonのAndroid SDKで提供されているサンプルプロジェクトは、プロジェクトのソースにあるAwsCredentials.propertiesというファイルに資格情報を格納します。ソースコードはこれらの呼び出しにアクセスして使用します。AndroidプロジェクトでAWS資格情報を処理する適切な方法は何ですか?

Properties properties = new Properties(); 
properties.load(getClass().getResourceAsStream("AwsCredentials.properties")); 

String accessKeyId = properties.getProperty("accessKey"); 
String secretKey = properties.getProperty("secretKey"); 
... 
credentials = new BasicAWSCredentials(properties.getProperty("accessKey"), properties.getProperty("secretKey")); 

これは適切かつ安全な方法ですか?

答えて

3

私はそのようにはしません。すばやく一緒に配置するのに適していますが、AWSの資格情報をプロパティファイルに保存するのは安全な方法ではありません。 Amazonは実際にhow to access AWS securely from a mobile deviceに有用な記事を提供しています。また、KeyStore provided by Androidを見ることをお勧めします。

using IAM users for mobile AWS credentialsについての詳細は、他の質問にお答えしました。

+0

私はKeyStoreの使用方法を検討しましたが、使用方法はわかりません。以前はJavaで暗号セキュリティを扱ったことがありませんでした。まず、KeyStoreは電話機の実際のクレデンシャルストレージを表していますか?第二に、私のアクセスキーと秘密鍵が以前に電話に登録されたことがない場合、私のアプリで出荷することなく、このKeyStoreに私の鍵をどのように取得するのですか? – kibibyte

+0

はい、KeyStoreは資格情報の保管場所です。 2番目の質問では、アプリケーションユーザーを登録または認証し、(リモートサーバー/ EC2インスタンス上で)IAMユーザーを作成するか、返されたアプリケーションユーザーにIAMユーザーを再利用してから、新しいIAMを取得する必要がありますユーザーの資格情報私はそれが継ぎ目のないワークフローではないことを再認識しています。私が気づいていないユースケースのために、より良い方法があるかもしれません。 – BenM

+0

私のアプリのユーザーは、1つのマスターデータベースにアクセスする必要があります。私は開発の最初の段階で少なくとも1人のユーザーを別のユーザーと区別する必要はありません。私はIAMのものや、あなたが今説明したものをすべて調べる必要がありますか?そして、私はアプリのためのいくつかの種類のサーバーをスピンアップして資格情報を取得する必要があるように思えます。私は正しい? – kibibyte

関連する問題