2017-05-02 11 views
2

いくつかのサービスリクエストの作成に関するAndroidアプリケーションからのリクエストを取得するバックエンドサービスを作成しています。これらのサービス要求には、サービス項目およびその要求に関連するいくつかの画像に関する詳細が含まれます。 S3を使用してアンドロイドアプリケーションから直接画像を保存し、バックエンドサービスでAPI呼び出しによって保存された画像のキーを取得する必要があります。S3を使用してモバイルアプリケーションから画像を保存する

このアプローチの問題は、モバイルアプリケーションが共有バケットにアクセスする許可です。

  • 共有バケットのアクセスキーをアプリケーションに保存すると、このコードはデコンパイルされ、秘密が侵害されます。
  • もう1つの選択肢は、バックエンドサービスにAPIを作成して、画像をS3に配置する前にモバイルアプリケーションに認証キーを返すことです。このようにして、シークレットを定期的に回転させることもできます。

これらのアプローチのどちらがセキュリティの面で優れていますか?私が逃している他のアプローチはありますか? S3を使ってファイルを保存するという標準的なアクセス方法のように聞こえるので、この特定のシナリオには何かが必要です。

答えて

2

これを行うには、APIを発明する必要はありません。AWSは、このユースケースだけのためのSTSサービスを提供しています。

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html

一時的なセキュリティ証明書を要求するには、あなたはAWS STS APIアクションを使用することができます。

APIを呼び出すには、 のJava、.NET、PythonやRubyの、アンドロイド、とiOSを含む、プログラミング言語やさまざまな環境のために 利用可能なAWS SDKに、のいずれかを使用することができます。 SDKは、要求に暗号で署名し、必要に応じて 要求を再試行し、エラー応答を処理するなど、 タスクを処理します。 AWSセキュリティトークン サービスAPIリファレンスで説明されているAWS STSクエリAPI を使用することもできます。最後に、AWS STSコマンドをサポートする2つのコマンドラインツール、AWSコマンドラインインターフェイス、および Windows PowerShellのAWSツールがあります。

AWS STS APIアクションは、 がアクセスキーとセッショントークンで構成されている一時的なセキュリティ資格情報を返します。アクセスキーは、アクセスキーIDと秘密鍵の で構成されています。ユーザー(またはユーザーが実行しているアプリケーション)は、これらの資格情報を使用してリソースにアクセスできます。 資格情報が作成されると、資格情報は の資格情報を使用するときにユーザーが実行できる操作を制限するIAM アクセス制御ポリシーに関連付けられます。詳細については、AWSリソースへのアクセスを要求するための資格情報 資格情報の使用を参照してください。

+0

@ BrennanバックエンドサービスからSTSを使用してモバイルアプリケーションの一時アカウントを作成し、これらの画像をS3にアップロードできることを意味しますか?これにより、これらの資格情報をアプリケーションに配布する際の問題は解決しません。そのためのAPIを作成する必要があります。 – Ansh

+1

アカウントを作成しないで、一時的な資格情報を要求します。 STS APIは、IAMの役割のコンテキスト内で動作する資格情報を提供します。制限された特権を持ち、短時間しか持続せず、再び使用することはできません。本質的に、それらは時間特権制限付きアクセスキー –

関連する問題