首页 文章

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

提问于
浏览
0

我在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

    根据您链接的文档(http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html),您需要执行以下步骤(参见"Authenticating to a DB Instance or DB Cluster Using IAM Database Authentication"):

    • 使用AWS SDK for Java或AWS CLI获取可用于标识IAM用户或角色的身份验证令牌 . 要了解如何获取身份验证令牌,请参阅获取身份验证令牌 .

    • 使用SSL连接连接到数据库,将IAM用户或角色指定为数据库用户帐户,将身份验证令牌指定为密码 . 有关更多信息,请参阅使用IAM数据库身份验证连接到数据库实例或数据库群集 .

    这意味着对于您打算打开的每个连接,您需要使用AWS SDK获取有效的令牌 . 这是使用具有RDS权限的正确实例配置文件的位置 . 另请参阅AWS文档页面下方的代码示例 .

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

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

  • 0

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

    您必须使用静态密码或将它们存储在实例上 .

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

    如果您的应用程序不重用数据库连接,那么您可能存在设计缺陷 .

相关问题