### 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
if self.project_id == '':
            raise AirflowException("The required extra 'project_id' is empty")
        if not self.location:
            raise AirflowException("The required extra 'location' is empty or None")
        if not self.instance:
            raise AirflowException("The required extra 'instance' is empty or None")
        if self.database_type not in CLOUD_SQL_VALID_DATABASE_TYPES:
            raise AirflowException(
                "Invalid database type '{}'. Must be one of {}".format(
                    self.database_type, CLOUD_SQL_VALID_DATABASE_TYPES
                )
            )
        if self.use_proxy and self.use_ssl:
            raise AirflowException(
                "Cloud SQL Proxy does not support SSL connections."
                " SSL is not needed as Cloud SQL Proxy "
                "provides encryption on its own"
            )
    def validate_ssl_certs(self) -> None:
        """
        SSL certificates validator.
        :return: None
        """
        if self.use_ssl:
            self._check_ssl_file(self.sslcert, "sslcert")
            self._check_ssl_file(self.sslkey, "sslkey")
            self._check_ssl_file(self.sslrootcert, "sslrootcert")
    def validate_socket_path_length(self) -> None: