### Apache Airflow Provider(s)

google

### Versions of Apache Airflow Providers

apache-airflow-providers-google~=5.0

### Apache Airflow version

2.1.3 (latest released)

### Operating System

MacOS Big Sur

### Deployment

Astronomer

### Deployment details

_No response_

### What happened

The CloudSqlProxyRunner queries the Airflow DB directly to retrieve the GCP connection.

https://github.com/apache/airflow/blob/7b3a5f95cd19667a683e92e311f6c29d6a9a6a0b/airflow/providers/google/cloud/hooks/cloud_sql.py#L521

### What you expected to happen

In order to not break when using connections stored in external secrets backends, it should use standardized methods to retrieve connections and not query the Airflow DB directly.

### How to reproduce

Use a CloudSQLDatabaseHook with `use_proxy=True` while using an external secrets backend.

### Anything else

Every time

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/providers/google/cloud/hooks/cloud_sql.py
"""
        Retrieve Cloud SQL Proxy runner. It is used to manage the proxy
        lifecycle per task.
        :return: The Cloud SQL Proxy runner.
        :rtype: CloudSqlProxyRunner
        """
        if not self.use_proxy:
            raise ValueError("Proxy runner can only be retrieved in case of use_proxy = True")
        if not self.sql_proxy_unique_path:
            raise ValueError("The sql_proxy_unique_path should be set")
        return CloudSqlProxyRunner(
            path_prefix=self.sql_proxy_unique_path,
            instance_specification=self._get_sqlproxy_instance_specification(),
            project_id=self.project_id,
            sql_proxy_version=self.sql_proxy_version,
            sql_proxy_binary_path=self.sql_proxy_binary_path,
            gcp_conn_id=self.gcp_conn_id,
        )
    def get_database_hook(self, connection: Connection) -> Union[PostgresHook, MySqlHook]:
        """
        Retrieve database hook. This is the actual Postgres or MySQL database hook
        that uses proxy or connects directly to the Google Cloud SQL database.
        """
        if self.database_type == 'postgres':
            self.db_hook = PostgresHook(connection=connection, schema=self.database)
        else:
            self.db_hook = MySqlHook(connection=connection, schema=self.database)
        return self.db_hook
    def cleanup_database_hook(self) -> None: