チェックポイント
Create a Cloud Storage bucket and upload an object
/ 30
Create a Load Balancer
/ 30
Delete the object from Cloud Storage bucket
/ 20
Create Edge Security Policy for your CDN Cache and Validate Policy
/ 20
Cloud Armor によるエッジ キャッシュの保護
GSP878
概要
Google Cloud Armor のエッジ セキュリティ ポリシーを使用すると、Cloud CDN(コンテンツ配信ネットワーク)と Cloud Storage でキャッシュに保存されたオブジェクトへのアクセスを制限できます。エッジ セキュリティ ポリシーは、Cloud CDN キャッシュが保存される場所のアップストリームにある、Google ネットワークの最も外側の境界でデプロイされ、適用されます。この理由の一つは、制限されている地域からストレージ バケット内のオブジェクトにユーザーがアクセスできないようにしたり、許可を受けている地域でのみメディア配信が行われるようにフィルタを適用したりするためです。
このラボでは、Google Cloud Storage バケットを作成して画像をアップロードし、バケットをロードバランサにバインドしてから、バケットに対して Cloud CDN と Cloud Armor のエッジ セキュリティ ポリシーを有効にします。
学習内容
このラボでは、次の方法について学びます。
- Cloud Storage バケットを設定して、キャッシュ可能なコンテンツを格納する
- コンテンツを保護するエッジ セキュリティ ポリシーを作成する
- エッジ セキュリティ ポリシーが想定どおりに機能していることを確認する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
始める前に
- Cloud Shell でプロジェクト ID を設定し、その環境変数を作成します。
タスク 1. Cloud Storage バケットを作成してオブジェクトをアップロードする
Cloud Storage バケットが Cloud CDN のコンテンツ配信元となります。
-
コンソールで、ナビゲーション メニュー()> [Cloud Storage] > [バケット] に移動します。
-
[作成] をクリックして、新しい Cloud Storage バケットを作成します。
-
バケット名を「
-bucket」に設定します。 -
[続行] をクリックします。
-
[ロケーション タイプ] で [
リージョン
] を選択してから、[] を選択します。 -
[続行] をクリックします。
-
バケットのデフォルト ストレージ クラスは [
Standard
] です。[続行] をクリックします。 -
[公開アクセスの防止] で [
このバケットに対する公開アクセス禁止を適用する
] チェックボックスをオフにします。 -
[アクセス制御] で [きめ細かい管理] を選択します。
-
[続行] をクリックします。
-
[作成] をクリックします。
これで Cloud Storage バケットの作成は完了です。
バケットにオブジェクトをアップロードする
次に、バケットにオブジェクトをアップロードします(このオブジェクトは後ほど使用します)。Cloud Storage バケットはデフォルトで非公開になっています。このラボでは、オブジェクトをインターネットに公開します。
- Cloud Shell で次のコマンドを実行し、Cloud Shell に画像をダウンロードします。ここでは Google ホームページにある Google 画像を使用します。
-
gsutil cp
コマンドを使用して、Cloud Shell から上の手順で作成したバケットに画像をアップロードします。
- ダウンロードした画像を Cloud Shell から削除します。
-
[Cloud Storage] > [バケット] > [
] に移動して、バケットにアップロードしたオブジェクトを見つけます。 -
アップロードしたオブジェクトの右側にあるその他アイコンをクリックし、[アクセス権の編集] をクリックします。
-
[エントリを追加] をクリックして、プルダウン リストでエンティティを [公開] に設定します。
-
[保存] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2. ロードバランサを作成する
Cloud CDN と Cloud Armor は、Google のグローバルな Cloud Load Balancing に関連付けることができるコンポーネントです。このセクションでは、HTTP ロードバランサを作成します
- [ネットワーキング] > [ネットワーク サービス] > [ロード バランシング] をクリックします。
- [+ロードバランサを作成] をクリックします。
- [ロードバランサのタイプ] で [アプリケーション ロードバランサ(HTTP / HTTPS)] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
- [グローバルまたはシングル リージョンのデプロイ] で [グローバル ワークロードに最適] を選択し、[次へ] をクリックします。
- [ロードバランサの世代] で [グローバル外部アプリケーション ロードバランサ] を選択し、[次へ] をクリックします。
- [構成] ボタンをクリックします。
- ロードバランサに「
edge-cache-lb
」という名前を付けます。
フロントエンドの構成を作成する
フロントエンドの構成を作成するには:
-
[フロントエンドの構成] をクリックします。
-
フロントエンドの構成では、HTTP(証明書がある場合は HTTPS も使用可)とエフェメラル IP アドレスを使用し、プレミアム ティア ネットワークが選択されていることを確認します。これはデフォルトで選択されています。
-
[完了] をクリックします。
バックエンドの構成を作成する
バックエンドの構成を作成するには:
-
[バックエンドの構成] をクリックします。
-
[バックエンド サービスとバックエンド バケット] で、[バックエンド バケットを作成] をクリックします。
-
[バックエンド バケット名] を「
lb-backend-bucket
」に設定します。 -
次の項目で [参照] ボタンをクリックし、先ほど作成した Cloud Storage バケットを選択します。
-
他の値はすべてデフォルト値のままにします。
-
[作成] をクリックします。
ホストとパスのルールを作成する
ホストとパスのルールを作成するには:
-
左側にある [ルーティング ルール] をクリックします。
-
すべてのリクエストをバケットに送信するために、[モード] で [単純なホストとパスのルール] を選択します。これはデフォルトのオプションです。
HTTP ロードバランサを確認して作成する
HTTP ロードバランサを確認して作成するには:
- [確認と完了] をクリックします。
- [バックエンド サービス] と [フロントエンド] を確認します。
- [作成] をクリックします。
ロードバランサの IP を取得する
コンソールからロードバランサの IP を取得するには:
- ロードバランサのリストで、このプロジェクトのロードバランサの名前をクリックします。ロードバランサの IPv4 アドレスをメモします(次のタスクで使用します)。以降の手順では、IPv4 アドレスを挿入する部分が
[LOAD_BALANCER_IP]
と表記されます。
ロードバランサにクエリを実行する
数分経ったら、ロードバランサに対して、アップロードしたオブジェクトのクエリを実行します。ロードバランサの IP アドレスと画像名が必要です。
- Cloud Shell で次のコマンドを実行します。LOAD_BALANCER_IP はロードバランサの IPv4 アドレスに置き換えてください。
出力:
- 次のコマンドを使ってクエリを何度か実行します。
Cloud CDN から配信されているコンテンツを確認する
- [ネットワーク サービス] > [Cloud CDN] に移動して、CDN またはロード バランシングのモニタリングで、コンテンツが CDN から配信されていることを確認します。
100% に近いヒット率を達成できているはずです。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 3. Cloud Storage バケットからオブジェクトを削除する
キャッシュにデータが保存されたので、バケットからオブジェクトを削除します。これにより、ポリシーをバックエンドではなくキャッシュに確実に適用できます。
-
[Cloud Storage] > [バケット] > [
-bucket] > [オブジェクト] に移動します。 -
オブジェクトを選択し、上部の [削除] ボタンをクリックして削除します。
-
確認のプロンプトで [削除] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 4. エッジ セキュリティ ポリシーを作成する
Cloud Armor ポリシーは HTTP ロードバランサの外部で実装されます。Cloud Armor ポリシーをデプロイしたら、HTTP ロードバランサのバックエンド サービスまたはバックエンド バケットの 1 つ以上のリソース(以降、「ターゲット」と呼びます)にポリシーを関連付けることができます。
- [ネットワーク セキュリティ] > [Cloud Armor ポリシー] に移動して、[ポリシーを作成] をクリックします。
- 以下の値を設定し、他はすべてデフォルト値のままにして、[次のステップ] をクリックします。
プロパティ | 値(値を入力するか、指定されたオプションを選択) |
---|---|
名前 | edge-security-policy |
ポリシータイプ | Edge のセキュリティ ポリシー |
デフォルトのルール アクション | 拒否 |
- [ターゲットへのポリシーの適用] で [ターゲットを追加] をクリックし、以下の値を設定します。
プロパティ | 値 |
---|---|
タイプ 1 | バックエンド バケット(外部アプリケーション ロードバランサ) |
バックエンド バケットのターゲット 1 | lb-backend-bucket |
-
[完了] をクリックします。
-
[ポリシーの作成] をクリックします。
エッジ セキュリティ ポリシーを確認する
バックエンド バケットの前面にエッジ セキュリティ ポリシーを作成したので、ポリシーが想定どおりに機能していることを確認します。
セキュリティ ポリシーを確認する
数分経過したら、Cloud Armor ポリシーが動作していることを確認できます。
コマンドラインで次のコマンドを実行すると、403 エラーが返されます。
403 エラーは、ウェブページまたはウェブサーバー上のコンテンツへのアクセス権限がない場合に発生します。
出力:
ログを調べる
次に、適用されているエッジ セキュリティ ポリシーをログで確認します。
-
[オブザーバビリティ] > [ロギング] > [ログ エクスプローラ] に移動します。
-
以下のスニペットをクエリボックスに入力し、[クエリを実行] をクリックします。
-
403 レスポンス
と適用されているセキュリティ ポリシーに注目します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
セキュリティ ポリシーを削除する
オブジェクトが CDN キャッシュから配信されていることを証明するために、Cloud Armor セキュリティ ポリシーを削除してからオブジェクトをクエリします。元のオブジェクトは Cloud Storage から削除されているため、エッジ キャッシュからオブジェクトが配信されていることが示されます。
- [ネットワーク セキュリティ] > [Cloud Armor ポリシー] > [edge-security-policy] > [ターゲット] に移動します。
- [
lb-backend-bucket
] ターゲットを選択し、[削除] をクリックしてターゲット バケットを削除します。[削除] をクリックして、削除を確定します。
- 数分経過したら、Cloud Storage バケット内のリソースにもう一度
curl
を送信します。
今回は 200
レスポンスが返されます。ウェブページは想定どおりに動作しています。
出力:
同じコマンドをさらに数回実行して、403 ステータス コードが返されるかどうかを確認します。
お疲れさまでした
Cloud Storage バケットを作成して画像をアップロードし、バケットをロードバランサにバインドしてから、バケットに対して Cloud CDN と Cloud Armor のエッジ セキュリティ ポリシーを有効にしました。
マニュアルの最終更新日: 2024 年 7 月 16 日
ラボの最終テスト日: 2024 年 7 月 16 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。