メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

CloudFront でアイデンティティベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者が IAM ID (ユーザー、グループ、ロール) にアクセス権限ポリシーをアタッチし、それによって CloudFront リソースでオペレーションを実行するアクセス権限を付与する方法を示す ID ベースのポリシーの例を示します。

重要

初めに、CloudFront リソースへのアクセスを管理するための基本概念とオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「CloudFront リソースへのアクセス権限の管理の概要」を参照してください。

以下に示しているのは、アクセス権限ポリシーです。Sid (ステートメント ID) はオプションです。

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

ポリシーでは、すべての CloudFront オペレーションを実行するアクセス権限を付与します。これは、プログラムで CloudFront にアクセスするために十分なアクセス権限です。コンソールを使用して CloudFront にアクセスする場合は、「CloudFront コンソールを使用するために必要なアクセス権限」を参照してください。

各アクションを使用するアクセス権限を付与または拒否するために指定するアクションおよび ARN のリストについては、「CloudFront API のアクセス権限: アクション、リソース、条件リファレンス」を参照してください。

CloudFront コンソールを使用するために必要なアクセス権限

CloudFront コンソールへのフルアクセスを許可するには、次のアクセス権限ポリシーでアクセス権限を付与します。

Copy
{ "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 とオリジン間で HTTPS を要求するように CloudFront を設定する必要があるときに、ACM 証明書のリストを表示できます。

CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。

cloudfront:*

すべての CloudFront アクションを実行できます。

cloudwatch:DescribeAlarms および cloudwatch:PutMetricAlarm

CloudFront コンソールで CloudWatch アラームを作成および表示できます。「sns:ListSubscriptionsByTopic」および「sns:ListTopics」も参照してください。

CloudFront コンソールを使用していない場合、これらのアクセス権限は必要ありません。

cloudwatch:GetMetricStatistics

CloudFront コンソールで、CloudFront が CloudWatch メトリクスをレンダリングします。

CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。

elasticloadbalancing:DescribeLoadBalancers

ウェブディストリビューションを作成および更新するときに、使用できるオリジンのリストで、Elastic Load Balancing ロードバランサーのリストを表示できます。

CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。

iam:ListServerCertificates

CloudFront コンソールを使用してウェブディストリビューションを作成および更新していて、ビューワーと CloudFront 間、または CloudFront とオリジン間で HTTPS を要求するよう CloudFront を設定するときに、IAM 証明書ストアで証明書のリストを表示できます。

CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。

s3:ListAllMyBuckets

ウェブおよび RTMP ディストリビューションを作成および更新するときに、次のオペレーションを実行できます。

  • 使用できるオリジンのリストで S3 バケットのリストを表示する

  • アクセスログを保存できる S3 バケットのリストを表示する

CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。

S3:PutBucketPolicy

S3 バケットへのアクセスを制限するディストリビューションを作成または更新するときに、ユーザーがバケットポリシーを更新して、CloudFront オリジンのアクセス ID へのアクセス権を付与できます。詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する」を参照してください。

CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。

sns:ListSubscriptionsByTopic および sns:ListTopics

CloudFront コンソールの CloudWatch アラームを作成するときに、通知の SNS トピックを選択できます。

CloudFront コンソールを使用していない場合、これらのアクセス権限は必要ありません。

waf:GetWebACL および waf:ListWebACLs

CloudFront コンソールで AWS WAF ウェブ ACL のリストを表示できます。

CloudFront コンソールを使用していない場合、これらのアクセス権限は必要ありません。

CloudFront での AWS 管理 (事前定義) ポリシー

AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的ユースケースに対応します。これらの AWS 管理ポリシーは、一般的ユースケースに必要なアクセス権限を付与することで、どの権限が必要なのかをユーザーが調査する必要をなくすことができます。詳細については、『IAM ユーザーガイド』の「AWS 管理ポリシー」を参照してください。CloudFront で、IAM は 2 つの管理ポリシーを提供します。

  • CloudFrontFullAccess – CloudFront リソースへのフルアクセスを付与します。

    重要

    CloudFront でアクセスログを作成および保存するには、追加のアクセス許可を付与する必要があります。詳細については、「ロギングの設定およびログファイルへのアクセスに必要なアクセス許可」を参照してください。

  • CloudFrontReadOnlyAccess – CloudFront リソースへの読み取り専用アクセスを付与します。

注記

IAM コンソールにサインインし、特定のポリシーを検索することで、これらのアクセス権限ポリシーを確認することができます。独自のカスタム IAM ポリシーを作成して、CloudFront API オペレーションにアクセス権限を付与することもできます。これらのカスタムポリシーは、それらのアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。

お客様が管理するポリシーの例

独自のカスタム IAM ポリシーを作成して、CloudFront API アクションにアクセス権限を付与することもできます。これらのカスタムポリシーは、指定されたアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。これらのポリシーは、CloudFront API、AWS SDK、または AWS CLI を使用しているときに機能します。次の例では、いくつかの一般的ユースケースのアクセス権限を示します。CloudFront へのフルアクセスをユーザーに許可するポリシーについては、「CloudFront コンソールを使用するために必要なアクセス権限」を参照してください。

例 1: すべてのウェブディストリビューションへの読み取りアクセスを許可する

次のアクセス権限ポリシーでは、CloudFront コンソールですべてのウェブディストリビューションを表示するユーザーアクセス権限を付与します。

Copy
{ "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 コンソールを使用して、ウェブディストリビューションを作成、更新、削除できるようにします。

Copy
{ "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 ディストリビューションへの読み取りアクセスが含まれます。これは、最初にディストリビューション用の設定を表示して、無効化を作成および表示するためです。

Copy
{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:GetDistribution", "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:::*" } ] }