

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

# Elastic Beanstalk ユーザーポリシーの管理
<a name="AWSHowTo.iam.managed-policies"></a>

AWS Elastic Beanstalk には、Elastic Beanstalk が管理するすべてのリソースへのフルアクセスまたは読み取り専用アクセスを割り当てることができる 2 つの管理ポリシーが用意されています。ポリシーは、 AWS Identity and Access Management (IAM) ユーザーまたはグループ、またはユーザーが引き受けるロールにアタッチできます。

**管理ユーザーポリシー**
+ **AdministratorAccess-AWSElasticBeanstalk** – Elastic Beanstalk アプリケーション、アプリケーションバージョン、設定の構成、環境、およびそれらの基盤となるリソースを作成、変更、削除するための、完全な管理者権限をユーザーに付与します。マネージドポリシーの内容を表示するには、「*AWS マネージドポリシーリファレンスガイド*」の「[AdministratorAccess-AWSElasticBeanstalk](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess-AWSElasticBeanstalk.html)」ページを参照してください。
+ **AWSElasticBeanstalkReadOnly** – ユーザーにアプリケーションおよび環境を表示することを許可します。ただし、それらを変更するオペレーションは許可しません。すべての Elastic Beanstalk リソース、および Elastic Beanstalk コンソールが取得する他の AWS リソースへの読み取り専用アクセスを提供します。読み取り専用アクセスでは、Elastic Beanstalk ログを読むためのダウンロードなどのアクションは実行できません。これは、Amazon S3 バケットにログがステージングされるので、Elastic Beanstalk にそのバケットに対する書き込みアクセス許可が必要なためです。Elastic Beanstalk ログへのアクセスを有効にする方法については、このトピックの最後の例を参照してください。マネージドポリシーの内容を表示するには、「*AWS マネージドポリシーリファレンスガイド*」の「[AWSElasticBeanstalkReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkReadOnly.html)」ページを参照してください。

**重要**  
Elastic Beanstalk マネージド型ポリシーは、詳細なアクセス権限を提供しません。Elastic Beanstalk アプリケーションの操作に必要となる可能性のある、すべてのアクセス権限が付与されます。場合によっては、管理ポリシーのアクセス許可をさらに制限することもできます。1 つのユースケースの例については、「[環境間の Amazon S3 バケットアクセスの防止](AWSHowTo.iam.cross-env-s3-access.md)」を参照してください。  
また、当社の管理ポリシーでは、Elastic Beanstalk では管理されておらず、お客様によりソリューションに追加されるような、カスタムリソースのためのアクセス許可についてもサポートしていません。よりきめの細かなアクセス許可、必要最小限のアクセス許可、またはリソースに対するアクセス許可をカスタムで作成するには、[カスタムポリシー](#AWSHowTo.iam.policies)を使用します。

**非推奨の マネージドポリシー**  
以前は、Elastic Beanstalk では、**AWSElasticBeanstalkFullAccess** と **AWSElasticBeanstalkReadOnlyAccess** という、他の 2 つの管理ユーザーポリシーをサポートしていました。これらの古いポリシーは廃止する予定です。これらは、IAM コンソールで、引き続き表示および使用できる場合があります。ただし、新しい管理ユーザーポリシーを使用することと、(それが存在する場合は) カスタムポリシーを追加して、カスタムリソースにアクセス許可を付与することをお勧めします。

## 他のサービスとの統合に関するポリシー
<a name="iam-userpolicies-managed-other-services"></a>

また、必要に応じて、環境を他のサービスと統合することを許可する、より詳細なポリシーも指定します。
+ **AWSElasticBeanstalkRoleCWL** – 環境が Amazon CloudWatch Logs ロググループを管理できるようにします。
+ **AWSElasticBeanstalkRoleRDS** – 環境が Amazon RDS インスタンスを統合できるようにします。
+ **AWSElasticBeanstalkRoleWorkerTier** – ワーカー環境階層が Amazon DynamoDB テーブルと Amazon SQS キューを作成できるようにします。
+ **AWSElasticBeanstalkRoleECS** – マルチコンテナ Docker 環境が Amazon ECS クラスターを管理できるようにします。
+ **AWSElasticBeanstalkRoleCore** – ウェブサービス環境のコアオペレーションができるようにします。
+ **AWSElasticBeanstalkRoleSNS** – 環境が Amazon SNS トピック統合を有効にできるようにします。

特定のマネージドポリシーの JSON ソースを確認するには、「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html)」を参照してください。

