为 CloudFront 使用基于身份的策略(IAM 策略) - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

重要

我们建议您首先阅读以下介绍性主题,这些主题说明了可用于管理 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 控制台创建和更新分配,并且希望配置 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

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

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

iam:ListServerCertificates

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

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

s3:ListAllMyBuckets

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

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

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

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

S3:PutBucketPolicy

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

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

sns:ListSubscriptionsByTopicsns:ListTopics

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

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

waf:GetWebACLwaf:ListWebACLs

允许您在 CloudFront 控制台中查看 Amazon WAF Web ACL 的列表。

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

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

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

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

    重要

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

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

注意

您可以通过登录到 IAM 控制台并在该控制台中搜索特定策略来查看这些权限策略。此外,您还可以创建自己的自定义 IAM 策略,以授予执行 CloudFront API 操作的相关权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户管理的策略示例

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

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

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

{ "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:允许创建、更新和删除分配

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

{ "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:::*" } ] }