資格道場
記事法人
Google CloudLevel 4

難易度は Level 1(やさしめ)〜Level 5(難関) の5段階です。

GCP PDEのサンプル問題(本番形式・解説付き)

GCP PDE(Google Cloud・Professional Data Engineer(PDE))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(50問)の冒頭から抜粋したオリジナル問題です。当サイトは全550問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。

設問1

製造業のデータ基盤チームが、複数の project にまたがる BigQuery の権限を管理している。過去に担当者が社外の Google アカウントへ誤って role を付与した事故があり、同じ事故を組織全体で構造的に起こせなくしたい。取るべき対応はどれか。

  • 各 project の IAM allow policy を定期的に点検し、社外の principal を見つけたら手作業で削除する
  • VPC Service Controls の境界を作り、社外の principal に閲覧用の role を与えたうえで持ち出しを遮断する
  • 分析用 dataset に authorized view を作り、社外の担当者にはそのビューだけを読み取らせる
  • 組織に `constraints/iam.allowedPolicyMemberDomains` を設定し、自社ドメイン以外への付与を禁止する(正解)

解説

「そもそもこの設定を許すか」を扱うのは Organization Policy Service の制約で、domain restricted sharing の `constraints/iam.allowedPolicyMemberDomains` は自社ドメイン以外への付与そのものを禁じます。定期点検して手作業で削除する案は、付与が起きたあとの事後対応にすぎず、構造的に起こせなくする要件を満たしません。VPC Service Controls は境界を作りデータの持ち出しを止めるだけで権限は一切与えず、誤った付与そのものを防ぎません。authorized view は提供する形を固定する手段で、社外アカウントへの role 付与を禁じる働きはありません。

設問2

人事部門の BigQuery テーブルには給与列とメールアドレス列が含まれ、同じテーブルを人事・経理・分析の複数の役割が日常的に参照している。テーブルは1つのまま保ち、給与列だけを限られた principal に読ませたい。取るべき対応はどれか。

  • 給与列を除いた authorized view を役割ごとに作成し、閲覧者には元テーブルの権限を与えないままビューだけを読み取らせる
  • `CREATE ROW ACCESS POLICY` で述語を定義し、給与を含む行だけを対象の principal に限定して見せる
  • taxonomy に policy tag を作って給与列に付け、`roles/datacatalog.categoryFineGrainedReader` を持つ principal だけに読ませる(正解)
  • テーブル全体を Cloud KMS の CMEK で暗号化し、鍵の使用権限を持つ principal だけにクエリさせる

解説

column-level security は taxonomy の中に policy tag を作り、その policy tag をテーブルの列に付け、`roles/datacatalog.categoryFineGrainedReader` を持つ principal だけがその列を読める仕組みで、同じテーブルを多数の役割が使う場面に向きます。authorized view は提供する形を固定したいときの手段で、ビューの数だけ管理対象が増え、テーブルを1つのまま保つ要件と噛み合いません。row-level security は行に述語で権限をかける仕組みで、列を隠す用途には使いません。CMEK は鍵を誰が管理するかの話で、列単位の可視範囲を分ける働きはありません。

設問3

小売企業のデータエンジニアが、オンプレミスで動く ETL サーバから BigQuery へ書き込む構成を設計している。資格情報の実体をサーバ上に置かない形にしたい。取るべき対応はどれか。

  • サービスアカウントの JSON キーを作成して ETL サーバの構成ファイルに配布し、期限が来たら手作業で置き換える
  • Workload Identity Federation を構成し、オンプレミスの外部 ID を短命の Google 資格情報に交換する(正解)
  • ETL を運用する担当者個人に `roles/bigquery.dataEditor` を付与し、その担当者の資格情報でジョブを実行する
  • Cloud VPN を敷設したうえで基本ロールの Editor をサービスアカウントに付与し、鍵なしで接続する

解説

他クラウド・オンプレミスのワークロードは Workload Identity Federation で外部 ID を短命の Google 資格情報に交換するのが正解の形で、鍵の実体をサーバに置かずに済みます。サービスアカウントキー(JSON キー)をダウンロードして配布するのは試験では基本的に誤答で、資格情報の実体を置かないという要件にも反します。個人にロールを直接付ける案は監査性と運用負荷の両面で不適で、パイプラインは人ではなくサービスアカウントで動かすのが原則です。Cloud VPN は経路の保護であって資格情報の受け渡し方の話ではなく、基本ロールの Editor も答えになりません。

設問4

金融系の分析基盤で、監査部門から「誰がこの BigQuery テーブルを読んだかを追跡できるようにしてほしい」と求められた。読み取り操作の証跡を残したい。取るべき対応はどれか。

  • Cloud Audit Logs の Data Access ログを対象プロジェクトで明示的に有効化し、読み取りを記録する(正解)
  • 監査担当者に基本ロールの Owner を付与し、コンソールから各テーブルの利用状況をその都度確認させる
  • 既定で有効な Admin Activity ログを log sink で BigQuery に書き出し、テーブルごとの読み取りの履歴を集計する
  • Policy Denied ログの保持期間を延長し、拒否されたアクセスの記録から利用者を割り出す

解説

Data Access ログは既定で無効で、「誰がこのテーブルを読んだかを追跡したい」なら明示的に有効化するのが正解の形です。監査ログを見るために Owner を付けるのはよく出る誤りで、正しくは `roles/logging.viewer` と `roles/logging.privateLogViewer` です。Admin Activity は既定で有効かつ無効化不可のログですが記録するのは管理操作で、読み取りの証跡にはなりません。Policy Denied は拒否された記録であって、実際に読めた操作を追跡できません。

設問5

規制対応のため BigQuery のデータセットを CMEK に切り替えたところ、テーブル作成のジョブが Permission denied で失敗するようになった。鍵は保護対象と同じロケーションの Cloud KMS に作成済みである。取るべき対応はどれか。

  • dataset のロケーションを鍵とは別のマルチリージョンへ移したうえで、ジョブの実行ロケーションもそちらに合わせる
  • Cloud KMS の自動ローテーション期間を短くして新しい鍵バージョンを作り、既存データを再暗号化する
  • ジョブを実行する分析者に基本ロールの Editor を付与し、鍵とテーブルへのアクセスをまとめて許可する
  • BigQuery の service agent に `roles/cloudkms.cryptoKeyEncrypterDecrypter` を付与し、鍵を使えるようにする(正解)

解説

各サービスの service agent(BigQuery なら `bq-<project-number>@bigquery-encryption.iam.gserviceaccount.com`)に `roles/cloudkms.cryptoKeyEncrypterDecrypter` を付与しないとテーブル作成やジョブが失敗し、CMEK にしたら Permission denied で落ちる原因はほぼこれです。dataset のロケーションは作成後に変更できず、鍵は保護対象リソースと同じロケーションに置く必要があるため、別ロケーションへ移す案は要件と逆行します。ローテーションしても既存データが再暗号化されるわけではなく、権限不足も解消しません。基本ロールの Editor は答えにならず、service agent の不足も埋まりません。

続きは、会員登録なしでそのまま50問解けます。採点と解説つきで、上と同じ本物の問題です。

登録なしで50問解く