## 管理ポリシーによるアクセスのコントロール
<a name="iam-userpolicies-managed"></a>

管理ポリシーにより、Elastic Beanstalk へのフルアクセスまたは読み取り専用アクセスを許可できます。Elastic Beanstalk は、新しい機能へのアクセスに追加の許可が必要になった場合に、これらのポリシーを自動的に更新します。

**管理ポリシーを IAM ユーザーまたはグループに適用するには**

1. IAM コンソールの [[**Policies (ポリシー)**] ページ](https://console.aws.amazon.com/iam/home#policies)を開きます。

1. 検索ボックスに「**AWSElasticBeanstalk**」と入力して、ポリシーを絞り込みます。

1. ポリシーのリストで、[**AWSElasticBeanstalkReadOnly**] または [**AdministratorAccess-AWSElasticBeanstalk**] の横にあるチェックボックスをオンにします。

1. [**Policy actions**] を選択して、[**Attach**] を選択します。

1. ポリシーをアタッチするユーザーとグループを 1 つ以上選択します。[**Filter**] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。

1. **[Attach policy]** (ポリシーのアタッチ) を選択します。

## カスタムユーザーポリシーの作成
<a name="AWSHowTo.iam.policies"></a>

独自の IAM ポリシーを作成して、特定の Elastic Beanstalk リソースに対する特定の Elastic Beanstalk API アクションを許可または拒否したり、Elastic Beanstalk で管理されていないカスタムリソースへのアクセスを制御したりできます。ユーザーまたはグループへのポリシーのアタッチについては、「IAM ユーザーガイド」の「[ポリシーの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)」を参照してください。カスタムポリシーの作成の詳細については、「IAM ユーザーガイド」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

**注記**  
なお、現時点では、ユーザーによる Elastic Beanstalk API の使用方法は制限できますが、基盤となるリソースを作成するアクセス許可を持つユーザーが Amazon EC2 といったサービスで他のリソースを作成することを防ぐ効果的な方法はありません。  
これらのポリシーを、すべての基盤となるリソースを確保する手段としてではなく、Elastic Beanstalk を配布する効果的な方法と考えてください。

**重要**  
Elastic Beanstalk サービスロールにカスタムポリシーが割り当てられている場合は、それに起動テンプレートの適切なアクセス許可を割り当てることが重要です。それ以外の場合は、環境を更新したり、新しい環境を起動したりするために必要なアクセス許可がない場合があります。詳細については、「[起動テンプレートに必要なアクセス許可](environments-cfg-autoscaling-launch-templates.md#environments-cfg-autoscaling-launch-templates-permissions)」を参照してください。

IAM ポリシーには、付与するアクセス許可を定義したポリシーステートメントが含まれています。Elastic Beanstalk のポリシーステートメントを作成する場合、ポリシーステートメントを構成する以下の 4 つの部分について、使い方を把握しておく必要があります。
+ **効果**は、ステートメントのアクションを許可または拒否するかどうかを指定します。
+ **アクション**は、制御する [API オペレーション](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_Operations.html)を指定します。たとえば、`elasticbeanstalk:CreateEnvironment` を使用して `CreateEnvironment` オペレーションを指定します。環境の作成といった特定のオペレーションには、これらのアクションを実行するための追加の許可が必要となります。詳細については、「[Elastic Beanstalk アクションのリソースと条件](AWSHowTo.iam.policies.actions.md)」を参照してください。
**注記**  
[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API オペレーションを使用するには、API オペレーション名ではなく、2 つの仮想アクションのいずれか (または両方) を指定します。  

`elasticbeanstalk:AddTags`  
`UpdateTagsForResource` を呼び出し、追加するタグのリストを `TagsToAdd` パラメータで渡すアクセス許可を制御します。

`elasticbeanstalk:RemoveTags`  
`UpdateTagsForResource` を呼び出し、削除するタグキーのリストを `TagsToRemove` パラメータで渡すアクセス許可を制御します。
+ **リソース**は、アクセスをコントロールする対象のリソースを指定します。Elastic Beanstalk リソースを指定するには、リソースの [Amazon リソースネーム](AWSHowTo.iam.policies.arn.md) (ARN) のリストを指定します。
+ (オプション) **条件**は、ステートメントで付与された許可に対する制限を指定します。詳細については、「[Elastic Beanstalk アクションのリソースと条件](AWSHowTo.iam.policies.actions.md)」を参照してください。

以下のセクションでは、カスタムユーザーポリシーを考慮する可能性のあるいくつかのケースを示します。

### 制限付き Elastic Beanstalk 環境の作成の有効化
<a name="AWSHowTo.iam.policy.env-creation"></a>

次のサンプルポリシーでは、このポリシーを添付されたユーザーは、`CreateEnvironment` アクションを呼び出し、指定されたアプリケーションとアプリケーションバージョンを使用して、名前が **Test** で始まる環境を作成できます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid":"CreateEnvironmentPerm",
      "Action": [
        "elasticbeanstalk:CreateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My First Elastic Beanstalk Application/Test*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My First Elastic Beanstalk Application"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My First Elastic Beanstalk Application/First Release"]
        }
      }
    },
    {
      "Sid":"AllNonResourceCalls",
      "Action":[
        "elasticbeanstalk:CheckDNSAvailability",
        "elasticbeanstalk:CreateStorageLocation"
      ],
      "Effect":"Allow",
      "Resource":[
        "*"
      ]
    }
  ]
}
```

------

上記のポリシーは、Elastic Beanstalk オペレーションへの制限付きアクセスを許可する方法を示しています。環境を実際に起動するには、環境を強化する AWS リソースを作成するアクセス許可がユーザーに必要です。たとえば、次のポリシーはウェブサーバー環境の一連のデフォルトリソースへのアクセス権を付与します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "ecs:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "cloudformation:*",
        "sqs:*"
        ],
      "Resource": "*"
    }
  ]
}
```

