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

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

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

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

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

始める前に

非公開送信元の認証を使用する前に、次の操作を行います。

  • Amazon S3 バケットまたは他の互換性のあるオブジェクト ストアのアクセスキーとアクセスキー ID を取得します。Amazon S3 での詳しい手順については、AWS 認証情報を使用した AWS へのアクセス: プログラムによるアクセスをご覧ください。

  • オブジェクト ストアが HTTP リクエストの Host ヘッダーに特定の値を想定している場合は、その値がバックエンド サービスで構成されていることを確認します。カスタム リクエスト ヘッダーを構成しない場合、バックエンド サービスは、クライアントが外部 HTTP(S) ロードバランサへの接続に使用した Host ヘッダーを保持します。構成手順については、カスタム リクエスト ヘッダーの操作をご覧ください。具体的な例については、外部バックエンドでロードバランサの構成をご覧ください。

  • 必要に応じて、次のコマンドで Google Cloud CLI を最新バージョンに更新します。

    gcloud components update
    

詳細については、コンテンツを認証するをご覧ください。

非公開送信元の認証を設定する

Amazon S3 バケットまたは互換性のあるオブジェクト ストアに非公開送信元の認証を構成するには、次の操作を行います。

gcloud

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

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

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

  2. backendServicessecuritySettings セクションで次の構成オプションを指定して、AWS Signature Version 4 でバックエンド リクエストを認証します。

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

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

    • ACCESS_KEY_ID: アクセスキーの一意の ID
    • ACCESS_KEY: 認証に使用されるアクセスキー
    • ACCESS_KEY_VERSION(省略可): 鍵バージョンを表すために設定できる一意の名前
    • REGION: Google Cloud リージョンではなく、ストレージ プロバイダに有効なリージョン

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

     name: shopping-cart-services
     backends:
       - description: cart-backend-1
         group: 'https://www.googleapis.com/compute/beta/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 beta compute backend-services import コマンドを使用してバックエンド サービスに構成をインポートします。

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

    SOURCE.yaml ファイルの名前に置き換えます。

API

AWS Signature Version 4 でバックエンド リクエストを認証するには、backendServicessecuritySettings セクションで、追加の構成オプションを指定します。

バックエンド サービスの場合は、Method: backendServices.insert または Method: backendServices.update API 呼び出しを使用します。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/beta/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: アクセスキーの一意の ID
  • ACCESS_KEY: 認証に使用されるアクセスキー
  • ACCESS_KEY_VERSION(省略可): 鍵バージョンを表すために設定できる一意の名前
  • REGION: Google Cloud リージョンではなく、ストレージ プロバイダに有効なリージョン

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

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

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

次のステップ