使用端點策略控制VPC端點的存取 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用端點策略控制VPC端點的存取

本主題說明如何將策略附加到VPC端點,以控制對應用程式(您的服務)和 Elastic Beanstalk 環境的存取。

端點策略是 AWS Identity and Access Management (IAM) 控制從端點到指定服務之存取的資源策略。端點政策是端點特有的。它與您的環境可能具有的任何使用者或執行個體IAM原則分開,而且不會覆寫或取代它們。

根據預設,VPC端點允許對與其關聯的服務的完整存取權。建立或修改端點時,您可以將端點策略附加至端點,以控制對與服務相關聯之特定資源的存取。如需有關撰寫和使用VPC端點策略的詳細資訊,請參閱中的使用VPC端點策略控制端點的存AWS PrivateLink 指南

注意

建立限制性端點策略時,您可能需要將特定權限新增至所需資源,以便端點策略不會封鎖對這些資源的存取。這樣做可確保您的環境繼續部署並正常運作。

下列範例會拒絕所有使用者透過VPC端點終止環境的權限,並允許所有其他動作的完整存取權。

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "elasticbeanstalk:TerminateEnvironment", "Effect": "Deny", "Resource": "*", "Principal": "*" } ] }

限制性VPC端點政策所需的 Amazon S3 儲存貯體許可

如果對VPC端點政策新增限制,則必須包含特定的 Amazon S3 儲存貯體許可,以確保您的環境能夠繼續部署和正常運作。本節說明必要的 S3 儲存貯體,並包含範例政策。

存放資產以管理環境平台的 S3 儲存貯體

Elastic Beanstalk 服務擁有 S3 儲存貯體,可儲存與解決方案堆疊 (平台版本) 相關聯的資產。這些資產包括設定檔、範例應用程式和可用的執行個體類型。當 Elastic Beanstalk 創建和管理您的環境時,它會從資產存儲桶中為每個對應的特定平台版本檢索所需的信息 AWS 區域.

儲存貯體 ARN

arn:aws:s3:::elasticbeanstalk-samples-region

Amazon Linux 2 及更新版本

  • arn:aws:s3:::elasticbeanstalk-platform-assets-region

    注意

    值區名稱遵循BJS區域的不同慣例。字符串 public-beta-cn-north-1 用於代替 region。 例如,arn:aws:s3:::elasticbeanstalk-platform-assets-public-beta-cn-north-1.

視窗伺服器、Amazon Linux (AMI)、Amazon Linux 2 及更高版本

  • arn:aws:s3:::elasticbeanstalk-env-resources-region

  • arn:aws:s3:::elasticbeanstalk-region

作業

GetObject

VPC端點策略範例

下列範例說明如何在美國東部 (俄亥俄) 區域 (us-east-2) 提供 Elastic Beanstalk 作業所需 S3 儲存貯體的存取權。這個範例會列出 Amazon Linux 和視窗伺服器平台的所有儲存貯體。更新您的政策,以僅包含適用於您環境作業系統的值區。

重要

我們建議您避免在這個政策中的特定區域使用萬用字元 (*)。例如,使用 arn:aws:s3:::cloudformation-waitcondition-us-east-2/* 而不使用 arn:aws:s3:::cloudformation-waitcondition-*/*。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域,我們建議您為每個區域重複第一個區Statement塊。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsToAWSResources", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::elasticbeanstalk-platform-assets-us-east-2/*", "arn:aws:s3:::elasticbeanstalk-env-resources-us-east-2/*", "arn:aws:s3:::elasticbeanstalk-env-resources-us-east-2/*", "arn:aws:s3:::elasticbeanstalk-samples-us-east-2/*" ] } ] }

S3 儲存貯體擁有者 AWS CloudFormation

Elastic Beanstalk 用途 AWS CloudFormation 為您的環境建立資源。 CloudFormation 每個都擁有 S3 存儲桶 AWS 區域 監視等待條件的響應。

Elastic Beanstalk 等服務會傳 CloudFormation 送請求到擁有的 S3 儲存貯體的預先簽署的 Amazon S3 URL 來與之通訊。 CloudFormation CloudFormation 使用cloudformation.amazonaws.com服務主體建立預先簽署URL的 Amazon S3。

如需詳細資訊,請參閱中的 CloudFormation VPC端點考量 AWS CloudFormation 用戶指南。若要進一步了解預先簽署URLs,請參閱 Amazon S3 使用者指南URLs中的使用預先簽署

儲存貯體 ARN

  • arn:aws:s3:::cloudformation-waitcondition-region

    使用等待條件時,區域名稱會包含破折號。例如,us-west-2

  • arn:aws:s3:::cloudformation-custom-resource-response-region

    使用自訂資源時,區域名稱不包含破折號。例如,最新 2。

