読み込んでいます...
一致する結果は見つかりませんでした。

Google Cloud コンソールでスキルを試す

11

Security Best Practices in Google Cloud - 日本語版

700 以上のラボとコースにアクセス

BigQuery の承認済みビューを作成する

ラボ 1時間 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

概要

BigQuery を使用すると、データセット レベルで権限を構成できます。データ エンジニアリング チームは元データの大規模なテーブルを数多く含むデータセットを保持していますが、それらのテーブルのサブセットを特定のアナリストと共有したいことがよくあります。

たとえば、ユーザー固有の情報を含む列を除外したバージョンのテーブルにアナリストがアクセスできるようにしたり、指定された BigQuery テーブルまたはビューの限られた行のみを特定のユーザーが表示できるようにしたりといったケースです。

このラボでは、BigQuery で承認済みビューを作成して使用する方法について学びます。また、ログイン ユーザーに関する情報を使用して行単位でフィルタ処理する方法についても学びます。

ラボでは 2 人の Google Cloud ユーザーを使用して別のユーザーとしてログインし、BigQuery の承認済みビューの権限を確認します。

目標

このラボでは、次のタスクの実行方法について学びます。

  • BigQuery データセットに対する権限を設定する
  • 承認済みビューを使用して、テーブルのサブセットに対する読み取り専用権限を対象ユーザーに付与する
  • SESSION_USER() 関数を使用して、テーブルまたはビュー内の特定の行にアクセスを制限する

設定と要件

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. Qwiklabs にシークレット ウィンドウでログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

タスク 1. ソース データセットを作成する

このタスクでは、このラボで使用するソース データセットを BigQuery に作成します。

新しい BigQuery データセットを作成する

  1. Google Cloud コンソールのナビゲーション メニュー)で、[BigQuery] をクリックし、[完了] をクリックします。
  2. [エクスプローラ] で、プロジェクト ID の横にあるその他アイコン(3 つの点)、[データセットを作成] の順にクリックし、プロジェクト内に新しいデータセットを作成します。
  3. [データセット ID] に「source_data」と入力し、[データセットを作成] をクリックします(その他のデフォルト値はそのまま使用します)。

ソースデータを使用して新しい BigQuery テーブルを作成する

  1. [Cloud Shell をアクティブにする] をクリックし、Cloud Shell を開きます。プロンプトが表示されたら、[続行]、[承認] の順にクリックします。

  2. Cloud Shell に次のコードを入力して、ソースデータを BigQuery の新しいテーブルに読み込みます。

bq load --autodetect $DEVSHELL_PROJ:source_data.events gs://cloud-training/gcpsec/labs/bq-authviews-source.csv
  1. BigQuery コンソールで、[エクスプローラ] の .source_data.events までドリルダウンし、[プレビュー] をクリックして、読み込まれたデータを確認します。
注: events テーブルが表示されない場合は、ブラウザを更新してください。 注: このテーブルには、ビデオ会議アプリケーションのユーザーによって生成されたイベントに関するシミュレーション データが含まれています。各行には、イベントを生成したユーザーに関する情報が含まれています。
  1. 以降のステップが意図したとおりに機能するよう、BigQuery の [エディタ] に次のクエリを入力します。
update source_data.events set email= '{{{ user_1.username | "USERNAME2" }}}' where email='rhonda.burns@example-dev.com'
  1. [実行] をクリックして、68 行が新しいメールアドレスで更新されるまで待機します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ソース データセットを作成する

タスク 2. アナリスト データセットを作成する

このタスクでは、アナリスト データセット、アナリスト用に編集されたビュー、ログイン ユーザー用の 2 つ目のビューを作成します。

データセットを作成する

  1. [エクスプローラ] で、プロジェクト ID の横にあるその他アイコン(3 つの点)、[データセットを作成] の順にクリックし、プロジェクト内に新しいデータセットを作成します。
  2. [データセット ID] に「analyst_views」と入力し、[データセットを作成] をクリックします(その他のデフォルト値はそのまま使用します)。

アナリスト用に編集されたビューを作成する

  1. BigQuery の [エディタ] に次の SQL を入力して、ユーザー固有の情報を除くイベントデータを取得します。
SELECT date, type, company, call_duration, call_type, call_num_users, call_os, rating, comment, session_id, dialin_duration, ticket_number, ticket_driver FROM `{{{ project_0.project_id | "PROJECT_ID" }}}.source_data.events`
  1. [実行] をクリックしてクエリを実行し、結果を確認します。ユーザー情報が含まれていないことに注意してください。
  2. [保存] > [ビューを保存] をクリックして、このクエリをビューとして保存します。
  3. プロジェクトと analyst_views データセットを選択します。
  4. 宛先テーブルの名前に「no_user_info」と入力し、[保存] をクリックします。UI には宛先テーブルと表示されていますが、作成されるのはテーブルではなくビューのみです。
  5. [エクスプローラ] で .analyst_views.no_user_info に移動し、ビューが機能することを確認します。ユーザー情報の列が除外された、ビューのスキーマ情報が表示されます。
  6. no_user_info ビューをクリックします。[クエリ] > [新しいタブ] をクリックし、SELECT ステートメントに * を入力して次のような SQL クエリにします。
SELECT * FROM `{{{ project_0.project_id | "PROJECT_ID" }}}.analyst_views.no_user_info` LIMIT 1000
  1. [実行] をクリックします。クエリを実行すると、上のステップと同じような結果が表示されますが、ユーザーデータは含まれていません。

