非公開送信元の認証を構成する

このページでは、非公開送信元の認証の概要と、Cloud CDN で使用する場合の手順について説明します。

非公開送信元の認証を使用すると、Cloud CDN は限定公開 Amazon S3 バケットまたは互換性のある他のオブジェクト ストアに長期間リソース アクセスできます。非公開送信元を使用すると、クライアントは Cloud CDN をバイパスできず、送信元に直接アクセスできなくなります。

この機能は、グローバル外部アプリケーション ロードバランサまたはアプリケーション ロードバランサ(従来)を使用する Cloud CDN でサポートされています。

非公開送信元の認証は送信元向けであり、署名付き URL署名付き Cookie はクライアント向けです。同じコンテンツに対して両方を有効にできます。非公開送信元の認証では、送信元とコンテンツに対する CDN 以外のアクセスを制限します。署名付き URL と Cookie は、Cloud CDN にアクセスできるユーザーを制御します。

準備

非公開送信元の認証を構成する

非公開送信元の認証を構成するには、次の操作を行います。

gcloud

  1. 非公開送信元のバックエンド構成を YAML ファイルにエクスポートするには、gcloud compute backend-services export コマンドを使用します。

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
       [--destination=DESTINATION]
    

    DESTINATION は、YAML ファイルの名前に置き換えます(例: my-private-origin.yaml)。

  2. HMAC キーを使用してバックエンド リクエストを認証するには、backendServicessecuritySettings セクションで、追加の構成オプションを指定します。

    securitySettings:
      awsV4Authentication:
        accessKeyId: ACCESS_KEY_ID
        accessKey: ACCESS_KEY
        [accessKeyVersion: ACCESS_KEY_VERSION]
        originRegion: REGION
    …]
    

    次のように置き換えます。

    • ACCESS_KEY_ID: HMAC アクセスキー ID
    • ACCESS_KEY: HMAC アクセスキー
    • ACCESS_KEY_VERSION(省略可): 鍵バージョンを表すために設定できる一意の名前
    • REGION: ストレージ プロバイダの有効なリージョン。Amazon S3 の場合、値は Google Cloud リージョンではありません。

    次のスニペットは、サンプル my-private-origin.yaml ファイルの内容を示しています。

     name: shopping-cart-services
     backends:
       - description: cart-backend-1
         group: 'https://www.googleapis.com/compute/v1/projects/my-project-id/global/networkEndpointGroups/my-network-origin-group'
     securitySettings:
       awsV4Authentication:
         accessKeyId: AKIDEXAMPLE
         accessKey: c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9
         accessKeyVersion: prod-access-key-v1.2
         originRegion: us-east-2
    
  3. 非公開送信元を更新するには、gcloud compute backend-services import コマンドを使用してバックエンド サービスに構成をインポートします。

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
       [--source=SOURCE]
    

    SOURCE は、アーティファクト ファイルの名前に置き換えます。

API

HMAC キーを使用してバックエンド リクエストを認証するには、backendServicessecuritySettings セクションで、追加の構成オプションを指定します。

Method: backendServices.insert または Method: backendServices.update API 呼び出しを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

JSON リクエストの本文に次のスニペットを追加します。

securitySettings: {
  awsV4Authentication: {
    accessKeyId: ACCESS_KEY_ID,
    accessKey: ACCESS_KEY,
    [accessKeyVersion: ACCESS_KEY_VERSION],
    originRegion: REGION
  }
}

次のように置き換えます。

  • ACCESS_KEY_ID: HMAC アクセスキー ID
  • ACCESS_KEY: HMAC アクセスキー
  • ACCESS_KEY_VERSION(省略可): 鍵バージョンを表すために設定できる一意の名前
  • REGION: ストレージ プロバイダの有効なリージョン。Amazon S3 の場合、値は Google Cloud リージョンではありません。

次のスニペットは、サンプル JSON リクエスト本文の内容を示しています。

securitySettings: {
  awsV4Authentication: {
    accessKeyId: "AKIDEXAMPLE",
    accessKey: "c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9",
    accessKeyVersion: "prod-access-key-v1.2",
    originRegion: "us-east-2"
  }
}

署名を作成するため、サービス名は自動的に s3 に設定されます。これらの構成が完了すると、Cloud CDN は送信元へのすべてのリクエストに対して HTTP Authorization ヘッダーを生成します。

非公開認証のレスポンスをキャッシュに保存する

非公開で認証されたコンテンツが Cloud CDN によってキャッシュに保存されるようにすることもできます。

これを行うには、キャッシュ モードを [すべてのコンテンツを強制的にキャッシュします] に設定して TTL を指定し、送信元から提供されるすべてのコンテンツがキャッシュに保存されるようにします。

あるいは、すべてのコンテンツを同じ方法で強制的にキャッシュに保存しない場合は、キャッシュ モードを [Cache-Control ヘッダーに基づいて送信元の設定を使用する] または [静的コンテンツをキャッシュします] に変更し、Cache-Control ヘッダーが送信元から提供されるコンテンツで正しく設定されていることを確認します。

次のステップ