配置专用源站身份验证

本页面简要介绍专用源站身份验证以及将其用于 Cloud CDN 的说明。

专用源站身份验证可让 Cloud CDN 长期访问私有 Amazon S3 存储分区或其他兼容的对象存储区。使用专用源站可防止客户端绕过 Cloud CDN 直接访问您的源站。

具有全球外部应用负载均衡器或传统应用负载均衡器的 Cloud CDN 均支持此功能。

专用源站身份验证是面向源站的,而签名网址签名 Cookie 是面向客户端的。您可以为相同的内容启用这两项。专用源站身份验证可限制对源站和内容的非 CDN 访问。签名网址和 Cookie 用于控制哪些用户可以访问 Cloud CDN。

准备工作

为专用源站配置身份验证

如需配置专用源站身份验证,请按照以下说明操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud CDN 页面。

    转到 Cloud CDN

  2. 点击您要配置的来源的名称。来源必须为自定义来源类型。

  3. 来源详情页面上,点击修改按钮。

  4. 如需前往主机和路径规则部分,请点击下一步

  5. 如需前往缓存性能部分,请点击下一步

  6. 不公开源站身份验证部分,选择使用 AWS 签名版本 4 对此源站的请求进行身份验证。然后,指定以下信息:

    • 密钥 ID:Amazon S3 存储桶或其他兼容对象存储区的访问密钥。
    • 密钥:用于向对象存储进行身份验证的密钥。如果您使用的是专用 Cloud Storage 存储桶,请指定 HMAC 密钥。
    • 密钥版本:用于表示密钥版本的唯一名称。
    • 区域:对象存储分区所在的区域,例如 us-east-1
  7. 点击完成

gcloud

  1. 使用 gcloud compute backend-services export 命令将专用源站的后端配置导出到 YAML 文件:

    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 替换为 YAML 文件的名称。

API

如需使用 HMAC 密钥对后端请求进行身份验证,请在 backendServicessecuritySettings 部分中指定下列额外的配置选项。

使用 Method: backendServices.insertMethod: 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 授权标头。

缓存经过专用身份验证的响应

您可能需要确保 Cloud CDN 缓存经过专用身份验证的内容。

为此,请将缓存模式设置为强制缓存所有内容并指定 TTL,以便缓存从源站传送的所有内容。

或者,如果您不想强制以相同方式缓存所有内容,请将缓存模式更改为使用基于 Cache-Control 标头的源站设置缓存静态内容,并确保为从源站提供的内容正确设置 Cache-Control 标头。

后续步骤