作業

GetObject

VPC端點策略範例

下列範例說明如何在美國東部 (俄亥俄) 區域 (us-east-2) 提供 Elastic Beanstalk 作業所需 S3 儲存貯體的存取權。

重要

我們建議您避免在這個政策中的特定區域使用萬用字元 (*)。例如,使用 arn:aws:s3:::cloudformation-waitcondition-us-east-2/* 而不使用 arn:aws:s3:::cloudformation-waitcondition-*/*。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域,我們建議您為每個區域重複第一個區Statement塊。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsToCloudFormation", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::cloudformation-waitcondition-us-east-2/*", "arn:aws:s3:::cloudformation-custom-resource-response-us-east-2/*" ] } ] }

客戶帳戶擁有的 S3 儲存貯體,用於存放原始程式碼和其他項目

此儲存貯體由 AWS 擁有環境的客戶帳戶。它存儲特定於您的環境的資源,例如源代碼和請求的日誌。

儲存貯體 ARN

arn:aws:s3:::elasticbeanstalk-region-account-id

作業

  • GetObject

  • GetObjectAcl

  • PutObject

  • PutObjectAcl

  • ListBucket

VPC端點策略範例

下列範例說明如何在美國東部 (俄亥俄) 區域 (us-east-2) 提供 Elastic Beanstalk 作業所需 S3 儲存貯體的存取權,以及範例 AWS 帳戶識別碼 123456789012。

重要

我們建議您避免在這個政策中的特定區域使用萬用字元 (*)。例如,使用 arn:aws:s3:::cloudformation-waitcondition-us-east-2/* 而不使用 arn:aws:s3:::cloudformation-waitcondition-*/*。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域,我們建議您為每個區域重複第一個區Statement塊。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsToCustomerItems", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["GetObject", "GetObjectAcl", "PutObject", "PutObjectAcl", "ListBucket" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/*" ] } ] }

客戶帳戶擁有的 S3 儲存貯體,可支援 Docker 登錄驗證

此值區僅適用於以 Docker 平台為基礎的環境。儲存貯體會將用於驗證的檔案儲存到私有 Docker 登錄,該登錄位於客戶佈建的 S3 儲存貯體上。如需詳細資訊,請參閱本指南中的 Docker 平台一章中的使用 Dockerrun.aws.json v3 檔案

儲存貯體 ARN

根ARN據客戶帳戶而異。

S3 儲存貯體ARN的格式如下:arn:aws:s3:::bucket-name

作業

GetObject

VPC端點策略範例

下列範例說明如何提供對名稱為 amzn-S3-示範儲存貯體 1 的 S3 儲存貯體的存取權。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsToDockerRegistryAuth", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["GetObject"], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] } ] }

更新您的VPC端點政策

由於VPC端點只附加了一個策略,因此您必須將所有權限合併到一個策略中。下面的例子提供了所有先前的例子合併為一個。

如需有關撰寫和使用VPC端點策略的詳細資訊,請參閱中的使用VPC端點策略控制端點的存AWS PrivateLink 指南

與前面的範例一樣,下列範例說明如何在美國東部 (俄亥俄) 區域 (us-east-2) 提供 Elastic Beanstalk 作業所需 S3 儲存貯體的存取權。它還包括帶示例的桶 AWS 帳戶識別碼 123456789012 和範例儲存貯體名稱和三-示範儲存貯體 1。

重要

我們建議您避免在這個政策中的特定區域使用萬用字元 (*)。例如,使用 arn:aws:s3:::cloudformation-waitcondition-us-east-2/* 而不使用 arn:aws:s3:::cloudformation-waitcondition-*/*。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域,我們建議您為每個區域重複第一個區Statement塊。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsToAWSResources", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::elasticbeanstalk-platform-assets-us-east-2/*", "arn:aws:s3:::elasticbeanstalk-env-resources-us-east-2/*", "arn:aws:s3:::elasticbeanstalk-env-resources-us-east-2/*", "arn:aws:s3:::elasticbeanstalk-samples-us-east-2/*" ] }, { "Sid": "AllowRequestsToCloudFormation", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::cloudformation-waitcondition-us-east-2/*", "arn:aws:s3:::cloudformation-custom-resource-response-us-east-2/*" ] }, { "Sid": "AllowRequestsToCustomerItems", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["GetObject", "GetObjectAcl", "PutObject", "PutObjectAcl", "ListBucket" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/*" ] }, { "Sid": "AllowRequestsToDockerRegistryAuth", "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": ["GetObject"], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1"" ] } ] }