たろログ2

実験的運用により、記事品質が乱高下することがあります。予めご了承ください。

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」を実行する。

条件

アクション

  • 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つある。

資料が古いかもしれず、現在はもっと増えているかもしれない。

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 Vagrantfile の読み込まれる順序について

Vagrant ファイルは以下の順で読み込まれる。

個々の設定項目によって挙動が異なることはあるが、ほとんどの設定項目において、後に読み込まれた設定値によって前の設定値が上書きされる。

  1. box と一緒にパッケージされた Vagrantfile
  2. ~/.vagrant.d/ ディレクトリ内に設置された Vagrantfile
  3. プロジェクト階層の Vagrantfile
  4. Multi-machine overrides による設定
  5. Provider-specific overrides による設定

4 と 5 は、今のところ意識しなくてよさそう。1, 2, 3 だけ気にしておく。

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

解説

  1. 正解です。これは、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

クライアント側でメッセージを入力すると、サーバ側に入力内容が出力される。楽しい。