始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Identify employee machines
/ 1
Retrieve machine allocation data
/ 1
Retrieve login attempt data
/ 1
Identify employee machines
/ 1
Retrieve machine allocation data
/ 1
Retrieve login attempt data
/ 1
セキュリティ アナリストとして、複数のテーブルのデータが必要になることはよくあります。
前回は、リレーショナル データベースが、互いに関連するテーブルを含む構造化データベースであることを学びました。
SQL の結合により、共通の列を含む複数のテーブルを 1 つにすることができます。これは、異なるテーブルに存在する情報をつなぐ必要がある場合に便利です。
このラボのアクティビティでは、SQL の結合を使用して別々のテーブルをつなぎ、必要な情報を取得します。
学んだことを応用してデータを結合してみましょう。
このシナリオでは、複数のマシンが不正使用された最近のセキュリティ インシデントを調査します。
調査のためにデータベースから必要な情報を取得する役割を担います。
方法は次のとおりです。まず、内部結合を使用して、どの従業員がどのマシンを使用しているのかを特定します。次に、左結合と右結合を使用して、特定のユーザーに属していないマシンと、特定のマシンが割り当てられていないユーザーを探します。最後に、内部結合を使用して、全従業員によるすべてのログイン試行を一覧にします。
それでは、SQL でテーブルを結合してみましょう。
このラボは、MariaDB シェルで組織のデータベースがすでに開かれている状態で始まります。つまり、[ラボを開始] ボタンをクリックするとすぐにタスクから始めることができます。
MariaDB シェルで誤って組織のデータベースを閉じた場合は、sudo mysql organization コマンドを実行すると再接続できます。
資料にアクセスするには、まずラボを開始する必要があります。ラボを開始するには、画面上部にある緑色の [ラボを開始] ボタンをクリックします。
[ラボを開始] ボタンをクリックするとシェルが表示され、以降の手順はここで進めます。次のようなシェルが表示されます。
タスクをすべて終えたら、ラボの終了に関するセクションを参照し、ラボの終了手順をご確認ください。
まず、どの従業員がどのマシンを使用しているのかを特定します。データは machines テーブルと employees テーブルに格納されています。
SQL の内部結合を使用して、つながる列に基づいて必要なレコードを返す必要があります。このシナリオでは、どちらのテーブルにも device_id 列があり、これを使用して結合を行います。
machines テーブルからすべてのレコードを取得します。結合を行って必要な情報を取得するには、このクエリでは不十分であることがわかります。
device_id 列で machines テーブルと employees テーブルの内部結合を行うためのクエリを完成します。X と Y はこの列の名前に置き換えてください。employees テーブルを INNER JOIN の後に配置すると、右のテーブルになります。結合を完成するには、結合するテーブルを共通の列で結び付ける必要があります。employees テーブルと machines テーブルは、device_id 列が共通しています。
このステップに必要な正しいクエリは次のとおりです。
解答: 内部結合クエリによって 185 件の行が返されました。
[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。
今度は、すべてのマシンと、マシンを持っている従業員についての情報を返します。次に、その逆を行い、すべての従業員と、従業員に割り当てられているマシンについての情報を取得します。
そのために、employees テーブルと machines テーブルに対し、左結合と右結合を行います。結果には、どちらか一方のテーブルのすべてのレコードが含まれます。共通の device_id 列を使用して両方のテーブルをリンクする必要があります。
machines テーブルと employees テーブルをつなぎます。クエリ内のキーワード X は適宜置き換えてください。このステップに必要な正しいクエリは次のとおりです。
FROM の後および LEFT JOIN の前に参照されたテーブルのすべてのレコードが結果に含まれます。この場合、従業員に割り当てられているかどうかに関係なく、machines テーブルのすべてのレコードが含まれます。解答: 最後に返されたユーザー名は NULL です。
machines テーブルと employees テーブルをつなぎます。クエリ内のキーワード X は、解答を導き出すことができるよう、適宜置き換えてください。RIGHT JOIN の後で参照されたテーブルのすべてのレコードが結果に含まれます。この場合、従業員がマシンを持っているかどうかに関係なく、employees テーブルのすべてのレコードが含まれます。このステップに必要な正しいクエリは次のとおりです。
解答: 最後に返されたレコードの username 列の値は areyes です。
[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。
セキュリティ インシデントの調査を続けるには、ログインを試したすべての従業員の情報を取得します。そのために、employees テーブルと log_in_attempts テーブルの内部結合を行い、共通の username 列でリンクします。
employees テーブルと log_in_attempts テーブルの内部結合を行います。X は右のテーブルの名前に置き換えます。Y と Z は、2 つのテーブルをつなぐ列の名前に置き換えます。このステップに必要な正しいクエリは次のとおりです。
解答: 内部結合によって 200 件のレコードが返されました。
[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。
おつかれさまでした。
今回のアクティビティを終えたことで、結合を使用してデータベースの複数のテーブルからデータを組み合わせられるようになりました。
これで、以下の結合を使用する実践的な経験を積むことができました。
INNER JOINLEFT JOINRIGHT JOINSQL の結合を使用して、必要なデータを正確に取得できるようになりました。
すべてのタスクが問題なく完了したことを確認してから、以下の手順に沿ってラボを終了してください。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください
ラボを開始するには、この簡単な手順を完了してください。