模範解答: SQL でさらにフィルタを適用する

ラボ 1時間 universal_currency_alt 無料 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

アクティビティの概要

セキュリティ アナリストは、しばしば数値と日時をクエリする必要があります。

たとえば、パッチの日付をフィルタして、更新が必要なマシンを探すことがあります。または、特定の期間内に行われたログイン試行をフィルタして、セキュリティ インシデントを調査することもあります。

数値や日付、時刻のデータを処理する一般的な演算子を使うことで、データを正確にフィルタできます。たとえば、次のような演算子を使用します。

  • =(等しい)
  • >(より大きい)
  • <(より小さい)
  • <>(等しくない)
  • >=(次の値以上)
  • <=(次の値以下)

このラボのアクティビティでは、これらの演算子を適用して、特定の数値や日付でフィルタリングを正確に行います。

注: このラボのアクティビティでは、レコードという用語は同じ意味で使用しています。

シナリオ

このシナリオでは、最近のセキュリティ インシデントを調査します。

特定の期間や時間帯に行われたログイン試行に関する情報を収集します。これは、セキュリティ インシデントの解決に役立ちます。

方法は次のとおりです。まず、特定の日付より後に行われたログイン イベントのデータを取得します。次に、検索の対象を絞り込み、ログインを期間でフィルタします。さらに、特定の時間帯に行われたログインを調査します。最後に、ログイン試行をイベント ID でフィルタします。

それでは、演算子を使用してテーブル内のデータをフィルタしてみましょう。

注: このラボでは、組織のデータベースとそこにあるテーブルを操作します。

このラボは、MariaDB シェルで組織のデータベースがすでに開かれている状態で始まります。つまり、[ラボを開始] ボタンをクリックするとすぐにタスクから始めることができます。

MariaDB シェルで誤って組織のデータベースを閉じた場合は、sudo mysql organization コマンドを実行すると再接続できます。

免責条項: パフォーマンスと互換性を確保するため、ラボにアクセスする際は Google Chrome または Mozilla Firefox ブラウザを使用することをおすすめします。

ラボを開始する

資料にアクセスするには、まずラボを開始する必要があります。ラボを開始するには、画面上部にある緑色の [ラボを開始] ボタンをクリックします。

画面に表示されている [ラボを開始] ボタン。

[ラボを開始] ボタンをクリックするとシェルが表示され、以降の手順はここで進めます。次のようなシェルが表示されます。

画面に表示されている MariaDB ターミナル。

タスクをすべて終えたら、ラボの終了に関するセクションを参照し、ラボの終了手順をご確認ください。

タスク 1. 特定の日付より後のログイン試行を取得する

このタスクでは、最近のセキュリティ インシデントを調査します。そこで、特定の日付より後に行われたログイン試行に関する情報を収集します。

  1. '2022-05-09' より後に行われたログイン試行のデータを取得する SQL クエリを作成します。X を適切な演算子に置き換えてください。
SELECT * FROM log_in_attempts WHERE login_date X '2022-05-09';

このステップに必要な正しいクエリは次のとおりです。

SELECT * FROM log_in_attempts WHERE login_date > '2022-05-09';

解答: 2022-05-09 より後に行われたログイン試行は 125 回です。

ここで、最初のクエリの検索期間に 2022-05-09 を含める必要があることに気づきました。

  1. そこで、'2022-05-09' 以降に行われたログイン試行のデータを取得する SQL クエリを作成します。X を適切な演算子に置き換えてください。
SELECT * FROM log_in_attempts WHERE login_date X '2022-05-09';

このステップに必要な正しいクエリは次のとおりです。

SELECT * FROM log_in_attempts WHERE login_date >= '2022-05-09';

解答: 2022-05-09 以降に行われたログイン試行は 165 回です。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

特定の日付より後のログイン試行を取得する

タスク 2. 期間中に行われたログインのデータを取得する

