Elastic Beanstalk のユーザーやアプリケーションの IAM 許可を制限する方法を教えてください。
新しい Elastic Beanstalk 環境を作成するにあたり、AWS Elastic Beanstalk のユーザーやアプリケーションの AWS Identity and Access Management (IAM) 許可を制限したいと考えています。
簡単な説明
IAM ポリシーを使用して、IAM ユーザーまたはロールの許可を制限できます。このポリシーでは、1 つの環境またはアプリケーションへのアクセスを制限できます。
以下のいずれかのセクションの手順を完了してください。
-
IAM アクセスを 1 つの環境またはアプリケーションのみに制限する
-
IAM アクセスを Elastic Beanstalk サービスのみに制限する
注意: IAM ポリシーを組み合わせて 1 つのアプリケーションへのアクセスを制限する方法の例については、「管理ポリシーに基づくポリシーの例」または「リソースに対するアクセス許可に基づいたポリシーの例」を参照してください。
解決方法
IAM アクセスを 1 つの環境またはアプリケーションのみに制限する
Elastic Beanstalk 環境またはアプリケーションへのアクセスを制限するIAM ポリシーを作成します。
以下の点を考慮してください。
- Elastic Beanstalk では、アプリケーションの構造がコンポーネント (環境、バージョン、環境設定など) のコレクションであるため、アプリケーションへのアクセス許可を直接制限することはできません。ただし、アクション、リソース、条件キーを使用して、より詳細なレベルでアクセス許可を制限できます。
- IAM ポリシーは、基盤となるリソースを保護する方法としては効果的ではありません。たとえば、適切な IAM ポリシーを使用して、ユーザーが Elastic Beanstalk API を操作する方法を制限できます。しかし、Elastic Beanstalk アクセス許可を持つユーザーが、Elastic Beanstalk とは無関係の他の AWS サービスでリソースを作成できないようにすることはできません。
- Elastic Beanstalk が統合するリソースの中には、リソースレベルのアクセス許可をサポートしていないものがあります。詳細については、「IAM と連携する AWS のサービス」をご参照ください。
以下に示すのは、2 つの Elastic Beanstalk アプリケーション (App1 と App2) へのフルアクセスを許可する IAM ポリシーの例です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:UpdateApplicationVersion", "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:DeleteApplicationVersion" ], "Resource": "*", "Condition": { "StringEquals": { "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"] } } }, { "Effect": "Allow", "Action": [ "elasticbeanstalk:DescribeAccountAttributes", "elasticbeanstalk:AbortEnvironmentUpdate", "elasticbeanstalk:TerminateEnvironment", "rds:*", "elasticbeanstalk:ValidateConfigurationSettings", "elasticbeanstalk:CheckDNSAvailability", "autoscaling:*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RebuildEnvironment", "elasticbeanstalk:DescribeInstancesHealth", "elasticbeanstalk:DescribeEnvironmentHealth", "sns:*", "elasticbeanstalk:RestartAppServer", "s3:*", "cloudformation:*", "elasticloadbalancing:*", "elasticbeanstalk:CreateStorageLocation", "elasticbeanstalk:DescribeEnvironmentManagedActions", "elasticbeanstalk:SwapEnvironmentCNAMEs", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ApplyEnvironmentManagedAction", "cloudwatch:*", "elasticbeanstalk:CreateEnvironment", "elasticbeanstalk:List*", "elasticbeanstalk:DeleteEnvironmentConfiguration", "elasticbeanstalk:UpdateEnvironment", "ec2:*", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:DescribeConfigurationSettings", "sqs:*", "dynamodb:CreateTable", "dynamodb:DescribeTable" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:*" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-elasticbeanstalk-ec2-role", "arn:aws:iam::123456789012:role/aws-elasticbeanstalk-service-role", "arn:aws:iam::123456789012:instance-profile/aws-elasticbeanstalk-ec2-role" ] }, { "Effect": "Allow", "Action": [ "elasticbeanstalk:DescribeEvents", "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:AddTags", "elasticbeanstalk:ListPlatformVersions" ], "Resource": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"] }, { "Effect": "Allow", "Action": [ "elasticbeanstalk:AddTags", "elasticbeanstalk:Describe*" ], "Resource": [ "arn:aws:elasticbeanstalk:*::platform/*", "arn:aws:elasticbeanstalk:*:*:environment/*/*", "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*::solutionstack/*", "arn:aws:elasticbeanstalk:*:*:applicationversion/*/*", "arn:aws:elasticbeanstalk:*:*:configurationtemplate/*/*" ], "Condition": { "StringEquals": { "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"] } } } ] }
重要: デフォルトの Elastic Beanstalk サービスロールとインスタンスプロファイルを使用していない場合は、独自のカスタムサービスロールとインスタンスプロファイルを使用して前述の IAM ポリシーを更新してください。
Elastic Beanstalk アプリケーションへのアクセスを制限する方法の詳細については、「Elastic Beanstalk アクションのリソースと条件」を参照してください。
IAM アクセスを Elastic Beanstalk サービスのみに制限する
重要: 次の手順は、新しい Elastic Beanstalk 環境またはアプリケーションにのみ適用されます。
- Elastic Beanstalk 環境またはアプリケーション用に、別の AWS アカウントを作成します。
- AWS Organizations を使用して、別のアカウントをメインの AWS アカウントに接続します。
関連するコンテンツ
- 承認された回答質問済み 10ヶ月前lg...
- 質問済み 5ヶ月前lg...
- 質問済み 4年前lg...
- AWS公式更新しました 3年前
- AWS公式更新しました 2年前
- AWS公式更新しました 5ヶ月前