Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第4回 雲勉LT【オンライン:初心者向け】(GCP)限定公開のGoogleアクセスとCloud...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Y.Sumikura
November 21, 2022
Technology
660
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第4回 雲勉LT【オンライン:初心者向け】(GCP)限定公開のGoogleアクセスとCloud NATの実装
Y.Sumikura
November 21, 2022
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
330
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
190
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
260
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
390
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
5.1k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
680
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
84
Other Decks in Technology
See All in Technology
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
220
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.4k
Making sense of Google’s agentic dev tools
glaforge
1
260
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
350
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
210
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
320
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
260
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
330
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.7k
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
390
Documentation Writing (for coders)
carmenintech
77
5.4k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Believing is Seeing
oripsolob
1
170
The Curious Case for Waylosing
cassininazir
1
430
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Into the Great Unknown - MozCon
thekraken
41
2.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
A Soul's Torment
seathinner
6
3.1k
Leo the Paperboy
mayatellez
8
1.9k
Transcript
第4回 雲勉LT【オンライン︓初⼼者向け】 (GCP)限定公開の Google アクセスと Cloud NAT の実装
⾃⼰紹介 2 • 野崎 ⾼弘(のざき たかひろ) • アイレット株式会社 クラウドインテグレーション事業部 プロジェクト企画推進セクション
インフラ技術 • インフラ構築・保守やSOCセキュリティアナリストをやってました • 現在は技術検証やドキュメント作業が主 • 趣味︓資格取得、⽝の散歩、ドラクエ、巨⼈ファン、ドラマ • 好きな⾷べ物︓カレー、ハンバーグ、チーズ、パクチー、⽣クリーム系スイーツ • GCPは現在3冠、AWSは8冠 3
外部IPアドレスを付与しない⽅がいい理由 3 • 基本的にVMインスタンスに外部IPを付与するのは稀 • 標準VMインスタンスで使⽤されている静的 IP アドレスとエフェメラル IP アドレス(インスタンス起動
時に発⾏される外部IPアドレス)- 0.004 ドル/時間 • とはいえインターネットに出られないと困るケースも多い • 外部からの通信を直接受ける必要はないが、外部への通信が必要となる処理(例えば、メーカーから提供 されるソフトウェアパッチを取得、外部のソースリポジトリからソースコードをクローニング)を、外部 IPアドレスを持たないVMから実施したい 本LTの対象者︓GCPのことはなんとなく知っているが、VPCネットワークをそれほど触ったことがない初⼼ 者 本LTは、初⼼者がGCPネットワークを把握するのにちょうどいい題材
そこで 4 外部 IP アドレスを設定していない VM インスタンスに対して、限定公開の Google アクセスと Cloud
NAT を実装します。その後、Google API およびサービスのパブリック IP アドレスへのアクセスと、その 他のインターネット接続を検証します。 外部 IP アドレスを設定していない VM インスタンスは、外部ネットワークから隔離されています。Cloud NAT を使⽤すると、これらのインスタンスがインターネットにアクセスして、更新、パッチ適⽤などが可 能になります。
限定公開の Google アクセスとは︖ 5 Private Google Access とも⾔い、Google Cloud の
API (ドメイン名が *.googleapis.com)に対して、 外部IP(パブリックIP)を持たないVMやオンプレミスのクライアントから、インターネットを介さず、Google の内部プライベートネットワークを通してアクセスできるようにする仕組み ⇨AWSで⾔うところのVPCエンドポイント (https://qiita.com/suzuyui/items/b69be2a50df9cbedf402 より)
Private Service Connect との違いは︖ 6 • インターネットに接していないノードを Google API へアクセスできるようにする仕組み
• VPC 内に IP アドレスを持つエンドポイ ントを作成し、このエンドポイント経由 で Google API にアクセスする • エンドポイントには任意の IP アドレス を割り当てることができ、通常のプライ ベートIPアドレスも使える • Private Service Connect エンドポイントの作成は若⼲⼿間 • 限定公開の Google アクセスだと、199.36.153.4/30 や 199.36.153.8/30 といったIPアドレスを使う 必要があるため、Cloud Interconnect や Cloud VPN 経由でオンプレミス環境から利⽤する際などに、 ルーティングが複雑化する • 限定公開の Google アクセス機能は無料︕
全体像 7 限定公開の Google アクセスを使⽤して、 Cloud Storageからファイルをダウンロードし、 NAT ゲートウェイを使⽤して、インターネットに接 続してパッケージをダウンロードします。
⼿順の流れ 8 1. Cloud Storage バケットから画像をダウンロードできないことを確認 2. 限定公開の Google アクセスを有効化
3. 再度1.を実⾏し、今度はうまくいくことを確認 4. インターネットへアクセスできないことを確認 5. Cloud NAT を実装 6. 再度4.を実⾏し、今度はうまくいくことを確認 7. Cloud NATログを⾒て、アクセスを確認 8. 今度は外部IPを付与してインターネットへアクセス 9. Cloud NATログを⾒て、今度は該当ログがないことを確認
事前準備 9 • VPCネットワークとそのファイアウォールルールを作成 • 外部 IP アドレスが設定されていない VM インスタンスを⽤意
• サブネットで限定公開の Google アクセスを無効のままにする(デフォルト) • Cloud Storage バケットを作成して、サンプル画像を保存しておく
ファイアウォール ルール忘れないように 10 次のように指定し、残りの設定はデフォルトのまま IAP 接続で使⽤される、特定の IP アドレスセット(35.235.240.0/20)を CIDR 範囲に制限
IAP TCP 転送では、SSH、RDP、その他のトラフィックを VM インスタンスに転送できる暗号化トンネルを 確⽴する プロパティ 値 名前 privatenet-allow-ssh ネットワーク privatenet ターゲット ネットワーク上のすべてのインスタンス ソースフィルタ IPv4 範囲 送信元 IPv4 範囲 35.235.240.0/20 プロトコルとポート 指定したプロトコルとポート(tcp:22)
デモ 11 ここからデモも交えて実際の動きを⾒ながら説明します。
作業の流れ 12 1. 外部 IP アドレスを設定していない VM インスタンス(vm-internal)において、pingを実⾏して外部接続をテスト ping -c
2 www.google.com vm-internal には外部 IP アドレスが付与されていないので、これは動作しないことを確認 2. Cloud Storageの画像が vm-internal にコピーできるかどうか、次のコマンドを実⾏ Gsutil cp gs://Nozaki_bucket/*.png . 限定公開の Google アクセスが無効になっているため、これは動作しないことを確認 (vm-internal がトラフィックを送信できるのは 、VPC ネットワーク内に限られます) 3. 限定公開の Google アクセスを有効にする 限定公開の Google アクセスは、サブネットレベルで設定します。有効にすると、サブネット内でプライベート IP ア ドレスしか持たないインスタンスが、デフォルトルート(0.0.0.0/0)を通じて Google API およびサービスにトラ フィックを送信できるようになります。
作業の流れ 13 4. 再度2.を試して、今度は無事に画像をダウンロードできることを確認 5. apt-get を実⾏して、vm-internal のパッケージインデックスを同期してみる sudo apt-get
update 現在、vm-internal がアクセスできるのは Google API およびサービスだけであるため、これは 動作しな いことを確認 6. Cloud NAT ゲートウェイを構成する Cloud NATを設定するには、Cloud Routerも必要になります。どちらもリージョンごとに作成するリー ジョンリソースで、対象とするサブネットやIPアドレス範囲を細かく指定することが可能です。 この際、ロギングを有効にするため、[⾼度な構成] → [Stackdriver ロギング] で [変換とエラー] を選択
作業の流れ 14 7. 再度5.を試して、今度は無事にインターネットに接続してアップデートできることを確認 vm-internal で NAT ゲートウェイが使⽤されるため、これは正常に動作するはずです。 8. NATログの確認
nat-config をクリックして [ログ] タブをクリック。次に、Cloud Logging へのリンクをクリックしま す。[オペレーションロギング] の新しいタブが開きます。 [ログエクスプローラ] をクリック。内部 VM への接続後に⽣成された 2 つの新しいログが表⽰されます。 (dest_ip にある 199.232.98.132 は、debian.map.fastly.net) Cloud NAT のログは次のシーケンスに対して⽣成されます。 • NAT を使⽤するネットワーク接続が作成 • NAT に使⽤可能なポートがないことが原因でパケットが破棄
作業の流れ 15 9. 外部 IP アドレスを設定して再度試す 今度は外部 IP アドレスを設定していない vm-internal
に、外部IPエフェメラルアドレスを設定します。 再度5.を試すと、当然外部IPアドレスをそのまま使⽤して、無事にインターネットに接続してアップデート できることを確認 10. 再びNATログを確認 再度8.を実施してCloud NAT ログを⾒に⾏き、該当ログがないことを確認します。Cloud NATは、選択し たGoogle APIとサービスの外部IPアドレスに送信されたトラフィックに対してNATを実⾏しないためです。
確認 16 外部 IP アドレスが設定されていないインスタンス vm-internal を作成し、限定公開の Google アクセスの 有効化と
NAT ゲートウェイの構成を⾏って、vm-internal が Google API およびサービス、ならびにその他 のパブリック IP アドレスに接続できることを確認できました。
おまけ(とある Professional Cloud Network Engineer 試験の練習問題1) 17 問題1 Cloud Storage
に保存される結果を⽣成するために、Compute Engine で実⾏されているアプリケーション があります。どのアプリケーション インスタンスにも外部 IP アドレスがない場合に、これを達成するため に使⽤できる 2 つの⽅法はどれですか? ア. すべてのサブネットでプライベート Google アクセスを有効にする。 イ. VPC でプライベート サービス アクセスを有効にする。 ウ. VPC でプライベート Google アクセスを有効にする。 エ. Cloud NAT を作成し、NAT ゲートウェイ経由でアプリケーショントラフィックをルーティングする。 皆さんならもう答え、お分かりですね︖
おまけ(とある Professional Cloud Network Engineer 試験の練習問題)2 18 問題2 インスタンスからインターネットへの接続ができたことを⽰すために、Cloud NAT
のログを設定するよう求 められました。 Cloud NAT が Cloud Logging に送信する 2 種類のログは次のうちどれですか︖ ア. NATログ イ. エラーログ ウ. 接続ログ エ. 変換ログ これもNATの設定のところでやりましたね
None