Документация О прокси-сервере Cloud SQL содержит строку: «[B] поскольку прокси-сервер всегда подключается с имени хоста, доступ к которому возможен только через прокси-сервер, вы можете создать учетную запись пользователя, которая может использоваться только прокси-сервером. Преимущество этого заключается в том, что вы можете указать эту учетную запись без пароля, не ставя под угрозу безопасность вашего экземпляра или ваших данных ».
Есть ли какой-либо практический способ подключения клиента MySQL через прокси-сервер Google Cloud, который аутентифицируется с использованием учетной записи службы, которой разрешен доступ только к определенному пользователю MySQL?
Одним из возможных способов ограничения доступа при использовании прокси-сервера Cloud SQL является создать учетную запись пользователя MySQL с IP-адресом Cloud SQL Proxy: '[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'
. Но это не сработает для учетной записи службы, которая работает на нескольких облачных виртуальных машинах. Это в основном аутентификация пользователя MySQL по IP-адресу, а не по учетной записи службы.
Второй способ ограничить учетную запись службы для пользователя MySQL может заключаться в использовании учетной записи пользователя MySQL. '[USER_NAME]'@'cloudsqlproxy~%'
и полагаться на IAM для ограничения доступа. Учетная запись службы, на которой запущен клиент Cloud SQL требует то roles/cloudsql.client
роль, что эквивалентно cloudsql.instances.connect
и cloudsql.instances.get
разрешения. К сожалению, если вы предоставите эту роль нескольким учетным записям служб, то похоже, что нет способа запретить им использовать пользователя MySQL друг друга.
Третий потенциальный способ включить аутентификацию без пароля может заключаться в использовании клиентских сертификатов (gcloud sql ssl-certs create [CERT_NAME] client-key.pem --instance [INSTANCE_NAME]
). Но закрытыми ключами клиентов управлять еще труднее, чем паролями, поскольку все они становятся недействительными одновременно менее чем через год при обновлении сертификата сервера: «При обновлении сертификата сервера вы также должны сгенерировать новые сертификаты клиентов; существующие клиентские сертификаты аннулируются ». Это делает их практически невозможными для использования в производстве.
По сути, похоже, что Cloud SQL Proxy не позволяет аутентифицироваться конкретному пользователю MySQL через учетную запись службы IAM. Это верно?
По сути, похоже, что Cloud SQL Proxy не позволяет аутентифицироваться конкретному пользователю MySQL через учетную запись службы IAM. Это верно?
Это верно. Прокси-сервер Cloud SQL не предлагает никаких механизмов для ограничения того, к каким пользователям MySQL у вас есть доступ при подключении через прокси-сервер. Соединения, выполняемые через прокси, ограничиваются только назначенными им ролями IAM. Механизм ограничения того, какие учетные записи могут получить доступ к каким пользователям, заключается в использовании защиты паролем.