このページでは、Cloud SQL が不正アクセスを目的としたブルート フォース アクセス試行からインスタンスを保護するために備えている検出機能と保護機能、およびこれらの試行からインスタンスを保護する方法について説明します。
ブルート フォース保護は、Cloud SQL リソースへの不正アクセスを防止することで、インスタンスをブルート フォース アクセス試行から保護することを支援する組み込みのセキュリティ機能です。ブルートフォース アクセス試行は、悪意のあるユーザーがさまざまなユーザー名とパスワードの組み合わせを体系的に試して、ログイン試行を自動化し、データベースへのアクセス権を取得しようとする場合に発生します。
Cloud SQL には、ブルート フォース アクセス試行からデータベースを保護するための次のオプションが用意されています。
ブルートフォース アクセス検出: Cloud SQL は、各インスタンスのログイン試行の失敗を継続的にモニタリングし、ログインの最初の成功を検出します。連続ログイン試行回数が Cloud SQL で定義されたしきい値を超えると、Cloud SQL はインスタンス ログに警告メッセージを生成します。このログ メッセージは、関連する IP アドレスとユーザー名とともに、ブルート フォース アクセス試行を特定します。
ブルート フォース アクセスの検出は、すべての Cloud SQL エディションで実施できます。
ブルート フォース アクセス保護: Cloud SQL がブルート フォース アクセス試行を検出すると、ログイン レスポンスに遅延を追加してリアルタイムでスロットリングすることで、自動的にログイン試行の処理速度を低速化します。Cloud SQL が接続をブルート フォース アクセス試行として識別し、その接続がログインの成功につながった場合、Cloud SQL は接続をスロットリングし、このログインの成功を識別するためのログイベントを生成します。このログイベントは、ブルート フォース アクセス試行とともに、関連する IP アドレスとユーザー名を識別します。
ブルート フォース アクセス保護は、Cloud SQL Enterprise Plus エディションでのみ実施できます。
Cloud SQL は、インスタンスに対するブルート フォース アクセスを検出して保護することで、ブルート フォース アクセス試行の原因を特定し、それらの試行によって発生するリスクを軽減します。これらのブルート フォース アクセス試行で特定された IP アドレスとユーザー名を使用して、インスタンスを保護し、今後のブルート フォース アクセス試行から保護します。インスタンスに対するブルート フォース アクセス試行を特定するには、ブルート フォース アクセス試行のログを表示するをご覧ください。
ブルート フォース アクセス試行のログを表示する
Cloud SQL がブルート フォース アクセス試行を検出すると、インスタンス ログに an anomaly was found というテキストを含むイベントが記録されます。Cloud SQL は、次の詳細なイベントをログに記録します。
| イベント | 説明 |
|---|---|
| ブルート フォース アクセス試行の検出 | IP IP からアカウント user へのログイン試行が失敗しました。この IP からのログイン試行の失敗が繰り返されているという異常が検出されました。 |
| ブルート フォース アクセス試行を軽減するための自動スロットリング(Enterprise Plus エディションのみ) | IP IP からアカウント user へのログイン試行が失敗しました。この IP からのログイン試行の失敗が繰り返されているという異常が検出されました。Cloud SQL は、ブルート フォース試行の可能性を軽減するために、レスポンスをスロットリングしました。 |
| ログインの失敗が繰り返された後に最初に成功したログインの検出 | 異常が検出されました。ログイン試行が繰り返し失敗した後、IP IP からアカウント user へのログインが成功しました。このアクティビティが予期しないものである場合は、ユーザー パスワードを変更することをおすすめします。 |
| ログインの失敗が繰り返された後に最初に成功したログインの自動スロットリング(Enterprise Plus エディションのみ) | 異常が検出されました。ログイン試行が繰り返し失敗した後、IP IP からアカウント user へのログインが成功しました。Cloud SQL は、ブルート フォース試行の可能性を軽減するために、レスポンスをスロットリングしました。このアクティビティが予期しないものである場合は、ユーザーのパスワードを変更してください。 |
これらのブルート フォース試行の詳細を確認するには、インスタンスのログを表示し、各ログのテキストで An anomaly was found を探します。
ログベースのアラート ポリシーを設定する
Cloud SQL インスタンスでブルート フォース アクセス試行が検出された場合や、スロットリングされた場合に通知を受け取るように、ログベースのアラート ポリシーを設定できます。このアラートの設定方法について詳しくは、ログ エクスプローラを使用してログベースのアラート ポリシーを構成するをご覧ください。
たとえば、アラート ポリシーで次のクエリを使用して、ブルート フォース アクセス試行の成功ログを特定できます。
resource.type="cloudsql_database"
textPayload =~ "An anomaly was found, successful login into the account"
インスタンスを保護する
Cloud SQL では、ブルート フォース アクセス試行が検出された場合は、インスタンスを保護することをおすすめします。ブルート フォース アクセス試行の可能性を表示するには、ブルート フォース アクセス試行のログを表示するをご覧ください。
Cloud SQL がインスタンスへのブルート フォース アクセス試行を検出した場合は、次の操作を行います。
- Cloud SQL がブルート フォース アクセス試行を検出し、ログインが失敗した場合は、特定された IP アドレスを承認済みネットワークから削除して、これらの IP からの今後のログイン試行を阻止します。これを行うには、インスタンスの承認済みネットワークで縮小した IP 範囲を使用するか、承認済みネットワーク リストから IP アドレスを削除します。
- Cloud SQL がブルート フォース アクセス試行を検出し、特定された IP アドレスとユーザー名によるログインが成功した場合は、ユーザー アカウントのパスワードを変更し、承認済みネットワークのリストから IP を削除してください。
また、承認済みネットワークの代わりに Auth Proxy または Cloud SQL 言語コネクタを使用してインスタンスに接続することもできます。Auth Proxy と Cloud SQL 言語コネクタは、Identity and Access Management 認証を使用してインスタンスへの接続を管理します。これにより、より安全な接続が実現し、特定の IP アドレスをインスタンスの承認済みネットワーク リストに追加する必要がなくなります。
Cloud SQL インスタンスをさらに保護するには、パブリック IP ではなくプライベート IP を使用し、ユーザー名とパスワード ベースの認証の代わりに IAM ベースのデータベース認証を使用します。
ブルート フォース アクセス試行をモニタリングする
ブルート フォース アクセス試行をモニタリングするために、Cloud SQL は /database/network/connection_attempt_count 指標を使用して、インスタンスへの各タイプの接続イベントの発生回数をカウントします。この指標は、次のフィールドを使用して、接続がブルート フォース アクセス試行であるかどうかを判断します。
login_status: 接続が正常なログインにつながったかどうかを追跡します。anomaly_detected: 接続が Cloud SQL で設定されたログイン試行回数の上限を超えたかどうかに基づいて、接続がブルート フォース アクセス試行であるかどうかを追跡します。anomalous_connection_throttled: ブルート フォース アクセス試行に関連する接続がスロットリングされているかどうかを追跡します。
この指標をモニタリングすると、各タイプの接続イベントの数を特定できます。次の表に、指標でトラッキングされる接続イベントと、対応するフィールド値を示します。
| イベント | 説明 |
|---|---|
| ログイン成功 | ブルート フォース アクセス試行が検出されずにインスタンスへのログインが成功しました。追跡対象のフィールド値: login_status: succeeded
anomaly_detected: none
anomalous_connection_throttled: false
|
| ログイン失敗 | ブルート フォース アクセス試行が検出されなかったインスタンスへのログイン失敗。追跡対象のフィールド値: login_status: failed
anomaly_detected: none
anomalous_connection_throttled: false
|
| ブルート フォース ログイン試行が検出されました(スロットリングされていません) | Cloud SQL で設定されたログイン試行に関するしきい値を超えたことによる、ブルートフォース アクセス試行として識別されたログイン試行の失敗。接続はスロットリングされませんでした。追跡対象のフィールド値: login_status: failed
anomaly_detected: brute-force login
anomalous_connection_throttled: false
|
| ブルート フォース ログイン試行が検出され、スロットリングされました | Cloud SQL で設定されたログイン試行のしきい値を超え、ログインを阻止するためにスロットリングされたため、ブルート フォース アクセス試行として識別されたログイン試行の失敗。追跡対象のフィールド値: login_status: failed
anomaly_detected: brute-force login
anomalous_connection_throttled: true
|
| ブルート フォース アクセス試行が検出された後のログイン成功(スロットリングされていない) | 接続がブルート フォース アクセス試行として識別された後に、インスタンスへのログインが成功しました。接続はスロットリングされませんでした。追跡対象のフィールド値: login_status: succeeded
anomaly_detected: brute-force login
anomalous_connection_throttled: false
|
| ブルート フォース アクセス試行が検出され、スロットリングされた後のログイン成功 | 接続がブルート フォース アクセス試行として識別され、スロットリングされた後に、インスタンスに正常にログインしました。追跡対象のフィールド値: login_status: succeeded
anomaly_detected: brute-force login
anomalous_connection_throttled: true
|
制限事項
- ブルート フォース保護には、
MYSQL_$version.R20250531.01_23以上のメンテナンス バージョンが必要です。詳細については、セルフサービス メンテナンスを実施するをご覧ください。 - ブルート フォース保護は、MySQL バージョン 5.7 以降でのみ使用できます。