I am testing an Amazon RDS MySQL solution: the database is provided by Amazon RDS but the application logic (php scripts) that accesses the data is hosted in another, different (non-amazon) server.
Suppose that for some reason I can't use MySQL SSL connections and I rely only on the security provided by the origin/destination policies you can set on Amazon VPC: I can say that the MySQL instance can accept traffic ONLY from a specific IP (the IP of my Web server) and can send traffic ONLY to a specific IP (again, the IP of my Web server).
How unsafe is this solution? I know the question seems too vague, but there are some specific details I would like to clarify; let's try to see what can happen:
1) Data (including MySQL credentials) are sent in clear over the Internet, so if it is sensible data, it might be seen by an external party. How easy is this attack? The fact we are using IP and not domain names in the policy makes a man-in-the-middle attack more difficult to execute?
2) Assume an attacker manages to steal the MySQL credentials using 1), how easy executing arbitrary queries on the MySQL instance would be? The attacker has to pretend to have my webserver's IP, operation that should be harder in "receiving mode" than in "sending mode". So I guess there are two different categories of queries we should consider separately:
A: Arbitrary SELECT queries (in general, queries that ask for some kind of data back)
B: Arbitrary DELETE, UPDATE, INSERT, ... (in general, queries that doesn't need an answer)
I would say queries B are easier to execute but this might depend on other factors such as the specific protocol used by MySQL.