防止跨環境 Amazon S3 儲存貯體存取 - AWS Elastic Beanstalk

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

防止跨環境 Amazon S3 儲存貯體存取

本主題說明受管政策如何允許跨環境 S3 儲存貯體存取,以及如何建立自訂政策來管理此類型的存取。

Elastic Beanstalk 提供託管政策,以處理您帳戶中 Elastic Beanstalk 環境所需的 AWS 資源。 AWS 預設情況下提供給您 AWS 帳戶中某個應用程式的許可,可存取屬於同一 AWS 帳戶中其他應用程式的 S3 資源。

如果您的 AWS 帳戶執行多個 Beanstalk 應用程式,您可以建立自己的自訂政策以附加至每個環境的服務角色執行個體設定檔,藉此降低原則的安全性範圍。然後,您可以將自訂政策中的 S3 許可限制在特定環境中。

注意

請注意,您必須負責維護自訂原則。如果您的自訂原則所依據的 Elastic Beanstalk 受管政策發生變更,您將需要根據基本原則的個別變更來修改自訂原則。如需 Elastic Beanstalk 管理原則的變更記錄,請參閱。受管理政策的 Elastic Beanstalk 更新 AWS

關閉範圍權限的範例

下列範例是以AWSElasticBeanstalkWebTier受管理的策略為基礎。

預設政策包括 S3 儲存貯體許可的下列幾行。此預設政策不會將 S3 儲存貯體動作限制在特定環境或應用程式。

{ "Sid" : "BucketAccess", "Action" : [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect" : "Allow", "Resource" : [ "arn:aws:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*" ] }

您可以將特定資源限定為指定為的服務角色,以縮小存取範圍Principal。下列範例提供具有 id 之環境中 S3 儲存貯體的自訂服務角色aws-elasticbeanstalk-ec2-role-my-example-env許可my-example-env-ID

範例 僅將權限授予特定環境的 S3 儲存貯體
{ "Sid": "BucketAccess", "Action": [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::...:role/aws-elasticbeanstalk-ec2-role-my-example-env" }, "Resource": [ "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345", "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345/resources/environments/my-example-env-ID/*" ] }
注意

資源ARN必須包含 Elastic Beanstalk 環境 ID(不是環境名稱)。您可以從「環境概觀」頁面上的 Elastic Beanstalk 主控台取得環境識別碼。您也可以使用 AWS CLI 描述環境指令來取得此資訊。

如需協助您更新 Elastic Beanstalk 環境的 S3 儲存貯體許可的詳細資訊,請參閱下列資源: