本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon CloudFront 的身分型政策範例
根據預設,使用者和角色不具備建立或修改 CloudFront 資源的權限。他們也無法使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 AWS API 來執行任務。若要授予使用者對其所需資源執行動作的許可,IAM 管理員可以建立 IAM 政策。然後,管理員可以將 IAM 政策新增至角色,使用者便能擔任這些角色。
如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策,請參閱《IAM 使用者指南》中的建立 IAM 政策 (主控台)。
如需 CloudFront 所定義之動作和資源類型的詳細資訊,包括每種資源類型的 ARN 格式,請參閱《服務授權參考》中 Amazon CloudFront 適用的動作、資源和條件索引鍵。
政策最佳實務
以身分為基礎的政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 CloudFront 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時,請遵循下列準則及建議事項:
-
開始使用 AWS 受管政策並邁向最低權限許可 – 若要開始將許可授予您的使用者和工作負載,請使用 AWS 受管政策來授予許多常見使用案例的許可。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策,進一步減少許可。如需更多資訊,請參閱 IAM 使用者指南中的 AWS 受管政策或任務職能的AWS 受管政策。
-
套用最低權限許可 – 設定 IAM 政策的許可時,請僅授予執行任務所需的許可。為實現此目的,您可以定義在特定條件下可以對特定資源採取的動作,這也稱為最低權限許可。如需使用 IAM 套用許可的更多相關資訊,請參閱 IAM 使用者指南中的 IAM 中的政策和許可。
-
使用 IAM 政策中的條件進一步限制存取權 – 您可以將條件新增至政策,以限制動作和資源的存取。例如,您可以撰寫政策條件,指定必須使用 SSL 傳送所有請求。如果透過特定 使用服務動作,您也可以使用條件來授予存取服務動作的權限 AWS 服務,例如 AWS CloudFormation。如需詳細資訊,請參閱 IAM 使用者指南中的 IAM JSON 政策元素:條件。
-
使用 IAM Access Analyzer 驗證 IAM 政策,確保許可安全且可正常運作 – IAM Access Analyzer 驗證新政策和現有政策,確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議,可協助您撰寫安全且實用的政策。如需詳細資訊,請參閱《IAM 使用者指南》中的使用 IAM Access Analyzer 驗證政策。
-
需要多重要素驗證 (MFA):如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶,請開啟 MFA 以增加安全性。如需在呼叫 API 操作時請求 MFA,請將 MFA 條件新增至您的政策。如需詳細資訊,請參閱《IAM 使用者指南》https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html中的透過 MFA 的安全 API 存取。
如需 IAM 中最佳實務的相關資訊,請參閱 IAM 使用者指南中的 IAM 安全最佳實務。
允許使用者檢視他們自己的許可
此範例會示範如何建立政策,允許 IAM 使用者檢視附加到他們使用者身分的內嵌及受管政策。此政策包含在主控台上完成此動作的許可,或使用 AWS CLI 或 AWS API 以程式設計方式完成此動作的許可。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
透過程式設計方式存取 CloudFront 的許可
以下說明許可政策。Sid
(陳述式 ID) 為選用。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllCloudFrontPermissions", "Effect": "Allow", "Action": ["cloudfront:*"], "Resource": "*" } ] }
此政策授予執行所有 CloudFront 操作的許可,足夠以程式設計方式存取 CloudFront。如果您使用主控台存取 CloudFront,請參閱使用 CloudFront 主控台所需的許可。
如需指定以授予或拒絕使用每個動作的許可的動作和 ARN 清單,請參閱《服務授權參考》中的 Amazon CloudFront 的動作、資源及條件索引鍵。
使用 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: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 之間或 CloudFront 與原始伺服器之間必須使用 HTTPS,許可會讓您可查看 IAM 憑證存放區中的憑證清單。
如果不是使用 CloudFront 主控台,不需要此許可。
s3:ListAllMyBuckets
-
當您建立和更新分佈,可以執行以下操作:
-
檢視在可用的原始伺服器清單中的 S3 儲存貯體清單
-
檢視可以保存存取記錄的 S3 儲存貯體清單
如果不是使用 CloudFront 主控台,不需要此許可。
-
S3:PutBucketPolicy
-
當您建立或更新限制存取 S3 儲存貯體的分佈時,許可會讓使用者可更新儲存貯體政策來授予對 CloudFront 原始存取身分的存取權。如需詳細資訊,請參閱使用原始存取身分 (舊版,不建議)。
如果不是使用 CloudFront 主控台,不需要此許可。
sns:ListSubscriptionsByTopic
和sns:ListTopics
-
當您在 CloudFront 主控台中建立 CloudWatch 警示時,讓您可為通知選擇 SNS 主題。
如果不是使用 CloudFront 主控台,不需要這些許可。
waf:GetWebACL
和waf:ListWebACLs
-
可讓您在 CloudFront 主控台中檢視 AWS WAF Web ACLs 的清單。
如果不是使用 CloudFront 主控台,不需要這些許可。
CloudFront 主控台的僅限許可動作
您可以在 CloudFront Security Savings Bundle 頁面上執行下列 CloudFront
動作 | 描述 |
---|---|
|
准許建立新的節省計劃。 |
|
准許取得節省計劃。 |
|
准許列出帳戶的 CloudFront 費率卡。 |
|
准許列出帳戶中的節省計劃。 |
|
准許列出 CloudFront 用量。 |
|
准許更新節省計劃。 |
備註
-
如需 CloudFront 節省計劃的詳細資訊,請參閱 Amazon CloudFront 常見問答集中的 CloudFront 安全節省方案一節。 Amazon CloudFront FAQs
-
如果您為 CloudFront 建立節省計劃,然後想要稍後刪除,請聯絡 AWS 支援
。
客戶受管政策範例
您可以建立自訂 IAM 政策,授予執行 CloudFront API 動作的相關許可。您可以將這些自訂政策連接至需要指定許可的 IAM 使用者或群組。這些政策會在您使用 CloudFront API、 AWS 開發套件或 AWS 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:::*" } ] }
範例 4:允許建立分佈
下列許可政策授予使用者在 CloudFront 主控台中建立和列出分佈的許可。針對 CreateDistribution
動作,請指定 的萬用字元 (*),Resource
而非分佈 ARN 的萬用字元 (arn:aws:cloudfront::123456789012:distribution/*
)。如需 Resource
元素的詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素:資源。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "cloudfront:CreateDistribution", "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "cloudfront:ListDistributions", "Resource": "*" } ] }