このページでは、非公開送信元の認証の概要と、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
非公開送信元のバックエンド構成を
.yaml
ファイルにエクスポートするには、gcloud beta compute backend-services export
コマンドを使用します。gcloud beta compute backend-services export BACKEND_SERVICE_NAME \ [--destination=DESTINATION]
DESTINATION
は.yaml
ファイルの名前に置き換えます(例:my-private-origin.yaml
)。backendServices
のsecuritySettings
セクションで次の構成オプションを指定して、AWS Signature Version 4 でバックエンド リクエストを認証します。securitySettings: awsV4Authentication: accessKeyId: ACCESS_KEY_ID accessKey: ACCESS_KEY accessKeyVersion: ACCESS_KEY_VERSION originRegion: REGION …]
次のように置き換えます。
ACCESS_KEY_ID
: アクセスキーの一意の IDACCESS_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
非公開送信元を更新するには、
gcloud beta compute backend-services import
コマンドを使用してバックエンド サービスに構成をインポートします。gcloud beta compute backend-services import BACKEND_SERVICE_NAME \ [--source=SOURCE]
SOURCE
は.yaml
ファイルの名前に置き換えます。
API
AWS Signature Version 4 でバックエンド リクエストを認証するには、backendServices
の securitySettings
セクションで、追加の構成オプションを指定します。
バックエンド サービスの場合は、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
: アクセスキーの一意の IDACCESS_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 ヘッダーを生成します。