I want to confirm if I understand this

I want to confirm if I understand this correctly, before i make a mistake by exposing the db publicly. I have a db running on third-party cloud provider, along with a cloudflared container in the same network. Now, from this docs: https://developers.cloudflare.com/hyperdrive/configuration/connect-to-private-database/#12-connect-your-database-using-a-public-hostname I need to create a public hostname <random_name>.<my_domain>.com/ and point it to db mysq://... with TCP type Question: 1. If I link my db to make it accessible publicity via endpoint wouldn't anyone access it? 2. Do I need to enter the db username and password in type TCP url as well? When I create a hyperdrive configuration, I can see it does ask for the db name, username and password. Does that mean, that I do not have to add username, password and db name in the tcp url?
4 Replies
knickish
knickish3mo ago
1. Only the tunnel endpoint is publicly accessible, not the database port (which is behind the tunnel) 2. No, you should only need the address (including the port) which is used to access the database from the container running inside your network You can test this by trying to connect via the MySQL command line client at the public hostname you choose to use for the tunnel; it won't allow unauthenticated access
Yashu Mittal
Yashu MittalOP3mo ago
Should I connect the mysql db to tunnel with the private networking hostname or a publicly network hostname (plz see the attached image)?
No description
Yashu Mittal
Yashu MittalOP3mo ago
I tried using both ways with private and public network hostname and for both of them I'm getting this error, when connecting it to hyperdrive.
"Failed to connect to the provided database: Connecting to database via Cloudflare Tunnel failed: 403 Forbidden"
"Failed to connect to the provided database: Connecting to database via Cloudflare Tunnel failed: 403 Forbidden"
not sure what exactly does it means: I got this error from cloudflared for mysql db connection:
WRN Connection terminated error="failed to accept QUIC stream: timeout: no recent network activity" connIndex=2
WRN Connection terminated error="failed to accept QUIC stream: timeout: no recent network activity" connIndex=2
AJR
AJR3mo ago
At a high level, the way this works is that you only expose your database to the Tunnel. You protect any ingress to the tunnel by having a default-deny Access Policy, and then an allow Access Policy for just your desired services. You give Hyperdrive the keys to that allow Policy (via Service Token), and now only Hyperdrive can access your database, and it isn't even exposed to the public Internet. However, in addition to that, you still need to deal with users/passwords on your database itself. So the Access secret+Id allow Hyperdrive to get to your database, and the username+password allow it to log into the DB itself once it gets there. The 403 means you haven't set up one of: * an Access Application for the tunnel * a Service Token you've created for Hyperdrive * added the Access Client Secret and Access Client ID from that token to your Hyperdrive Config * an Access Policy for the application, allowlisting the token Also, since I do recognize that's kind of a lot of faffing around to get this to work, there is an automatic "create and attach everything" feature on our Dashboard

Did you find this page helpful?