2017-08-03 22 views
0

我在RDS實例上設置了IAM身份驗證,並且我可以使用IAM獲取15分鐘的數據庫密碼。這可以訪問數據庫進行備份,但是這個數據庫支持一個Web應用程序,所以在15分鐘後,應用程序用來連接數據庫的密碼變得無效,應用程序崩潰,因爲它不能再訪問數據庫。在RDS中使用帶有IAM身份驗證的EC2實例配置文件

然而,在RDS IAM docs有這樣一行:

對於在Amazon EC2上運行的應用程序,你可以使用EC2實例檔憑證來訪問數據庫,這樣你就不需要在使用數據庫密碼你EC2實例。

這意味着,在EC2上沒有必要使用IAM臨時數據庫的密碼,這將意味着我的應用程序應該能夠只要它運行在EC2上,我設置了角色權限連接到數據庫(我認爲我做得正確)。但是,我無法讓EC2上運行的應用程序能夠連接到RDS DB,除非使用15分鐘的臨時密碼。如果我嘗試使用沒有密碼的普通MySQL連接進行連接,則會被拒絕。使用EC2實例配置文件連接到RDS需要做些什麼特別的事情嗎?或者如果不使用15分鐘的臨時密碼是不可能的?

回答

0

根據您鏈接的文檔(http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html),您需要執行以下步驟(「驗證到一個數據庫實例或數據庫集羣中使用IAM數據庫驗證」下見):

  1. 使用AWS SDK用於Java或AWS CLI以獲取可用於標識IAM用戶或角色的身份驗證令牌。要了解如何獲取身份驗證令牌,請參閱獲取身份驗證令牌。
  2. 使用SSL連接連接到數據庫,將IAM用戶或角色指定爲數據庫用戶帳戶,並將身份驗證令牌指定爲密碼。有關更多信息,請參閱使用IAM數據庫身份驗證連接到數據庫實例或數據庫羣集。

這意味着對於您打算打開的每個連接,您需要使用AWS開發工具包獲取有效的令牌。這是需要使用具有RDS權限的正確實例配置文件的地方。另請參閱AWS文檔頁面後面的代碼示例。

但我認爲這需要您付出相當多的努力,以便在打開連接之前始終獲取有效的令牌。它使得使用現成的連接池變得困難。可能一旦打開,即使令牌過期,連接仍將保持打開狀態,但您仍然需要處理稍後需要打開更多連接的情況。

我會堅持一個正常的用戶/密碼訪問的應用程序,使用IAM這種情況下似乎是太多的努力。

0

對於在Amazon EC2上運行的應用程序,可以使用EC2實例配置文件憑據來訪問數據庫,因此不需要在EC2實例上使用數據庫密碼。

你誤解了這意味着什麼。這意味着您不必使用靜態密碼或將它們存儲在實例中。

這個想法是,您每次建立到數據庫的連接時都會生成一個新的身份驗證令牌。該令牌是使用實例角色憑據在您的實例上生成的。它只能用於15分鐘的身份驗證,但一旦連接,15分鐘後就不會丟失數據庫連接。你保持聯繫。

如果您的應用程序不重用數據庫連接,那麼您可能有一個設計缺陷。

相關問題