2016-09-30 46 views
3

我使用AWS服務發佈我的圖像和SNS服務推送通知。 要發佈圖像上AWS服務器我有secret key & access key與我目前我使用恆定文件,這是非常簡單的方法來訪問任何定義的密鑰的密鑰。安全密鑰存儲到常量文件是安全的還是建議任何備用解決方案?

#define AWS_AccessKey    @"###############" 
#define AWS_SecretKey    @"####################" 

但是,我的問題是

是有別於其他的關鍵安全嗎?

是任何一個可以很容易地從常量文件中獲得?如果是如何?

另外我還有一個我的加密數據庫SQLCypher的密匙,這樣密鑰也存儲在我的常量文件中。

#define DB_KEY    @"####################" 

那麼我們最好的存儲我們重要的鑰匙是什麼?和哪裏?

在此先感謝。

+0

根據環境有更好的方法。應用程序在哪裏運行? EC2? – at0mzk

+0

是它在ec2上。 – CodeChanger

回答

0

正如我在上面調查更多secret key商店關心我發現我的解決方案如下所述。

參考問題AWS安全關鍵環節:https://forums.aws.amazon.com/thread.jspa?threadID=63089

按照上面的鏈接AWS表明,我們需要實現TVM(令牌自動販賣機)基於服務調用給特殊的權利,以用戶上傳的數據上S3或在S3上加載數據,特別是bucket

TVM是一種令牌服務,給用戶托克有效12 hours36 hours最大)與服務器進行通信。

如果令牌過期,它將惡意呼叫服務並從AWS獲得新令牌。

通過AWS安全令牌服務提供的臨時憑證由四個部分組成:

  • 訪問鍵
  • ID祕密
  • 快捷鍵
  • 會話令牌
  • 到期時間

The GitHub爲Anonymous TVM和Identity TVM提供TVM的源代碼。通過這個例子,我們可以得到如何het TVM以及如何使用它來與服務器進行通信。

匿名TVM:https://github.com/amazonwebservices/aws-tvm-anonymous

身份TVM:https://github.com/amazonwebservices/aws-tvm-identity

希望這將有助於其他誰是找到相同的密鑰。

用於AWS密鑰存儲的完整鏈接:https://aws.amazon.com/articles/Mobile/4611615499399490

2

由於應用程序在ec2上運行,更安全的方法是使用附加到實例的IAM角色。見:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

這樣你就不必在任何地方存儲AWS密鑰。對於您的SQLCypher密鑰,您可以使用用戶數據腳本在第一次啓動時將密鑰傳遞給您的ec2實例並將其存儲在那裏,因此您至少不必將其存儲在代碼中。 通常這樣的配置最好保存在environment

+0

我沒有'環境'細節意味着無法理解如何在iOS應用程序中使用'config'文件,請你解釋一下嗎? – CodeChanger

+1

請參閱https://12factor.net/config – at0mzk

+0

將密鑰存儲在EC2用戶數據中不是一個好主意。從用戶指南:*雖然您只能從實例本身訪問實例元數據和用戶數據,但數據不受加密方法的保護。任何可以訪問該實例的人都可以查看其元數據。因此,您應該採取適當的預防措施來保護敏感數據(例如長期加密密鑰)。您不應將敏感數據(如密碼)存儲爲用戶數據。* https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html –