ログイン ユーザーの行のみを表示する 2 つ目のビューを作成する

続いて、次の情報を使用して 2 つ目のビューを作成します。

  1. BigQuery の [エディタ] に次のクエリを入力します。
SELECT * FROM `{{{ project_0.project_id | "PROJECT_ID" }}}.source_data.events` WHERE email = SESSION_USER()
  1. [実行] をクリックします。

  2. [保存] > [ビューを保存] をクリックして、このクエリをビューとして保存します。

  3. プロジェクトと analyst_views データセットを選択します。

  4. 宛先テーブルの名前に「row_filter_session_user」と入力し、[保存] をクリックします。

注: この 2 つ目のビューでは、ユーザーは自分のイベントを表示できますが、他のユーザーのイベントは表示できません。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 アナリスト データセットを作成する

タスク 3. アナリスト データセットを保護する

このタスクでは、アナリスト データセットを Username 2 と共有し、Username 2 に閲覧者ロールを割り当ててデータセットを保護します。

データセットを共有する

  1. 画面の左側にあるデータセットのリストで、[analyst_views] データセットをクリックします。

  2. 次に、右側のペインで [共有] を選択し、[権限] をクリックします。

  3. [プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、2 番目のラボアカウントのメールアドレス()を入力します。

  4. ロールに [BigQuery データ閲覧者] を選択し、[保存] をクリックします。

  5. [閉じる] をクリックします。

タスク 4. ソース データセットを保護する

このタスクでは、ソース データセットを保護します。ソース データセットで利用可能な元データにデータ エンジニアリング チーム以外のアナリストやその他のユーザーがアクセスできないようにするために、アクセスを制限します。

ただし、作成したビューを使用するユーザーは、ビューで生成されるデータを表示できるようにします。これには、ユーザーではなくビューを承認する必要があります。

データセットを共有する

  1. 画面の左側にあるデータセットのリストで、source_data データセットをクリックします。

  2. 次に、右側のペインで [共有] を選択し、[権限] をクリックします。

  3. 権限リストで [BigQuery データ閲覧者] プリンシパルを開き、その横にあるごみ箱アイコンをクリックし、[削除] をクリックして確定します。[閉じる] をクリックします。

  4. [共有] で、[ビューを承認] をクリックします。

  5. [承認済みビュー] で次の設定を選択します。

承認済みビュー

no_user_info

  1. [承認を追加] をクリックします。

  2. 次の設定を使用して別のビューを追加し、既存のビューを置き換えます。

承認済みビュー

row_filter_session_user

  1. [承認を追加] をクリックします。

  2. [閉じる] をクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 データセットを保護する

タスク 5. セキュリティ設定をテストする

このタスクでは、これまでのタスクで適用したセキュリティ設定をテストします。

2 人目のユーザーとして Cloud コンソールにログインする

  1. シークレット ウィンドウで別のタブを開きます。
  2. Cloud コンソールに移動します。
  3. 画面右上にあるユーザー アイコンをクリックし、[アカウントを追加] をクリックします。
  4. Qwiklabs で提供されている Username 2 を使用して、Cloud コンソールにログインします。

アナリスト ビューへのアクセスを確認する

  1. Google Cloud コンソールのナビゲーション メニュー)で、[BigQuery] をクリックし、[完了] をクリックします。
  2. 次のクエリを実行して、no_user_info ビューに対してクエリを実行できることを確認します。
SELECT * FROM `analyst_views.no_user_info` WHERE type='register'

テーブル内のすべてのユーザー登録イベントを含む結果セットが表示されます。

  1. 次のクエリを実行して、row_filter_session_user ビューに対してアカウントに関連付けられている行のみを表示するクエリを実行できることを確認します。
SELECT * FROM `analyst_views.row_filter_session_user`

2 番目の Qwiklabs ユーザーに関する 68 行の結果セットが表示されます。

ソース データセットへのアクセスを確認する

  1. 次のクエリを使用して、events テーブルの元データへの直接アクセスを試行します。
SELECT * FROM `source_data.events`

権限がないことを示す [アクセスが拒否されました] エラー メッセージが表示されます。

  1. UI の [エクスプローラ] データセットへの移動を試行します。この操作も許可されていない必要があります。
注: 2 番目の Qwiklabs ユーザーには、analyst_views データセットのテーブルとビューを表示する権限はありますが、source_data データセットの内容を表示する権限はありません。

ユーザーがビューのクエリを実行すると、ビュー自体に source_data データセット内のテーブルを操作するために必要な権限があるため、そのデータがユーザーに返されます。

行をフィルタ処理するビューでは、ユーザーのメールアドレスが取得されて、それを使用して表示する行がフィルタ処理されます。このビューのクエリを実行すると、メールの列に自分のメールアドレスを含む行に限定された、ユーザーごとに異なる結果が得られます。

お疲れさまでした

このラボでは、以下の操作について学習しました。

  • BigQuery データセットに対する権限を設定する
  • ビューを承認し、テーブルのサブセットに対する読み取り専用権限を対象ユーザーに付与する
  • SESSION_USER() 関数を使用して、テーブルまたはビュー内の特定の行にアクセスを制限する

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。

前へ 次へ

Sorry, access denied to this resource.

close

始める前に

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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