### 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
:type sql_proxy_binary_path: str
    """
    def __init__(
        self,
        path_prefix: str,
        instance_specification: str,
        gcp_conn_id: str = 'google_cloud_default',
        project_id: Optional[str] = None,
        sql_proxy_version: Optional[str] = None,
        sql_proxy_binary_path: Optional[str] = None,
    ) -> None:
        super().__init__()
        self.path_prefix = path_prefix
        if not self.path_prefix:
            raise AirflowException("The path_prefix must not be empty!")
        self.sql_proxy_was_downloaded = False
        self.sql_proxy_version = sql_proxy_version
        self.download_sql_proxy_dir = None
        self.sql_proxy_process = None  
        self.instance_specification = instance_specification
        self.project_id = project_id
        self.gcp_conn_id = gcp_conn_id
        self.command_line_parameters = []  
        self.cloud_sql_proxy_socket_directory = self.path_prefix
        self.sql_proxy_path = (
            sql_proxy_binary_path if sql_proxy_binary_path else self.path_prefix + "_cloud_sql_proxy"
        )
        self.credentials_path = self.path_prefix + "_credentials.json"
        self._build_command_line_parameters()
    def _build_command_line_parameters(self) -> None: