

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 環境間の Amazon S3 バケットアクセスの防止
<a name="AWSHowTo.iam.cross-env-s3-access"></a>

このトピックでは、管理ポリシーが環境間の S3 バケットアクセスを許可する場合がある状況と、このタイプのアクセスを管理するカスタムポリシーを作成する方法について説明します。

Elastic Beanstalk には、 AWS アカウントの Elastic Beanstalk 環境に必要な AWS リソースを処理するためのマネージドポリシーが用意されています。 AWS アカウント内の 1 つのアプリケーションにデフォルトで提供されるアクセス許可は、同じ AWS アカウントの他のアプリケーションに属する S3 リソースにアクセスできます。

 AWS アカウントが複数の Beanstalk アプリケーションを実行している場合は、環境ごとに独自の[サービスロール](iam-servicerole.md#iam-servicerole-create)または[インスタンスプロファイル](iam-instanceprofile.md#iam-instanceprofile-create)にアタッチする独自の[カスタムポリシー](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)を作成することで、ポリシーのセキュリティの範囲を絞り込むことができます。そうすると、カスタムポリシーの S3 アクセス許可を特定の環境に制限できます。

**注記**  
カスタムポリシーをメンテナンスする責任はお客様にあることに注意してください。カスタムポリシーのベースになっている Elastic Beanstalk 管理ポリシーが変更された場合は、ベースのポリシーに対する各変更についてカスタムポリシーを変更する必要があります。Elastic Beanstalk 管理ポリシーの変更履歴については、「[AWS マネージドポリシーに対する Elastic Beanstalk の更新](security-iam-awsmanpol.md#security-iam-awsmanpol-updates)」を参照してください。

## スコープダウンされたアクセス許可の例
<a name="AWSHowTo.iam.cross-env-s3-access.example-env-ID"></a>

次の例は、[AWSElasticBeanstalkWebTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWebTier.html) 管理ポリシーに基づいています。

デフォルトのポリシーには、S3 バケットへのアクセス許可に次の行が含まれます。このデフォルトポリシーは、S3 バケットアクションを特定の環境またはアプリケーションに制限しません。

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

特定のリソースを `Principal` として指定されたサービスロールに認定することで、アクセスをスコープダウンできます。次の例では、ID `my-example-env-ID` の環境内の S3 バケットに対するカスタムサービスロール `aws-elasticbeanstalk-ec2-role-my-example-env` のアクセス許可を示します。

**Example 特定の環境の 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 を含める必要があります。環境 ID は、Elastic Beanstalk コンソールの [[環境の概要]](environments-dashboard.md) ページから取得できます。 AWS CLI [ describe-environments](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html) コマンドを使用して、この情報を取得することもできます。

Elastic Beanstalk 環境の S3 バケットのアクセス許可を更新する方法の詳細については、次のリソースを参照してください。
+ このガイドの「[Amazon S3 で Elastic Beanstalk を使用する](AWSHowTo.S3.md)」
+ 「サービス認証リファレンス」ガイドの「[Amazon S3 で定義されるリソースタイプ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-resources-for-iam-policies)」
+ 「IAM ユーザーガイド」の「[ARN 形式](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)」