------

### Amazon S3 に保存されている Elastic Beanstalk ログへのアクセスの有効化
<a name="AWSHowTo.iam.policy.view-s3-logs"></a>

以下の例のポリシーでは、ユーザーは Elastic Beanstalk ログをプルし、Amazon S3 にステージングして、取得できます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "s3:DeleteObject",
        "s3:GetObjectAcl",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::elasticbeanstalk-*"
    }
  ]
}
```

------

**注記**  
これらのアクセス許可をログのパスのみに制限するには、次のリソース形式を使用します。  

```
"arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/resources/environments/logs/*"
```

### 特定の Elastic Beanstalk アプリケーションの管理の有効化
<a name="AWSHowTo.iam.policy.manage-app"></a>

以下のサンプルポリシーでは、ユーザーが 1 つの特定の Elastic Beanstalk アプリケーション内の環境およびその他のリソースを管理できるようにします。このポリシーは、他のアプリケーションのリソースに対する Elastic Beanstalk アクションを拒否し、Elastic Beanstalk アプリケーションの作成と削除も拒否します。

**注記**  
このポリシーは、他のサービスを介したリソースへのアクセスを拒否しません。基盤となるリソースを確保する方法としてではなく、さまざまなユーザー間で Elastic Beanstalk アプリケーションを管理するための責任を分散する効果的な方法を示しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:DeleteApplication"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplicationVersion",
        "elasticbeanstalk:CreateConfigurationTemplate",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:DeleteApplicationVersion",
        "elasticbeanstalk:DeleteConfigurationTemplate",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:DescribeApplicationVersions",
        "elasticbeanstalk:DescribeConfigurationOptions",
        "elasticbeanstalk:DescribeConfigurationSettings",
        "elasticbeanstalk:DescribeEnvironmentResources",
        "elasticbeanstalk:DescribeEnvironments",
        "elasticbeanstalk:DescribeEvents",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RestartAppServer",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:TerminateEnvironment",
        "elasticbeanstalk:UpdateApplicationVersion",
        "elasticbeanstalk:UpdateConfigurationTemplate",
        "elasticbeanstalk:UpdateEnvironment",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:ValidateConfigurationSettings"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringNotEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/myapplication"
          ]
        }
      }
    }
  ]
}
```

------