2017-08-03 14 views
0

RDSインスタンスにIAM認証を設定しました.IAMを使用して15分間有効なデータベースパスワードを取得できます。これはバックアップのためのデータベースにアクセスするのはいいですが、このデータベースはWebアプリケーションをバックアップするので、現在15分後にDBに接続するためにアプリケーションが使用するパスワードが無効になり、DBにアクセスできないときにアプリケーションがクラッシュします。RDSのIAM認証でEC2インスタンスプロファイルを使用

しかし、RDS IAM docsにこのラインがあります:Amazon EC2の上で動作するアプリケーションのために

は、データベースにアクセスするためのEC2インスタンスプロファイルの資格情報を使用することができますので、あなたの上のデータベースのパスワードを使用する必要はありませんEC2インスタンス。

これは、EC2ではIAMの一時DBパスワードを使用する必要がないことを意味します。これは、アプリケーションがEC2上で実行されている限りDBに接続できる必要があり、 (これは私が正しくやったと思う)。しかし、15分の一時的なパスワードを使用する以外は、RDS DBに接続できるようEC2でアプリケーションを実行することはできません。パスワードなしの通常のMySQL接続で接続しようとすると、私は許可が拒否されます。 EC2インスタンスプロファイルを使用してRDSに接続するために特別な作業が必要なのでしょうか、15分の一時パスワードを使用しないとできないのですか?

答えて

0

リンクしたドキュメント(http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)によると、次の手順を(「IAMデータベース認証を使用してDBインスタンスまたはDBクラスタへの認証」の下を参照)を実行する必要があります。

  1. AWS SDKを使用しますJavaまたはAWS CLIがIAMユーザーまたはロールを識別するために使用できる認証トークンを取得するようにします。認証トークンを取得する方法については、「認証トークンの取得」を参照してください。
  2. IAMユーザーまたはロールをデータベースユーザーアカウント、認証トークンをパスワードとして指定して、SSL接続を使用してデータベースに接続します。詳細については、「IAMデータベース認証を使用したDBインスタンスまたはDBクラスタへの接続」を参照してください。

つまり、開こうとする接続ごとに、AWS SDKを使用して有効なトークンを取得する必要があります。ここでは、RDS権限を持つ正しいインスタンスプロファイルを使用する必要があります。また、AWSのドキュメントページのコード例を参照してください。

しかし、これは、接続を開く前に常に有効なトークンを取得するためにはかなりの労力が必要だと思います。既製の接続プールを使用するのが難しくなります。おそらく一度オープンすると、トークンの期限が切れた後も接続は開いたままになりますが、後でさらに多くの接続を開く必要がある場合は処理する必要があります。

私はこのケースでIAMを使用すると、アプリケーションの通常のユーザー/パスワードのアクセスに固執しますが、あまりにも多くの労力がかかるようです。

0

Amazon EC2で動作するアプリケーションの場合、EC2インスタンスプロファイルの認証情報を使用してデータベースにアクセスできるため、EC2インスタンスでデータベースパスワードを使用する必要はありません。

あなたはこれが何を意味しているのかを誤解しています。つまり、という静的なパスワードを使用したり、インスタンスに格納したりする必要はありません。

考えられるのは、データベースに接続するたびに新しい認証トークンを生成するということです。トークンは、インスタンス・ロール信任状を使用して、インスタンス上で生成されます。これは15分間の認証にのみ使用できますが、接続すると15分後にデータベース接続が失われることはありません。あなたはつながったままです。

アプリケーションがデータベース接続を再利用しない場合、おそらく設計上の欠陥があります。

関連する問題