在 GCP Cloud CDN 中,您可以使用带有身份验证的签名 URL 或签名 cookie 来授权用户并为他们提供访问受保护内容的限时令牌,因此 Cloud CDN 不会阻止没有签名查询参数或 Cloud- CDN-Cookie HTTP cookie。它拒绝具有无效(或其他格式错误)请求参数的请求,因此我建议检查您的浏览器客户端安全设置;如何将身份验证管理到您的 CDN URL。如果安全策略允许,一些客户端默认存储 cookie,还要检查您的 CDN URL 安全入口是如何配置的,因为当您使用带有签名 cookie 的 CDN URL 时,对签名和未签名请求的响应会分别缓存,因此成功响应一个有效的签名请求永远不会用于服务一个未签名的请求。
确保已启用 Cloud CDN。
如有必要,请更新到最新版本的 Google Cloud CLI:
`gcloud components update`
为您的签名 URL 创建密钥
要创建密钥,请按照以下步骤操作。
1.In the Google Cloud Console, go to the Cloud CDN page.
2.Click Add origin.
3.Select an HTTP(S) load balancer as the origin.
4.Select backend services or backend buckets. For each one
-Click Configure, and then click Add signing key.
-Under Name, give the new signing key a name.
-Under the Key creation method, select Automatically generate or Let me enter.
- If you're entering your own key, type the key into the text field.
- Click Done.
- Under Cache entry maximum age, provide a value, and select a Unit of time from the drop-down list. You can choose among second, minute, hour, and day. The maximum amount of time is three (3) days.
5. Click Save.
6. Click Add.
配置云存储权限。
在运行以下命令之前,至少向项目中的后端存储桶添加一个密钥;否则,该命令将失败并出现错误,因为在您为项目添加一个或多个密钥之前,不会创建 Cloud CDN 缓存填充服务帐户。将 PROJECT_NUM 替换为您的项目编号,将 BUCKET 替换为您的存储桶。
gsutil iam ch \ serviceAccount:service-PROJECT_NUM@cloud-cdn-fill.iam.gserviceaccount.com:objectViewer \ gs://BUCKET
列出后端服务或后端存储桶上的密钥,运行以下命令之一:
gcloud compute backend-services describe BACKEND_NAME
gcloud compute backend-buckets describe BACKEND_NAME
签署 URL 并分发它们。
gcloud compute sign-url
您可以使用命令或使用您自己编写的代码对URL 进行签名 。如果您需要许多签名 URL,自定义代码可以提供更好的性能。此命令从 读取并解码 base64url 编码的密钥值KEY_FILE_NAME
,然后输出一个签名的 URL,您可以将其用于给定 URL 的 GET 或 HEAD 请求。
gcloud compute sign-url \
"https://example.com/media/video.mp4" \
--key-name my-test-key \
--expires-in 30m \
--key-file sign-url-key-file
在此链接中,您可以找到与签名 URL 和签名 cookie 相关的更多信息。