Elastic Beanstalk サービスロール - AWS Elastic Beanstalk

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

Elastic Beanstalk サービスロール

サービスロールは、Elastic Beanstalk がユーザーに代わって他の サービスを呼び出すときに引き受けるIAMロールです。例えば、Elastic Beanstalk は Amazon Elastic Compute Cloud (Amazon EC2)、Elastic Load Balancing、Amazon EC2 Auto Scaling APIsを呼び出すときにサービスロールを使用して情報を収集します。Elastic Beanstalk が使用するサービスロールは、Elastic Beanstalk 環境を作成するときに指定したサービスロールになります。

サービスロールにアタッチする管理ポリシーには 2 つの種類があります。これらのポリシーによって、環境の作成と管理に必要な AWS リソースにアクセスするための権限を Elastic Beanstalk に付与します。1 つの マネージドポリシーは、拡張ヘルスモニタリングとワーカー層の Amazon SQS サポートのアクセス許可を提供し、もう 1 つは、マネージドプラットフォームの更新に必要な追加のアクセス許可を提供します。

このポリシーによって、環境のヘルスモニタリングに必要なすべてのアクセス権限を Elastic Beanstalk に付与します。また、Elastic Beanstalk がワーカー環境のキューアクティビティをモニタリングできるようにする Amazon SQSアクションも含まれています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetHealth", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:GetConsoleOutput", "ec2:AssociateAddress", "ec2:DescribeAddresses", "ec2:DescribeSecurityGroups", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeScalingActivities", "autoscaling:DescribeNotificationConfigurations", "sns:Publish" ], "Resource": [ "*" ] } ] }

このポリシーでは、お客様に代わって環境を更新してマネージドプラットフォームを更新するアクセス許可を Elastic Beanstalk に付与します。

サービスレベルでのアクセス許可のグループ化

このポリシーは、提供された一連の許可に基づくステートメントごとにグループ化されます。

  • ElasticBeanstalkPermissions – このアクセス許可のグループは、Elastic Beanstalk サービスアクション (Elastic Beanstalk) を呼び出すためのものですAPIs。

  • AllowPassRoleToElasticBeanstalkAndDownstreamServices – このアクセス許可グループにより、Elastic Beanstalk や AWS CloudFormationなどのダウンストリームサービスに対し、任意のロールを渡すことが可能になります。

  • ReadOnlyPermissions – このアクセス許可グループは、実行中の環境に関する情報を収集するため使用します。

  • *OperationPermissions – この命名パターンを持つグループは、プラットフォームの更新を実行するために必要なオペレーションを呼び出すためのものです。

  • *BroadOperationPermissions – この命名パターンを持つグループは、プラットフォームの更新を実行するために必要なオペレーションを呼び出すためのものです。またこれには、レガシー環境をサポートするための広範なアクセス許可も含まれています。

  • *TagResource – この命名パターンを持つグループは、 tag-on-create APIsを使用して Elastic Beanstalk 環境で作成されているリソースにタグをアタッチする呼び出し用です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ElasticBeanstalkPermissions", "Effect": "Allow", "Action": [ "elasticbeanstalk:*" ], "Resource": "*" }, { "Sid": "AllowPassRoleToElasticBeanstalkAndDownstreamServices", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "elasticbeanstalk.amazonaws.com", "ec2.amazonaws.com", "ec2.amazonaws.com.rproxy.goskope.com.cn", "autoscaling.amazonaws.com", "elasticloadbalancing.amazonaws.com", "ecs.amazonaws.com", "cloudformation.amazonaws.com" ] } } }, { "Sid": "ReadOnlyPermissions", "Effect": "Allow", "Action": [ "autoscaling:DescribeAccountLimits", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeLoadBalancers", "autoscaling:DescribeNotificationConfigurations", "autoscaling:DescribeScalingActivities", "autoscaling:DescribeScheduledActions", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeImages", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstances", "ec2:DescribeKeyPairs", "ec2:DescribeLaunchTemplates", "ec2:DescribeLaunchTemplateVersions", "ec2:DescribeSecurityGroups", "ec2:DescribeSnapshots", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSubnets", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcs", "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "logs:DescribeLogGroups", "rds:DescribeDBEngineVersions", "rds:DescribeDBInstances", "rds:DescribeOrderableDBInstanceOptions", "sns:ListSubscriptionsByTopic" ], "Resource": [ "*" ] }, { "Sid": "EC2BroadOperationPermissions", "Effect": "Allow", "Action": [ "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateLaunchTemplate", "ec2:CreateLaunchTemplateVersion", "ec2:CreateSecurityGroup", "ec2:DeleteLaunchTemplate", "ec2:DeleteLaunchTemplateVersions", "ec2:DeleteSecurityGroup", "ec2:DisassociateAddress", "ec2:ReleaseAddress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress" ], "Resource": "*" }, { "Sid": "EC2RunInstancesOperationPermissions", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:*:*:launch-template/*" } } }, { "Sid": "EC2TerminateInstancesOperationPermissions", "Effect": "Allow", "Action": [ "ec2:TerminateInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-id": [ "arn:aws:cloudformation:*:*:stack/awseb-e-*", "arn:aws:cloudformation:*:*:stack/eb-*" ] } } }, { "Sid": "ECSBroadOperationPermissions", "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:DescribeClusters", "ecs:RegisterTaskDefinition" ], "Resource": "*" }, { "Sid": "ECSDeleteClusterOperationPermissions", "Effect": "Allow", "Action": "ecs:DeleteCluster", "Resource": "arn:aws:ecs:*:*:cluster/awseb-*" }, { "Sid": "ASGOperationPermissions", "Effect": "Allow", "Action": [ "autoscaling:AttachInstances", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:CreateOrUpdateTags", "autoscaling:DeleteLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteScheduledAction", "autoscaling:DetachInstances", "autoscaling:DeletePolicy", "autoscaling:PutScalingPolicy", "autoscaling:PutScheduledUpdateGroupAction", "autoscaling:PutNotificationConfiguration", "autoscaling:ResumeProcesses", "autoscaling:SetDesiredCapacity", "autoscaling:SuspendProcesses", "autoscaling:TerminateInstanceInAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": [ "arn:aws:autoscaling:*:*:launchConfiguration:*:launchConfigurationName/awseb-e-*", "arn:aws:autoscaling:*:*:launchConfiguration:*:launchConfigurationName/eb-*", "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/awseb-e-*", "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/eb-*" ] }, { "Sid": "CFNOperationPermissions", "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": [ "arn:aws:cloudformation:*:*:stack/awseb-*", "arn:aws:cloudformation:*:*:stack/eb-*" ] }, { "Sid": "ELBOperationPermissions", "Effect": "Allow", "Action": [ "elasticloadbalancing:AddTags", "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer", "elasticloadbalancing:ConfigureHealthCheck", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:RegisterTargets" ], "Resource": [ "arn:aws:elasticloadbalancing:*:*:targetgroup/awseb-*", "arn:aws:elasticloadbalancing:*:*:targetgroup/eb-*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/awseb-*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/eb-*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/*/awseb-*/*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/*/eb-*/*" ] }, { "Sid": "CWLogsOperationPermissions", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DeleteLogGroup", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk/*" }, { "Sid": "S3ObjectOperationPermissions", "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::elasticbeanstalk-*/*" }, { "Sid": "S3BucketOperationPermissions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetBucketPolicy", "s3:ListBucket", "s3:PutBucketPolicy" ], "Resource": "arn:aws:s3:::elasticbeanstalk-*" }, { "Sid": "SNSOperationPermissions", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:*:ElasticBeanstalkNotifications-*" }, { "Sid": "SQSOperationPermissions", "Effect": "Allow", "Action": [ "sqs:GetQueueAttributes", "sqs:GetQueueUrl" ], "Resource": [ "arn:aws:sqs:*:*:awseb-e-*", "arn:aws:sqs:*:*:eb-*" ] }, { "Sid": "CWPutMetricAlarmOperationPermissions", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricAlarm" ], "Resource": [ "arn:aws:cloudwatch:*:*:alarm:awseb-*", "arn:aws:cloudwatch:*:*:alarm:eb-*" ] }, { "Sid": "AllowECSTagResource", "Effect": "Allow", "Action": [ "ecs:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": [ "CreateCluster", "RegisterTaskDefinition" ] } } } ] }

