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

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:*",
                    "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*"
                        ]
                    }
                }
            }
        ]
    }
  • AWSElasticBeanstalkReadOnlyAccess – ユーザーに対し、アプリケーションおよび環境を表示することを許可します。ただし、アプリケーション/環境に対するオペレーションは許可されません。また、すべての Elastic Beanstalk リソースへの読み取り専用アクセスを提供します。読み取り専用アクセスでは、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 コンソールの [Users] ページを開きます。

  2. ナビゲーションペインの [Permissions] を選択します。

  3. [Attach Policy] を選択します。

  4. AWSElasticBeanstalk と入力し、ポリシーをフィルタします。

  5. AWSElasticBeanstalkReadOnlyAccess または AWSElasticBeanstalkFullAccess を選択し、[Attach Policy] を選択します。

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

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

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

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

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

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

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

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid":"CreateEnvironmentPerm",
      "Action": [
        "elasticbeanstalk:CreateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-1:123456789012:environment/My First Elastic Beanstalk Application/Test*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-1:123456789012:application/My First Elastic Beanstalk Application"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-1: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": "*"
    }
  ]
}

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

Elastic Beanstalk ログへの読み取り専用アクセスを有効にする

次のポリシー例には、このポリシーを持つユーザーが Elastic Beanstalk ログを表示およびプルできるようにする 2 つのステートメントが含まれています。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1491295324000", "Effect": "Allow", "Action": [ "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-*/*" ] }, { "Sid": "Stmt1491295472000", "Effect": "Allow", "Action": [ "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-*" ] } ] }