我想限制对我的 Amazon CloudFront 分配中内容的访问。
要限制对 CloudFront 分配中私有内容的访问,请使用签名 URL 或签名 Cookie。
如果您仅需要使用用户名和密码进行基本身份验证,请使用 Lambda@Edge 或 CloudFront Functions 来设置基本身份验证。
要基于 IP 地址或地理位置限制访问,请配置 CloudFront 以允许或阻止请求。
要通过身份提供者设置安全的用户身份验证,请使用 Lambda@Edge 将 CloudFront 与 OpenID Connect (OIDC) 集成。
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
签名 URL 会在 URL 中嵌入加密签名,以提供对单个文件的临时访问权限。使用签名 URL 可保护对特定资源的访问。
CloudFront 会向客户端发出签名 Cookie,以允许访问某个路径下的多个文件。使用签名 Cookie 可实现更广泛的访问控制。
注意:签名 URL 和签名 Cookie 会使用您创建并与您的分配相关联的加密密钥对。
要使用签名 URL 或签名 Cookie,请完成以下步骤:
创建密钥对
创建密钥对并将密钥对上传到 CloudFront。
创建可信密钥组
配置您的分配
更新您的分配,以将您的可信密钥组用于签名 URL 或签名 Cookie。有关如何配置分配的详细信息,请参阅缓存行为设置。
生成签名 URL 或签名 Cookie
要生成签名 URL,请运行以下 sign AWS CLI 命令:
aws cloudfront sign \ --url "https://your-distribution-domain.cloudfront.net/path/to/file.pdf" \ --key-pair-id "YOUR_KEY_PAIR_ID" \ --private-key file://path/to/your/private-key.pem \ --date-less-than "2024-12-31T23:59:59"
有关 IP 限制等其他选项,请参阅 AWS CLI Command Reference(AWS CLI 命令参考)中的 Options(选项)。
**注意:**您也可以为第三方工具创建签名 URL。
要生成签名 Cookie,请使用适用于您的语言的 AWS SDK。有关代码示例,请参阅使用 PHP 创建签名 Cookie 和使用 AWS SDK 创建签名 URL 和 Cookie。
使用签名 URL 或签名 Cookie
在向 CloudFront 发送的请求中包含签名 URL 或签名 Cookie。
**注意:**要使用 Lambda@Edge 实现您的身份验证逻辑,您必须创建自定义代码。
完成以下步骤:
**注意:**要使用 CloudFront Functions 实现您的身份验证逻辑,您必须创建自定义代码。
执行以下操作之一:
**注意:**AWS WAF 和地理限制仅适用于分配级别,不适用于缓存行为。
**注意:**要进行集成,您必须在应用程序中实现 OIDC 身份验证流程,并获取 ID 令牌,以包含在向 CloudFront 发送的请求中。
Authorization@Edge – How to Use Lambda@Edge and JSON Web Tokens to Enhance Web Application Security(Authorization@Edge – 如何使用 Lambda@Edge 和 JSON Web 令牌增强 Web 应用程序安全性)
External Server Authorization with Lambda@Edge(使用 Lambda@Edge 实现外部服务器授权)
Securing CloudFront distributions using OpenID Connect and AWS Secrets Manager(使用 OpenID Connect 和 AWS Secrets Manager 保护 CloudFront 分配)