Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 CloudFront 使用基于身份的策略(IAM 策略)

本主题提供了基于身份的策略示例,这些示例说明了账户管理员如何将权限策略附加到 IAM 身份(即,用户、组和角色),从而授予对 CloudFront 资源执行操作的权限。

重要

我们建议您首先阅读以下介绍性主题,这些主题说明了管理对 CloudFront 资源的访问的基本概念和选项。有关更多信息,请参阅管理您的 CloudFront 资源的访问权限的概述

下面显示了一个权限策略。Sid 或语句 ID 是可选的。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllCloudFrontPermissions", "Effect": "Allow", "Action": ["cloudfront:*"], "Resource": "*" } ] }

该策略授予执行所有 CloudFront 操作的权限,这足以通过编程方式访问 CloudFront。如果您使用控制台访问 CloudFront,请参阅使用 CloudFront 控制台所需要的权限

有关您为授予或拒绝使用每项操作的权限而指定的操作和 ARN 的列表,请参阅CloudFront API 权限:操作、资源和条件参考

使用 CloudFront 控制台所需要的权限

要授予对 CloudFront 控制台的完全访问权限,您可以在以下权限策略中授予权限:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:*", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:GetMetricStatistics", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets", "s3:PutBucketPolicy" ], "Resource":"arn:aws:s3:::*" } ] }

下面是需要权限的原因:

acm:ListCertificates

如果您使用 CloudFront 控制台创建和更新 Web 分配,并且您希望配置 CloudFront 以要求查看器和 CloudFront 之间或 CloudFront 和源之间使用 HTTPS,您可以查看 ACM 证书列表。

如果您未使用 CloudFront 控制台,则不需要此权限。

cloudfront:*

可让您执行所有 CloudFront 操作。

cloudwatch:DescribeAlarmscloudwatch:PutMetricAlarm

您可以在 CloudFront 控制台中创建和查看 CloudWatch 警报。另请参阅 sns:ListSubscriptionsByTopicsns:ListTopics

如果您未使用 CloudFront 控制台,则不需要这些权限。

cloudwatch:GetMetricStatistics

允许 CloudFront 在 CloudFront 控制台中显示 CloudWatch 指标。

如果您未使用 CloudFront 控制台,则不需要此权限。

elasticloadbalancing:DescribeLoadBalancers

在创建和更新 Web 分配时,您可以查看可用源列表中的 Elastic Load Balancing 负载均衡器的列表。

如果您未使用 CloudFront 控制台,则不需要此权限。

iam:ListServerCertificates

如果您使用 CloudFront 控制台创建和更新 Web 分配,并且您希望配置 CloudFront 以要求查看器和 CloudFront 之间或 CloudFront 和源之间使用 HTTPS,您可以查看 IAM 证书存储中的证书列表。

如果您未使用 CloudFront 控制台,则不需要此权限。

s3:ListAllMyBuckets

当您创建和更新 Web 分配和 RTMP 分配时,您可以执行以下操作:

  • 在可用源列表中查看 S3 存储桶的列表

  • 查看可将访问日志保存到的 S3 存储桶的列表

如果您未使用 CloudFront 控制台,则不需要此权限。

S3:PutBucketPolicy

当您创建或更新将限制对 S3 存储桶的访问的分配时,用户可以更新存储桶策略以授予对 CloudFront 源访问身份的访问权限。有关更多信息,请参阅 使用源访问身份限制对 Amazon S3 内容的访问

如果您未使用 CloudFront 控制台,则不需要此权限。

sns:ListSubscriptionsByTopicsns:ListTopics

在 CloudFront 控制台中创建 CloudWatch 警报时,您可以为通知选择一个 SNS 主题。

如果您未使用 CloudFront 控制台,则不需要这些权限。

waf:GetWebACLwaf:ListWebACLs

您可以在 CloudFront 控制台中查看 AWS WAF Web ACL 列表。

如果您未使用 CloudFront 控制台,则不需要这些权限。

适用于 CloudFront 的 AWS 托管(预定义)策略

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来解决很多常用案例。这些 AWS 托管策略可针对常用案例授予必要的权限,使您免去调查所需权限的工作。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略。对于 CloudFront,IAM 提供了两种托管策略:

  • CloudFrontFullAccess – 授予 CloudFront 资源的完全访问权限。

    重要

    如果您希望 CloudFront 创建和保存访问日志,则您需要授予其他权限。有关更多信息,请参阅配置日志记录和访问您的日志文件所需的权限

  • CloudFrontReadOnlyAccess – 授予 CloudFront 资源的只读访问权限。

注意

您可以登录到 IAM 控制台并在其中搜索特定策略以查看这些权限策略。此外,您还可以创建自定义 IAM 策略以允许 CloudFront API 操作的权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户托管策略示例

您可以创建自己的自定义 IAM 策略以允许 CloudFront API 操作的权限。您可以将这些自定义策略附加到需要指定权限的 IAM 用户或组。当您使用 CloudFront API、AWS 开发工具包或 AWS CLI 时,这些策略将会发挥作用。以下示例显示了几个常见使用案例的权限。有关为用户授予 CloudFront 的完全访问权限的策略,请参阅使用 CloudFront 控制台所需要的权限

示例 1:允许对所有 Web 分配进行读访问

以下权限策略向用户授予在 CloudFront 控制台中查看所有 Web 分配的权限:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListCloudFrontOriginAccessIdentities", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets" ], "Resource":"arn:aws:s3:::*" } ] }

示例 2:允许创建、更新和删除 Web 分配

以下权限策略允许用户使用 CloudFront 控制台来创建、更新和删除 Web 分配:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:CreateDistribution", "cloudfront:DeleteDistribution", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:UpdateDistribution", "cloudfront:ListCloudFrontOriginAccessIdentities", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets", "s3:PutBucketPolicy" ], "Resource":"arn:aws:s3:::*" } ] }

cloudfront:ListCloudFrontOriginAccessIdentities 权限允许用户自动为现有的源访问身份授予 Amazon S3 存储桶中的对象的访问权限。如果您还希望用户能够创建源访问身份,则还需要授予 cloudfront:CreateCloudFrontOriginAccessIdentity 权限。

示例 3:允许创建和列出失效

以下权限策略允许用户创建和列出失效。它包括对 CloudFront 分配的读访问权限,因为您通过先显示分配的设置来创建和查看失效:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:GetDistribution", "cloudfront:GetStreamingDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListCloudFrontOriginAccessIdentities", "cloudfront:CreateInvalidation", "cloudfront:GetInvalidation", "cloudfront:ListInvalidations", "elasticloadbalancing:DescribeLoadBalancers", "iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets" ], "Resource":"arn:aws:s3:::*" } ] }