次のいずれかの方法で Elastic Beanstalk 環境を作成できます。各セクションでは、このアプローチがサービスロールを処理する方法について説明します。

Elastic Beanstalk コンソール

Elastic Beanstalk コンソールを使って環境を作成する場合、Elastic Beanstalk で、aws-elasticbeanstalk-service-role という名前のサービスロールを作成するよう指示されます。Elastic Beanstalk を介して作成されたこのロールには、Elastic Beanstalk がそのサービスロールを担うことを許可する信頼ポリシーが含まれます。このトピックで前述した 2 つの管理ポリシーもこのロールにアタッチされています。

Elastic Beanstalk コマンドラインインターフェイス (EB CLI)

Elastic Beanstalk eb create コマンドラインインターフェイス (EB) の コマンドを使用して環境を作成できますCLI。--service-role オプションを使用してサービスロールを指定しない場合は、Elastic Beanstalk が同じデフォルトサービスロール aws-elasticbeanstalk-service-role を作成します。デフォルトのサービスロールが既に存在する場合、Elastic Beanstalk はそのサービスロールを新しい環境で使用します。Elastic Beanstalk を介して作成されたこのロールには、Elastic Beanstalk がそのサービスロールを担うことを許可する信頼ポリシーが含まれます。このトピックで前述した 2 つの管理ポリシーもこのロールにアタッチされています。

Elastic Beanstalk API

Elastic Beanstalk の CreateEnvironmentアクションを使用して環境を作成できますAPI。サービスロールを指定しない場合、Elastic Beanstalk がモニタリングサービスリンクロールを作成します。これは、Elastic Beanstalk によって事前定義された一意のタイプのサービスロールで、サービスが AWS のサービス ユーザーに代わって他の を呼び出すために必要なすべてのアクセス許可が含まれます。このサービスリンクロールはお客様のアカウントに関連付けられています。Elastic Beanstalk によって一度作成されたロールは、追加の環境を作成するときにも使用されます。IAM を使用して、 アカウントのモニターリングサービスにリンクされたロールを事前に作成することもできます。アカウントにモニタリングサービスにリンクされたロールがある場合は、それを使用して Elastic Beanstalk コンソール、Elastic Beanstalk API、または EB を使用して環境を作成できますCLI。サービスリンクロールを Elastic Beanstalk 環境で使用する方法については、「Elastic Beanstalk でのサービスにリンクされたロールの使用」を参照してください。

サービスロールの詳細については、「Elastic Beanstalk サービスロールの管理」を参照してください。