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
Y.Sumikura
November 21, 2022
Technology
650
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
320
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
190
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
260
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
260
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
390
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
4.7k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
680
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
190
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
82
Other Decks in Technology
See All in Technology
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
310
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
170
Databricks における 生成AIガバナンスの実践
taka_aki
1
360
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
280
運用を見据えたAIエージェント設計実践
amacbee
1
3.4k
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
200
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
410
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development with AI-DLC
yoshidashingo
0
160
Agentic Web
dynamis
1
200
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
350
トークン数だけでは測れない — Claude Code 組織展開の効果検証から学んだこと
makikub
0
140
新しいVibe Codingと”自走”について
watany
5
260
Featured
See All Featured
Making Projects Easy
brettharned
120
6.7k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Ethics towards AI in product and experience design
skipperchong
2
310
WENDY [Excerpt]
tessaabrams
11
38k
Skip the Path - Find Your Career Trail
mkilby
1
140
Rails Girls Zürich Keynote
gr2m
96
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Documentation Writing (for coders)
carmenintech
77
5.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
GraphQLとの向き合い方2022年版
quramy
50
15k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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