在RDS中使用EC2实例配置文件和IAM身份验证

时间:2017-08-03 03:08:04

标签: amazon-web-services amazon-ec2 amazon-iam rds

我在RDS实例上设置了IAM身份验证,我可以使用IAM获取工作时间为15分钟的数据库密码。这可以访问数据库进行备份,但是这个数据库支持一个Web应用程序,所以当前15分钟后,应用程序用来连接到数据库的密码变得无效,应用程序崩溃,因为它无法再访问数据库。

然而,在RDS IAM docs中有这一行:

  

对于在Amazon EC2上运行的应用程序,您可以使用EC2实例配置文件凭据访问数据库,因此您无需在EC2实例上使用数据库密码。

这意味着在EC2上不需要使用IAM临时数据库密码,这意味着我的应用程序应该能够连接到数据库,只要它在EC2上运行并且我设置了角色权限(我我想我做得对。但是,除了使用15分钟的临时密码之外,我无法让我的应用程序在EC2上运行以便能够连接到RDS数据库。如果我尝试使用没有密码的普通MySQL连接进行连接,我会被拒绝。使用EC2实例配置文件连接到RDS需要做些什么特别的事情,或者不使用15分钟的临时密码是不可能的?

2 个答案:

答案 0 :(得分:0)

根据您链接的文档(http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html),您需要执行以下步骤(请参阅"使用IAM数据库身份验证和#34对数据库实例或数据库群集进行身份验证;):

  1. 使用AWS SDK for Java或AWS CLI获取可用于识别IAM用户或角色的身份验证令牌。要了解如何获取身份验证令牌,请参阅获取身份验证令牌。
  2. 使用SSL连接连接到数据库,将IAM用户或角色指定为数据库用户帐户,将身份验证令牌指定为密码。有关更多信息,请参阅使用IAM数据库身份验证连接到数据库实例或数据库群集。
  3. 这意味着对于您打算打开的每个连接,您需要使用AWS SDK获取有效的令牌。这是使用具有RDS权限的正确实例配置文件的地方。另请参阅AWS文档页面下方的代码示例。

    我认为这需要你做出相当多的努力,以便在打开连接之前始终获得有效的令牌。它使得使用现成的连接池变得困难。可能一旦打开,即使在令牌过期后连接仍将保持打开状态,但您仍需要处理需要在以后打开更多连接的情况。

    我会坚持使用正常的用户/密码访问应用程序,在这种情况下使用IAM似乎是太费力了。

答案 1 :(得分:0)

  

对于在Amazon EC2上运行的应用程序,您可以使用EC2实例配置文件凭据访问数据库,因此您无需在EC2实例上使用数据库密码。

你误解了这意味着什么。这意味着您不必使用静态密码或将其存储在实例上。

您的想法是每次建立与数据库的连接时都会生成新的身份验证令牌。使用实例角色凭据在您的实例上生成令牌。它只能用于15分钟的身份验证,但一旦连接,15分钟后您就不会丢失数据库连接。你保持联系。

如果您的应用程序没有重用数据库连接,那么您可能会遇到设计缺陷。