Google Cloud SQL - ловить плохие логины - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть существующий экземпляр MySQL (версия 5.7), размещенный (управляемый) в Google Cloud SQL. Я хочу получать уведомление, когда кто-то пытается подключить мою базу данных с неверным именем пользователя / паролем.

Моя идея заключалась в том, чтобы искать его в журналах Google Stackrive, но его там нет.

Есть возможность собрать эту информацию?

ОБНОВЛЕНИЕ 1:

Я попытался подключить экземпляр к gcloud, но, к сожалению, он не работает.

$ gcloud sql connect mydb
Whitelisting your IP for incoming connection for 5 minutes...done.
ERROR: (gcloud.sql.connect) It seems your client does not have ipv6 connectivity and the database instance does not have an ipv4 address. Please request an ipv4 address for this database instance.

Это потому, что база данных доступна только внутри внутренней сети. Я искал флаги типа --internal-ip, но не нашел.

Однако я догадывался, что это не имеет никакого значения, если я попытаюсь получить доступ к базе данных из моего редактора БД (верстак). Итак, я сделал это: enter image description here

Поиск запроса, который посоветовал @Christopher - но его там нет.

Что я пропустил?

ОБНОВЛЕНИЕ 2:

Снимок экрана моего Stackdrive: enter image description here

Даже если я удалю это (resource.labels.database_id="***") условие - результат будет таким же.

1 Ответ

1 голос
/ 04 февраля 2020

Существует возможность сбора этой информации?

Один из лучших способов сбора информации о том, кто пытается подключиться к вашему экземпляру Google Cloud SQL с неверными учетными данными, - Ведение журнала Stackdriver.

Перед началом

Чтобы воспроизвести эти шаги, я подключился к экземпляру Cloud SQL с помощью команды gcloud:

gcloud sql connect [CLOUD_SQL_INSTANCE]

Я не совсем уверен, что при использовании mysql в командной строке что-то изменится вдоль строк, но в случае, если это произойдет, вам нужно только поискать новое сообщение журнала и обновить последнюю логическую запись (начиная с пункта 4).

Как собрать эту информацию из ведения журнала Stackdriver

  1. Go в разделе Секция Stackdriver → Logging.
  2. Чтобы получить информацию, которую мы ищем, мы будем использовать расширенные запросы журнала . Расширенные запросы журнала - это выражения, которые могут указывать набор записей журнала из любого количества журналов. Расширенные запросы журналов можно использовать в средстве просмотра журналов, API ведения журнала или в инструменте командной строки gcloud. Они являются мощным инструментом для получения информации из журналов.
  3. Здесь вы найдете, как получить и включить расширенные запросы журнала в ваших журналах.
  4. Расширенные запросы журнала просто логические выражения, которые определяют подмножество всех записей журнала в вашем проекте. Чтобы выяснить, кто ввел неправильные учетные данные в ваш экземпляр Cloud SQL с MySQL, мы будем использовать следующие запросы :
    resource.type="cloudsql_database" 
    resource.labels.database_id="[PROJECT_ID]:[CLOUD_SQL_INSTANCE]" 
    textPayload:"Access denied for user"

Где [PROJECT_ID] соответствует идентификатору вашего проекта , а [CLOUD_SQL_INSTANCE] соответствует имени облака SQL экземпляра , который вы хотите контролировать.

Если вы заметили, последнее логическое выражение, соответствующее textPayload, использует оператор :.

Как описано здесь с помощью оператора : мы ищем совпадения с любой подстрокой в ​​поле записи журнала, поэтому каждый журнал, соответствующий строке указано, что в данном случае: "Access denied for user".

Если теперь какой-либо пользователь вводит неправильные учетные данные, в ваших журналах должно появиться сообщение, подобное следующему:

[TIMEFRAME][Note] Access denied for user 'USERNAME'@'[IP]' (using password: YES)

От здесь речь идет об использовании одного из продуктов GCP для отправки вам уведомления, когда пользователь вводит неправильные учетные данные.

Надеюсь, это поможет.

...