GCP認定資格Professional Cloud Security Engineer受験対策

# はじめに
これからGoogle Cloud認定資格Professional Cloud Security Engineerの受験を考えている方向けに、試験合格のための要点を整理しました。
ただし、本記事を読んだだけで合格できる、ということを保証するものではありませんので、ご了承ください。

# もくじ
- Professional Cloud Security Engineerについて
- 要点
- 勉強法
- まとめ

# Professional Cloud Security Engineerについて
本資格では組織がGoogle Cloudを安全に利用するためにネットワークセキュリティやWebアプリケーションセキュリティに関する知識が問われます。問題は50～60問の選択式であり、試験時間は2時間、受験費用は$200 (税別) です。  
[試験ページ](https://cloud.google.com/learn/certification/cloud-security-engineer?hl=ja)では、以下のことが評価されるとあります。

- クラウド ソリューション環境内のアクセスの構成
- クラウド ソリューション環境内のオペレーションの管理
- ネットワーク セキュリティの構成
- コンプライアンスの確保
- データ保護の確保

Professional Cloud Security Engineerの[試験ガイド](https://cloud.google.com/learn/certification/guides/cloud-security-engineer?hl=ja)には試験に出題される可能性があるトピックについて記載があります。全て知りたい方は試験ガイドのリンクに飛んでいただきたいですが、ここでは主に重要だと思われるトピックについてピックアップしました。

## 重要トピック
- 責任共有モデル
- Cloud Identityの管理
- Google Cloud Direcrtory Sync (GCDS)
- Workload Identity
- 認証
- Access Context Manager
- リソース階層
- ネットワークの境界制御
- ファイアウォール
- Identity Aware Proxy (IAP)
- ロードバランサー
- アプリケーションファイアウォール
- Google Cloud Armor
- Cloud DNS
- VPC
- VPC Service Controls
- 限定公開のGoogleアクセス
- Private Service Connect
- Secet Manager
- Cloud KMS
- ネットワークログ分析
- Security Command Center  

これらトピックを見ると分かりますが、かなり広い分野に関するセキュリティについて問われています。


# 要点
ここでは、Professional Cloud Security Engineerで良く出題される内容について以下カテゴリーごとにキーワードを挙げています。

- 責任共有モデル
- 権限や認証
- ネットワークセキュリティ
- アプリケーションセキュリティ
- オペレーションまわり

## 責任共有モデル
クラウドサービスを使うと必ずと言っていい程直面するのが、「どこまでがGoogle Cloudの責任なのか」「どこからがユーザー側の責任なのか」と言うことです。ユーザーが使用するクラウドサービスがIaaSかPaaSかなどでも変化します。以下Google Cloudの記事で有用なものをピックアップしていますので、内容を読んで理解しましょう。

https://cloud.google.com/architecture/framework/security/shared-responsibility-shared-fate?hl=ja

https://cloud.google.com/blog/ja/topics/developers-practitioners/google-cloud-security-overview

## 権限や認証
- [**Cloud Identity**](https://cloud.google.com/identity?hl=ja)  
ユーザーとグループを一元管理するサービスです。Cloud Identityを使用すると、Acrtive DirectoryやAzure Active Directoryなどの他のIDプロバイダの間でIDを連携させることができます。外部のIDプロバイダとどう連携するかについては以下記事がとても参考になるので、この記事を見つつ理解しましょう。ID連携に利用するGoogle Cloud Directory Sync (GCDS) というサービスについてもどういうサービスなのか押さえた方が良いです。

https://cloud.google.com/architecture/identity/best-practices-for-federating?hl=ja

https://cloud.google.com/architecture/identity/federating-gcp-with-active-directory-synchronizing-user-accounts?hl=ja

- [**Access Context Manager**](https://cloud.google.com/access-context-manager/docs/overview?hl=ja)  
Google Cloudのプロジェクトとリソースに対する細かい属性ベースのアクセス制御を定義できるサービスです。私が受験した際はあまり出題されなかったと記憶していますが、どういうサービスなのか概要は知っておいた方が良いです。

- [**Workload Identity**](https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity?hl=ja)  
Google Kubernetes Engine (GKE) で実行されているワークロードがGoogle Cloudサービスにアクセスする際、IAMのサービスアカウントに代わってアクセスできるようにするサービスです。

[**Identiry and Access Management (IAM)**](https://cloud.google.com/iam/docs/overview?hl=ja)
Google Cloudにおけるアクセスを管理できるサービスです。クラウドでは「最小権限の原則」に従うことが推奨されており、不必要な権限をユーザやサービスアカウントに持たせないようにします。試験でも時々適切な権限を付与させる問題があるので、問題文中でどの程度の権限まで必要とされているかを理解する必要があります。

[**Cloud KMS**](https://cloud.google.com/kms/docs?hl=ja)  
Google Cloudサービスや独自のアプリケーションで使用する暗号鍵を管理できるサービスです。求められている気密性により、「Google Cloudのデフォルト暗号化」や「顧客管理の暗号鍵」などを選択します。保護レベルとしてFIPS 140-2 レベル3が指定されていたら、Cloud HSMを用います。高価なサービスではありますが、問題文中に保護レベル指定されていたら問答無用でCloud HSMを選択します。

## ネットワークセキュリティ
- [**VPCファイアウォールルール**](https://cloud.google.com/firewall/docs/firewalls?hl=ja)  
VPCネットワーク内の通信について許可または拒否の設定ができます。組織レベルやフォルダレベルでネットワークトラフィックの制御ができる[階層型ファイアウォールポリシールール](https://cloud.google.com/firewall/docs/firewall-policies?hl=ja)も併せて押さえておきましょう。

- [**Identity-Aware Proxy (IAP)**](https://cloud.google.com/iap/docs/concepts-overview?hl=ja)  
IDとコンテキストを使用して、アプリケーションやVMへのアクセスを保護するサービスです。IAPによって保護されているアプリケーションまたはリソースには、適切なIAMロールを持つユーザーがプロキシ経由でのみアクセスできるようになります。

- [**ロードバランサー**](https://cloud.google.com/load-balancing/docs/load-balancing-overview?hl=ja)  
Cloud Load Balancingはユーザーのトラフィックをアプリケーションの複数のインスタンスに分散するGoogle Cloudサービスです。  
ロードバランサにはアプリケーションロードバランサとネットワークロードバランサの2種類があります。アプリケーションロードバランサはHTTP(S)トラフィックを使用するアプリケーション用のレイヤ7ロードバランサが必要な場合に選択し、ネットワークロードバランサはTLSロードバランサ (プロキシロードバランサ) を使用したレイヤ4ロードバランサが必要な場合、またはUDP、ESP、ICMPなどのIPプロトコルのサポート (パススルーロードバランサを使用) が必要な場合に選択します。また、それぞれのロードバランサは「外部用」と「内部用」など更に種類が分かれています。どのロードバランサを用いるかについては問題として問われることもありますので、以下のリンクを参照してユースケースを覚えておくと良いです。

https://cloud.google.com/load-balancing/docs/choosing-load-balancer?hl=ja

- [**VPC**](https://cloud.google.com/vpc/docs/vpc?hl=ja)  
Google Cloudのネットワーク内に実装された物理ネットワークを仮想化したネットワークを提供するサービスです。VPCにおける特徴として、[共有VPC](https://cloud.google.com/vpc/docs/shared-vpc?hl=ja)、[VPCネットワークピアリング](https://cloud.google.com/vpc/docs/vpc-peering?hl=ja)は押さえておきましょう。

- [**Private Service Connect**](https://cloud.google.com/vpc/docs/private-service-connect?hl=ja)  
VPCネットワーク内からマネージドサービスにプライベート接続でアクセスできるようにするサービスです。

- [**Private Service Access (プライベートサービスアクセス)**](https://cloud.google.com/vpc/docs/private-services-access?hl=ja)  
プライベート接続を使用してGoogleとサードパーティのサービスに内部IPアドレスにアクセスできます。

- [**限定公開のGoogleアクセス**](https://cloud.google.com/vpc/docs/private-google-access?hl=ja)  
内部IPしか持たないインスタンスがGoogle APIやサービスの外部IPアドレスにアクセスするのを可能にするサービスです。

- [**VPC Service Controls**](https://cloud.google.com/vpc-service-controls/docs/overview?hl=ja)  
Google Cloudで明示的に指定したサービスのリソースとデータを保護することができます。キーワードとして、「サービス境界」や設定が既存環境にどう影響するのかを事前に確認できる「ドライラン」を覚えておきましょう。

## アプリケーションセキュリティ
- [**Cloud Data Loss Prevention (Cloud DLP)**](https://cloud.google.com/dlp/docs?hl=ja)  
※現在はSensitive Data Protectionの一部になりましたが、試験ではこちらの名前で使用される可能性があります。
機密データに対する検査、分類、匿名化が可能になります。

- [**Secret Manager**](https://cloud.google.com/secret-manager/docs?hl=ja)  
シークレットをバイナリblobまたはテキスト文字列として保存、管理、アクセスできるサービスです。適切な権限を使用することで、シークレットのコンテンツ表示を必要なユーザーにのみ限定することができます。Cloud KMSなどの鍵管理システムを使用してデータ暗号化などをすることもできます。

- [**Google Cloud Armor**](https://cloud.google.com/armor/docs/cloud-armor-overview?hl=ja)  
DDoS攻撃やクロスサイトスクリプティング、SQLインジェクションなどのアプリケーション攻撃といったさまざまなタイプの脅威からGoogle Cloudのデプロイを保護するGoogle Cloudのサービスです。どのロードバランサーでこのサービスが使えるのかは押さえておきましょう。また、キーワードとして、セキュリティポリシー、Managed Protection、脅威インテリジェンス、Adaptive Protectioin (適応型保護) も覚えておくと良いです。

- [**Binary Authorization**](https://cloud.google.com/binary-authorization/docs/overview?hl=ja)  
コンテナベースのアプリケーションを開発してデプロイするときに、セキュリティ対策を実装するために使用できます。Binary Authorizationで認証されたコンテナイメージのみをデプロイする、といったときに使います。

## オペレーションまわり
[**Security Command Center**](https://cloud.google.com/security-command-center/docs?hl=ja)
Google Cloud内の脆弱性や脅威の報告を一元的に行うサービスです。構成ミス、脆弱性、脅威を特定することにより、セキュリティ体制を強化し、リスクを軽減できるようになります。「Container Threat Detection」「Security Health Analytics」「Web Security Scanner」など多くの機能があるので上記リンクからどんな機能があり、何が出来るのかを一通り押さえておくと良いです。

- [**Cloud Audit Logs**](https://cloud.google.com/logging/docs/audit?hl=ja)  
Google Cloudの監査ログを記録するサービスです。監査ログのし種類には「管理アクティビティ監査ログ」「データアクセス監査ログ」「システムイベント監査ログ」「ポリシー拒否監査ログ」がありますが、どんな監査ログなのか押さえておきましょう。

- [**VPCフローログ**](https://cloud.google.com/vpc/docs/flow-logs?hl=ja)  
VMインスタンスによって送受信されたネットワークフローが記録されます。このログを使ってネットワークのセキュリティ分析などを行います。

# 勉強法
私が勉強した方法を一例として紹介します。
1. [試験ガイド](https://cloud.google.com/learn/certification/guides/cloud-security-engineer?hl=ja)を読む
2. Qiitaの受験対策記事や[G-gen](https://blog.g-gen.co.jp/entry/professional-cloud-security-engineer)で試験でよく問われることを押さえる
3. [模擬試験](https://docs.google.com/forms/d/e/1FAIpQLSf4ADmZr8WnDZjIK6dWvRTel2VmsP0fJtONy6UOFjWZHe-MpQ/viewform?hl=ja)を受験する
4. [Udemy](https://www.udemy.com/course/google-professional-cloud-security-engineer-jp/)などの問題集を利用して知識強化を図る

# まとめ
以上がProfessional Cloud Security Engineer合格に向けた要点です。この内容がこれからProfessional Cloud Security Engineerを目指される方の参考になれば幸いです。  
また、私が別で書いたGoogle Cloud認定資格11種の難易度などについての記事もございますので、こちらも参照ください。

https://qiita.com/yutakon/items/73fa3e853e60620fd777