このタスクでは、検索の対象を絞り込みます。そこで、2022-05-11 より後に行われたログイン試行を除外することにします。BETWEEN 演算子と AND 演算子を使用して、'2022-05-09' から '2022-05-11' までの結果を返します。

  • 必要なレコードを取得するクエリを実行します。XY に必要な日付を挿入してください。
SELECT * FROM log_in_attempts WHERE login_date BETWEEN 'X' AND 'Y';

このステップに必要な正しいクエリは次のとおりです。

SELECT * FROM log_in_attempts WHERE login_date BETWEEN '2022-05-09' AND '2022-05-11';

解答: 2022-05-09 から 2022-05-11 までに行われたログイン試行は 123 回でした。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

期間中に行われたログインのデータを取得する

タスク 3. 特定の時間帯に行われたログインについて調査する

このタスクでは、特定の時間帯に行われたログインについて調査します。そこで log_in_attempts テーブル内のデータをログイン時刻(login_time)でフィルタします。

前提として、業務時間は通常 07:00:00 に始まるものとします。07:00:00 より前に行われたログイン試行のデータをすべて取得し、通常の業務時間外にログインを行っているユーザーについて調べます。

  1. '07:00:00' より前に行われたログイン試行のデータを取得する SQL クエリを作成します。
注: 時刻データは一重引用符(' ')で囲みます。

このステップに必要な正しいクエリは次のとおりです。

SELECT * FROM log_in_attempts WHERE login_time < '07:00:00';

解答: このクエリによって、5 番目のレコードのユーザー名が eraab であることがわかります。

前のステップのクエリでは、必要以上に多い結果が返されました。

  1. クエリを修正して、'06:00:00' から '07:00:00' までのログインを返すようにします。

このステップに必要な正しいクエリは次のとおりです。

SELECT * FROM log_in_attempts WHERE login_time BETWEEN '06:00:00' AND '07:00:00';

解答: 最も早いログイン試行の時刻は 06:01:31 でした。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

特定の時間帯のログインを調査する

タスク 4. イベント ID でログインを調査する

このタスクでは、イベント ID 番号でログイン試行を調査します。このクエリでは、log_in_attempts テーブル内の event_idusername、および login_date フィールドのみを返すようにします。

注: event_id 列には数値データが含まれます。数値データは引用符で囲まないでください。
  1. event_id100 以上のログイン試行を返すクエリを作成します。

このステップに必要な正しいクエリは次のとおりです。

SELECT event_id, username, login_date FROM log_in_attempts WHERE event_id >= 100;

解答: このクエリによって、3 番目の結果のログイン日付が 2022-05-09 であることがわかります。

前のステップのクエリでは、必要以上に多いデータが返されました。

  1. クエリを修正して、event_id100 から 150 までのログイン試行のみを返すようにします。

このステップに必要な正しいクエリは次のとおりです。

SELECT event_id, username, login_date FROM log_in_attempts WHERE event_id BETWEEN 100 AND 150;

解答: このクエリによって、7 番目の結果のユーザー名が tmitchel であることがわかります。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

イベント ID でログインを調査する

まとめ

おつかれさまでした。

アクティビティはこれで完了です。

  • WHERE キーワード
  • BETWEEN 演算子と AND 演算子
  • 数値や日付、時刻のデータを処理する演算子(=>>= など)

これらをクエリに適用して、テーブルのデータをフィルタする方法を学びました。

これで、数値や日付でフィルタして、あらゆる有益なデータを引き出せるようになりました。

ラボを終了する

すべてのタスクが問題なく完了したことを確認してから、以下の手順に沿ってラボを終了してください。

  1. [ラボを終了] をクリックし、[送信] をクリックします。ラボを終了すると、Bash シェルへのアクセス権が削除され、完了した作業にもう一度アクセスすることはできなくなります。
  2. ラボを終了するとアンケート ダイアログが表示され、適宜、ラボを評価したり、フィードバック コメントを記入したりできます。
  3. ラボのブラウザタブを閉じてコースに戻ります。
  4. 完了してからコースのブラウザタブを更新すると、この項目が完了としてマークされます。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。