本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用端點策略控制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
"" ] } ] }