2022-07-07 Google Cloud Skills Boost 実施
引き続き、 Google Cloud Skills Boost の動画コンテンツを順に確認している。
Lab を実施しようとしたらエラーが出て実施できなかった。悲しかった。
Mapping IP addresses | Google Cloud Skills Boost for Partners
IP addresses for default domains | Google Cloud Skills Boost for Partners
Routes and firewall rules | Google Cloud Skills Boost for Partners
Lab Intro: Getting Started with VPC Networking | Google Cloud Skills Boost for Partners
internal DNS resolver
VPC ネットワーク内において、ホスト名を internal IPアドレスに変換してくれる。
/etc/resolv.conf
に自動で記載される 169.254.169.254 というアドレスは、 internal DNS resolver というものによって名前解決されているアドレス。
いっつもなんだこのアドレスって思ってたわ。
VM のネットワーク設定
- ひとつの network interface に、IPアドレスの範囲 (range) を設定することも可能
Route
VPC ネットワーク内外のトラフィックのルーティングを行うコンポーネント。
デフォルトでは、以下のように設定されている。
Route は、instance の tag、もしくは network tag が match する instance に適用される。
Firewall
VPC ネットワーク内外のトラフィックの拒否・許可を行うコンポーネント。
「条件」にマッチしたトラフィックに対し「Action」を実行する。
条件
- destination
- protocol
- port
- source (IPアドレス、タグ、サービスアカウント)
アクション
- allow
- deny
hierarchical firewall policy rules
また、組織のリソース階層に従って、ファイアウォールのルールを制御することができる。
2022-07-06 Google Cloud Skills Boost 実施
Demo: Expand a Subnet | Google Cloud Skills Boost for Partners から実施。
VPC ネットワークの subnet の拡張
ほとんどワンクリックで行うことが可能である。VM のダウン等は発生しない。
データセンタで同様のことを行う場合、綿密な作業計画と手順書の準備、作業当日の設定変更作業 (多くの場合は夜間に行う)、動作確認が必要になることを考えると革命的かもしれない。
/29 から /24 までの範囲で変更が行える。
Compute Engine の内部IPアドレス
Compute Engine に割り当てられる IPアドレスには、内部 IPアドレス (internal) と外部 IPアドレス (external) がある。
内部 IPアドレスは必須であり、 VM を作成すると DHCP によって自動的に割り当て、取得、設定される。
DHCP による自動的な割り当てのほか、カスタム (固定割り当て)、予約 IPアドレスを取得しての固定割り当てが選択できる。
カスタムが分かりにくかったので、以下にスクショを取得した。 DHCP における exclude address 設定みたいなものを自動で行い、インスタンスにその IPアドレ スを静的に設定してくれるものと理解した。
IP アドレス | Compute Engine ドキュメント | Google Cloud
また、VM の名称としてユーザが指定した symbolic name によって名前解決できるようになる。これは、 VM が所属するサブネットワーク内でのみ有効である。
Compute Engine の外部IPアドレス
外部 IPアドレスの割り当ては任意 (Optional) である。
「なし」、「ephemeral」、「固定 (予約)」が選択できる。
なしに設定すると、外部 IPアドレスは割り当てられない。
ephemeral に設定すると、外部 IPアドレスの pool から割り当てられる。この場合、インスタンスの再起動などによって簡単に外部 IPアドレスは変更される。
自身で所有するアドレス空間を pool として利用することもできる。
「固定 (予約)」とする場合は、 reserved external IP address が割り当てられる。 reserved address を取得して適宜割り当てる。
2022-07-01 Google Cloud Skills Boost の実施
Google Certified Professional Cloud Security Engineer の学習を進めている。
Certification Learning Path: Professional Cloud Security Engineer | Google Cloud Skills Boost for Partners のカリキュラムに従って、Networking in Google Cloud: Defining and Implementing Networks | Google Cloud Skills Boost for Partners のコンテンツを上から順に確認した。
Security に関するものではなく、Network についての内容である。Google Cloud の Security を学ぶに先んじて、 Network についても学んでおけということらしい。
Point of presence (Pop)
Pop という知らない単語が出てきたので調べた。
インターネットに接続する際のエンドポイントを指すらしい。
ただし、 GW とは異なる。
ISP における Point of presence を例にして説明すると、 ISP がインターネットに接続するために設置しているネットワーク設備を指すらしい。正直具体的には知らないが、どうもそのようなものがあるらしい。
そして我々がインターネットに接続する際は、デフォルトゲートウェイやモデムの先で、自分の地理的な場所から最も近い Pop を経由する。
そんな感じらしい。
GCP で説明されていた Pop は同様に、我々が Google Cloud に接続する際にアクセスするエンドポイントのことなのではないかなと思う。
例えば、日本に住んでいる人は日本のリージョンの Pop にアクセスするなど。
あくまで自分なりの理解なので、正直あっているかどうかはわからない。
VPC Network Types
VPC Network にはいくつかタイプがあるらしい。
- Default
- Auto Mode
- Custom Mode
Default
プロジェクトを作成した際に、デフォルトで生成されるもの。実態は後述する Auto Mode である。
ひとつのネットワークが、 predefined subnets, predefined firewall rules と共に作成される。
predefined firewall rules
以下の設定で作成される。
- ICMP 全許可
- RDP, SSH 全許可
- 同じ default network からの Traffic 全許可
Auto Mode
リージョンひとつにつき、ひとつのサブネットが自動的に作成される。
ネットワークの拡張を行うことができる。
Custom Mode
自動的に subnet を作成しない。
サブネットの設定について細かく制御することができる。
auto mode から custom mode に切り替えはできるが、 custom mode への切り戻しはできないので注意。
Cloud Skills Boost 的には推奨しない雰囲気。
Subnet
VPC ネットワークに割り当てるネットワーク空間。
アドレスのうち、 0, 1, 254, 255 は GCP 側によって予約済みであり利用できない。
2022-06-30 Google Cloud Skills Boost の実施
Google Cloud Skills Boost の実施
改めて、 Google Cloud Fundamentals のドキュメントを読み直した。
Cloud Computing の歴史
第一のトレンド
Cloud Computing の最初のトレンドは colocation らしい。
データセンタという不動産を所有したり、サーバの設置のためにオフィスのスペースを消費したりする必要がなくなった。
第二のトレンド
Google に言わせると、今日の仮想化、およびクラウドコンピューティングが第二のトレンドらしい。
第三のトレンド
Google に言わせると、Google Cloud が提供しているコンテナベースのアーキテクチャが第三のトレンドであり、第三の波らしい。
Multi-Region のアプリケーション
Multi-Region に対応するアプリケーションは 4つある。
資料が古いかもしれず、現在はもっと増えているかもしれない。
- Google App Engine
- Google Cloud DataStore
- Google Cloud Storage
- Google Big Query
Region 内の通信における遅延
Region 内における通信は、全体の 95% 以上のトラフィックにおいて、Round Trip Time が 5mili second 以下であることを保証しているらしい。
Compute 系サービス
Google Cloud が提供する Compute 系のサービスは 4つある。
- Compute Engine
- Kubernetes Engine
- App Engine
- Cloud Functions
Storage 系サービス
Google Cloud が提供する Storage 系のサービスは 4つある。
- Cloud Storage
- Cloud SQL
- Cloud Spanner
- Cloud Datastore
Big Data
Big Data 関連のサービスについても同様に以下の 5種類がある。
- BigQuery
- Pub/Sub
- Dataflow
- Dataproc
- Datalab
Machine Learning
Machine Learning 関連のサービスについても同様に以下の 5種類がある。
2022-06-29 Google Cloud Certified Professional Cloud Security Engineer 模擬試験の復習
Google Cloud Certified Professional Cloud Security Engineer 模擬試験
今回でとりあえず、 Google Cloud Certified Professional Cloud Security Engineer の模擬試験の復習は終わった。
次は、 Cloud Skills Boost を進めていく予定。
ウェブアプリケーションの脆弱性スキャン
問題
Web Security Scanner を使用して、App Engine アプリの脆弱性スキャンを実行する必要がありますが、スキャン完了後、レポートに表示されるウェブページの結果の件数が正しくありません。マウスオーバー メニューのページが抜けているようです。スキャンを適切に実行し、このメニューを取り込むためには、どうすればよいですか?
回答
スキャンを変更し、追加の開始 URL を含めるようにする。
解説
C が正解です。Web Security Scanner は、マウスオーバーによるマルチレベル メニューのような複雑な JavaScript を処理できない場合があります。このシナリオでは、追加の開始 URL を指定することで、スキャン対象を広げることができます。
Web Security Scanner というツールを用いて、ウェブアプリケーションの脆弱性スキャンを行うことができる。
これは、 Security Command Center という GCP のサービスのうちの一つである。
Web Security Scanner の概要 | Security Command Center | Google Cloud
Security Command Center
脆弱性と脅威の報告を一元的に行うサービスである。
Container, VM のセキュリティ脅威査定や、 Web アプリケーションのセキュリティスキャンなどができる。
PII の保管
問題
ある組織が、GDPR コンプライアンス戦略に取り組んでいます。個人を特定できる情報(PII)を、第三者が閲覧できないように Cloud Storage バケットに保管する制御機能を実装したいと考えています。PII を内部に公開することなく、PII が適切な場所に保管されていることを検証するには、どの Google Cloud ソリューションを使用すればよいですか?
回答
Cloud Data Loss Prevention API
解説
個人が特定できる情報 (PII) について、内部に公開することなく、適切な場所に保管されていることを保管する
-> そういうことをするのは Cloud Data Loss Prevention。
顧客指定の暗号鍵の利用
問題
クラウドを利用しているお客様が、オンプレミスの鍵管理システムを使用して、暗号鍵の生成、保護、ローテーション、監査を行いたいと考えています。このお客様が、Cloud Storage と自社の暗号鍵を併用するには、どうすればよいですか?
回答
顧客指定の暗号鍵(CSEK)を使用する。
解説
オブジェクトのサーバ側暗号化の話。
デフォルトでは、Google が生成し管理する AES-256 形式の暗号化鍵が自動生成され、自動的に適用される。
このデフォルトの鍵を利用せず、独自の鍵を利用したい場合の選択肢は二つある。
それぞれ「顧客管理の暗号鍵 (CMEK)」 と、「顧客指定の暗号鍵 (CSEK)」である。
顧客管理の暗号化鍵 (CMEK)
顧客が Cloud Key Management Service を利用して鍵を生成し、管理する。
これが Consumer Managed Encryption Keys, CMEK である。
顧客指定の暗号化鍵 (CSEK)
顧客がオブジェクトを Cloud Storage に保存する際、毎回そのリクエストに鍵の情報を含め、利用する暗号化鍵を指定する。
これが、 Consumer Supplied Encryption Keys, CSEK である。
Cloud Key Management Service 上で作成しておらず、また管理していない鍵ファイルについてはこの方法を使わないと利用できないため、今回のユースケースにおいては CSEK が適切である。
決済システムのセキュリティ (PCI DSS)
問題
あなたは、Google Kubernetes Engine を使用して適切なセキュリティ管理を適用する必要がある決済処理環境の実装を担当しています。何をすべきですか?
回答
Pod とノードに対するファイル整合性モニタリングとアンチウイルス スキャンを強制する。
PCI DSS compliance on GKE | Cloud Architecture Center
解説
- 正解です。これは、PCI DSS のセクション 5 および 11 の要件です。
決済処理環境など、クレジットカードが絡む場合は PCI DSS というセキュリティ標準を意識し、必要があればその要件を満たす必要がある。
POS アプリケーションのセキュリティ (PCI DSS)
問題
ある小売企業が、e コマースサイト(POS アプリケーションを含む)を Google Cloud に移行しようとしています。この場合に遵守する必要があるコンプライアンス標準はどれですか?
回答
PCI DSS
解説
A は不正解です。FedRAMP は米国政府規模のプログラムであり、クラウド関連のプロダクトとサービスのセキュリティ評価、認可、継続的モニタリングのための標準的なアプローチを定めています。そのため、このユースケースの業界とは無関係です。
B は不正解です。HIPAA は、個人の医療情報を保護することを目的として、特定の団体や個人に対し、データのプライバシーとセキュリティの要件を定めている米国の連邦法です。そのため、このユースケースの業界とは無関係です。
C は不正解です。SOX は、米国の公開会社の会計および財務レポートに関するものです。このユースケースとは関係ありません。
D が正解です。PCI DSS は、PCI Security Standards Council で採択された一連のネットワーク セキュリティおよびビジネス上のベスト プラクティス ガイドラインによって構成され、お客様の決済カード情報を保護するための「最小限のセキュリティ基準」が定められています。このユースケースの業界やワークロードに関連しています。
PCI DSS - Compliance | Google Cloud
PCI DSS
Payment Card Industory Data Security Standard (PCI DSS)。
クレジットカード業界のセキュリティ基準である。加盟店やサービスプロバイダにおいて、クレジット会員データを安全に取り扱うためのもの。
American Express, Discover, JCB, MasterCard, VISA の 5社が共同設立した PCI SSC という機関によって、運用管理を実施している。
2022-06-27 Unix Domain Socket について調べた
Unix Domain Socket とは、同一ホスト上でのプロセス間通信におけるデータのエンドポイントである。
unix(7) - Linux manual page (man7.org)
C言語から利用される場合は、以下のように利用される。
struct sock_addr_un { sa_family_t sun_family; char sun_path[108]; }
また、下記のサイトで実際にプロセス間通信を動作させることができた。
サーバ側のコードを実行すると /tmp/test.unixsocket
というパスに unix domain socket が作成される。
クライアント側のコードを実行してメッセージを入力すると、その unix domain socket を利用してサーバとクライアントが通信を行う。
C言語ソケット通信サンプル(UNIXドメイン) | 底辺プログラマーの戯言 (mathkuro.com)
使い方は以下の通り。環境は Ubuntu の 18.04 である。
それぞれのファイルについて、 server.c, client.c という名前で保存しておく。
片方のプロセスで、以下を実行。
gcc ./server.c -o server ./server
もう片方のプロセスで、以下を実行。
gcc ./client.c -o client ./client
クライアント側でメッセージを入力すると、サーバ側に入力内容が出力される。楽しい。