AWS Elastic Beanstalk
開発者ガイド

Elastic Beanstalk へのアクセスの制御

AWS Elastic Beanstalk では、すべての Elastic Beanstalk リソースへの完全アクセスまたは読み取り専用アクセスを付与できる管理ポリシーを 2 つ用意しています。このポリシーは、AWS Identity and Access Management(IAM)ユーザーまたはグループに添付できます。

管理ユーザーポリシー

  • AWSElasticBeanstalkFullAccess – Elastic Beanstalk アプリケーション、アプリケーションバージョン、設定、環境、およびそれらの基盤となるリソースを作成、変更、削除することをユーザーに対して許可します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:*", "ec2:*", "ecs:*", "ecr:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "cloudformation:*", "dynamodb:*", "rds:*", "sqs:*", "logs:*", "iam:GetPolicyVersion", "iam:GetRole", "iam:PassRole", "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "iam:ListServerCertificates", "acm:DescribeCertificate", "acm:ListCertificates", "codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:AddRoleToInstanceProfile", "iam:CreateInstanceProfile", "iam:CreateRole" ], "Resource": [ "arn:aws:iam::*:role/aws-elasticbeanstalk*", "arn:aws:iam::*:instance-profile/aws-elasticbeanstalk*" ] }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling*" ], "Condition": { "StringLike": { "iam:AWSServiceName": "autoscaling.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/elasticbeanstalk.amazonaws.com/AWSServiceRoleForElasticBeanstalk*" ], "Condition": { "StringLike": { "iam:AWSServiceName": "elasticbeanstalk.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy" ], "Resource": "*", "Condition": { "StringLike": { "iam:PolicyArn": [ "arn:aws:iam::aws:policy/AWSElasticBeanstalk*", "arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalk*" ] } } } ] }
  • AWSElasticBeanstalkReadOnlyAccess – ユーザーに対し、アプリケーションおよび環境を表示することを許可します。ただし、アプリケーション/環境に対するオペレーションは許可されません。すべての Elastic Beanstalk リソースへの読み取り専用アクセスを提供します。読み取り専用アクセスでは、Elastic Beanstalk ログを読むためにダウンロードするなどのアクションはできないことに注意してください。これは、ログが Amazon S3 バケットでステージングされるためで、Elastic Beanstalk には書き込みアクセス権限が必要です。Elastic Beanstalk ログへのアクセスを有効にする方法については、このトピックの最後の例を参照してください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:Check*", "elasticbeanstalk:Describe*", "elasticbeanstalk:List*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo", "ec2:Describe*", "elasticloadbalancing:Describe*", "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:List*", "cloudwatch:Get*", "s3:Get*", "s3:List*", "sns:Get*", "sns:List*", "cloudformation:Describe*", "cloudformation:Get*", "cloudformation:List*", "cloudformation:Validate*", "cloudformation:Estimate*", "rds:Describe*", "sqs:Get*", "sqs:List*" ], "Resource": "*" } ] }

管理ポリシーによるアクセスの制御

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

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

  1. IAM コンソールの [ポリシー] ページを開きます。

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

  3. ポリシーのリストで、[AWSElasticBeanstalkReadOnlyAccess] または [AWSElasticBeanstalkFullAccess] の横にあるチェックボックスを選択します。

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

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

  6. [Attach policy] を選択します。

カスタムユーザーポリシーの作成

独自の IAM ポリシーを作成し、特定の Elastic Beanstalk リソースに対する特定の Elastic Beanstalk API アクションを許可または拒否できます。ユーザーまたはグループへのポリシーの添付については、「AWS Identity and Access Management の使用」の「ポリシーの使用」を参照してください。

注記

なお、現時点では、ユーザーによる Elastic Beanstalk API の使用方法は制限できますが、基盤となるリソースを作成する権限を持ったユーザーが Amazon EC2 といったサービスで他のリソースを作成することを防ぐ効果的な方法は見つかっていません。

これらのポリシーを Elastic Beanstalk を配布する効果的な方法と考えてください。 すべての基礎的なリソースを確保する手段としてではなく、

IAM ポリシーには、付与する許可について説明したポリシーステートメントが含まれています。Elastic Beanstalk のポリシーステートメントを作成する場合、ポリシーステートメントを構成する次の 4 つの部分について、使い方を把握しておく必要があります。

  • 効果は、ステートメントのアクションを許可または拒否するかどうかを指定します。

  • アクションは、制御する API オペレーションを指定します。たとえば、elasticbeanstalk:CreateEnvironment を使用して CreateEnvironment オペレーションを指定します。環境の作成といった特定のオペレーションには、これらのアクションを実行するための追加の許可が必要となります。詳細については、「Elastic Beanstalk アクションのリソースと条件」を参照してください。

    注記

    UpdateTagsForResource API オペレーションを使用するには、API オペレーション名ではなく、2 つの仮想アクションのいずれか (または両方) を指定します。

    elasticbeanstalk:AddTags

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

    elasticbeanstalk:RemoveTags

    UpdateTagsForResource を呼び出し、削除するタグキーのリストを TagsToRemove パラメータで渡すアクセス許可を制御します。

  • リソースは、アクセスをコントロールする対象のリソースを指定します。Elastic Beanstalk リソースを指定するには、各リソースの Amazon リソースネーム(ARN)をリストします。

  • (オプション) 条件は、ステートメントで付与された許可に対する制限を指定します。詳細については、「Elastic Beanstalk アクションのリソースと条件」を参照してください。

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

制限付き Elastic Beanstalk 環境の作成を有効にする

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

{ "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 リソースを作成する許可がユーザーに付与されている必要があります。たとえば、次のポリシーはウェブサーバー環境の一連のデフォルトリソースへのアクセス権を付与します。

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

Amazon S3 に保存された Elastic Beanstalk ログへのアクセスを有効にする

次のサンプルポリシーでは、ユーザーが Amazon S3 に保管された Elastic Beanstalk ログを表示してプルできるようにします。

{ "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 アプリケーションの管理を有効にする

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

注記

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

{ "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" ] } } } ] }