メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

サービスロール、インスタンスプロファイル、ユーザーポリシー

環境を作成すると、AWS Elastic Beanstalk によって 2 つの AWS Identity and Access Management (IAM) ロールとして、サービスロールとインスタンスプロファイルを指定するように求められます。サービスロールは Elastic Beanstalk が引き受け、お客様に代わって他の AWS サービスを利用できるようにします。インスタンスプロファイルは環境内のインスタンスに適用され、Amazon S3 へのログのアップロードをはじめ、環境タイプやプラットフォームに応じたさまざまなタスクの実行が可能になります。

正しく設定されたサービスロールとインスタンスプロファイルを取得するには、Elastic Beanstalk コンソールでサンプルアプリケーションを実行する環境を作成するか、Elastic Beanstalk コマンドラインインターフェイス(EB CLI)の使用をお勧めします。環境を作成する場合は、必要なロールをクライアントで作成し、必須の権限をすべてを含む管理ポリシーを割り当てます。

環境に割り当てる 2 つのロール以外にユーザーポリシーを作成し、アカウントの IAM ユーザーとグループに適用すると、Elastic Beanstalk アプリケーションと環境の作成および管理を許可できます。Elastic Beanstalk には、フルアクセスと読み取り専用アクセスのための管理ポリシーが用意されています。

高度なシナリオ用に独自のインスタンスプロファイルとユーザーポリシーを作成できます。インスタンスからデフォルトのポリシーに含まれていないサービスにアクセスする必要がある場合は、デフォルトにポリシーを追加するか、新しいポリシーを作成できます。管理ポリシーの許容範囲が広すぎる場合は、その範囲を絞り込んだユーザーポリシーを作成することもできます。AWS のアクセス許可に関する詳細は、『AWS Identity and Access Management ユーザーガイド』を参照してください。

Elastic Beanstalk サービスロール

サービスロールは、他のサービスを代理で呼び出すときに Elastic Beanstalk が引き受ける IAM ロールです。たとえば、Amazon Elastic Compute Cloud(Amazon EC2)や Elastic Load Balancing、Auto Scaling API を呼び出して拡張ヘルスモニタリングで AWS リソースのヘルスステータスについて情報を収集する際、Elastic Beanstalk は Elastic Beanstalk 環境の作成時に指定したサービスロールを使用します。

AWSElasticBeanstalkEnhancedHealth 管理ポリシーには、環境のヘルスステータスをモニタリングする際に Elastic Beanstalk で必要となるすべてのアクセス権限が含まれています。

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

このポリシーには、Elastic Beanstalk にワーカー環境のキューアクティビティのモニタリングを許可する Amazon SQS アクションも含まれています。

Elastic Beanstalk コンソールで環境を作成すると、Elastic Beanstalk は aws-elasticbeanstalk-service-role という名前のサービスロールを作成するよう指示します。このロールには、デフォルトのアクセス権限と Elastic Beanstalk にサービスロールの引き受けを許可する信頼ポリシーが含まれます。マネージドプラットフォーム更新を有効にすると、Elastic Beanstalk は、この機能を有効にするアクセス許可を含む別のポリシーをアタッチします。

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

Elastic Beanstalk インスタンスプロファイル

インスタンスプロファイルは、Elastic Beanstalk 環境で起動されたインスタンスに適用される IAM ロールです。Elastic Beanstalk 環境の作成時、インスタンスによる以下のアクションに使用されるインスタンスプロファイルを指定します。

  • Amazon Simple Storage Service へのログの書き込み

  • AWS X-Ray 統合環境で、デバッグデータを X-Ray にアップロードします。

  • (マルチコンテナ Docker 環境)Amazon EC2 Container Service によるコンテナのデプロイの調整

  • (ワーカー環境)Amazon Simple Queue Service(Amazon SQS)キューからの読み取り

  • (ワーカー環境)Amazon DynamoDB によるリーダーの選択

  • (ワーカー環境)Amazon CloudWatch へのインスタンスヘルスメトリクスのパブリッシュ

AWSElasticBeanstalkWebTier 管理ポリシーには、環境のインスタンスによる Amazon S3 へのログのアップロードと、X-Ray へのデバッグ情報の送信を許可するステートメントが含まれます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BucketAccess",
      "Action": [
        "s3:Get*",
        "s3:List*",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::elasticbeanstalk-*",
        "arn:aws:s3:::elasticbeanstalk-*/*"
      ]
    },
    {
      "Sid": "XRayAccess",
      "Action":[
        "xray:PutTraceSegments",
        "xray:PutTelemetryRecords"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Sid": "CloudWatchLogsAccess",
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
      ]
    }
  ]
}

Elastic Beanstalk には、その他の用途に使用する AWSElasticBeanstalkWorkerTierAWSElasticBeanstalkMulticontainerDocker といった管理ポリシーもあります。コンソールまたは EB CLI で環境を作成する際、Elastic Beanstalk はデフォルトのインスタンスプロファイル aws-elasticbeanstalk-ec2-role にこれらのポリシーをすべてアタッチします。

ウェブアプリケーションで他の AWS サービスへのアクセスが必要な場合、インスタンスプロファイルに、これらのサービスへのアクセスを許可するステートメントまたは管理ポリシーを追加します。

インスタンスプロファイルの詳細については、「Elastic Beanstalk インスタンスプロファイルを管理する」を参照してください。

Elastic Beanstalk ユーザーポリシー

ルートアカウントの使用や認証情報の共有を回避するには、Elastic Beanstalk を使用する各人物に対して IAM ユーザーを作成します。セキュリティ強化のため、これらのユーザーに付与するアクセス権限はサービスと機能に限定してください。

Elastic Beanstalk は、独自の API アクションに対してだけではなく、他のいくつかの AWS サービスに対しても、アクセス許可を必要とします。Elastic Beanstalk は、ユーザーアクセス許可を使用して、環境内のすべてのリソース(EC2 インスタンス、Elastic Load Balancing ロードバランサー、Auto Scaling グループなど)を起動します。また、Elastic Beanstalk は、Amazon S3 へのログとテンプレートの保存、Amazon SNS への通知の送信、インスタンスプロファイルの割り当て、および CloudWatch へのメトリクスのパブリッシュにもユーザーアクセス許可を使用します。Elastic Beanstalk でリソースのデプロイと更新を調整するには、AWS CloudFormation アクセス許可が必要です。また、必要に応じてデータベースを作成するには Amazon RDS アクセス許可が必要で、ワーカー環境のキューを作成するには Amazon SQS アクセス許可が必要です。

以下のポリシーは、Elastic Beanstalk 環境を作成および管理するためのアクセス権限を付与します。このポリシーは AWSElasticBeanstalkFullAccess という名前の管理ポリシーとして IAM コンソールで使用できます。Elastic Beanstalk を使用するためのアクセス権限を付与する管理ポリシーを IAM ユーザーまたはグループに適用できます。または、ユーザーに不要なアクセス権限を除外した独自のポリシーを作成することもできます。

{
    "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:AttachRolePolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "iam:PolicyArn": [
                        "arn:aws:iam::aws:policy/AWSElasticBeanstalk*",
                        "arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalk*"
                    ]
                }
            }
        }
    ]
}

Elastic Beanstalk には、AWSElasticBeanstalkReadOnlyAccess という名前の読み取り専用の管理ポリシーも用意されています。このポリシーは、ユーザーに Elastic Beanstalk 環境の表示を許可しますが、変更または作成は許可しません。

ユーザーポリシーの詳細については、「Elastic Beanstalk へのアクセスの制御」を参照してください。