翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このセクションでは、特定の Elastic Beanstalk リソースにアクセスする Elastic Beanstalk アクションに対するユーザーのアクセス許可を制御するユースケースについて説明します。そのユースケースをサポートするサンプルポリシーについて説明します。Elastic Beanstalk リソースのポリシーの詳細については、「カスタムユーザーポリシーの作成」を参照してください。ユーザーおよびグループにポリシーをアタッチする方法については、AWS Identity and Access Management の使用の「IAM ポリシーの管理」を参照してください。
このユースケースの Example Corp. は小規模コンサルタント会社で、2 つのカスタマー用にアプリケーションを開発しています。開発マネージャーである John は、2 つの Elastic Beanstalk アプリケーション、app1 と app2 の開発を監督しています。John は 2 つのアプリケーションを開発し、テストをいくつか実行します。また、ジョンのみがこの 2 つのアプリケーションに対して本番環境を更新できます。ジョンが app1 および app2 に対して必要とする許可を次に示します。
-
アプリケーション、アプリケーションバージョン、環境、および設定テンプレートを表示する
-
アプリケーションバージョンを作成し、ステージング環境をデプロイする
-
本番環境を更新する
-
環境を作成および終了する
テスターである Jill には、アプリケーション、アプリケーションバージョン、環境、および設定テンプレートの 4 つのリソースを表示するためのアクセス許可が必要です。これにより、2 つのアプリケーションを監視およびテストします。ただし、Elastic Beanstalk リソースに変更を加えることはできません。
app1 の開発者である Jack には、app1 のすべてのリソースを表示するためのアクセス許可が必要です。また、app1 のアプリケーションバージョンを作成し、ステージング環境にデプロイする必要もあります。
Example Corp. の AWS アカウント管理者である Judy は、John、Jill、および Jack の IAM ユーザーを作成し、次のポリシーをこれらのユーザーにアタッチして、適切なアクセス許可を app1 および app2 アプリケーションに付与します。
例 1: John - app1、app2 の開発マネージャー
確認および管理しやすいように John のポリシーを 3 つに分割しました。2 つのアプリケーションで John が開発、テスト、デプロイの各アクションを実行するための許可は、このすべてのポリシーによって付与されます。
最初のポリシーは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS、および AWS CloudFormation のアクションを指定します。Elastic Beanstalk は、環境を作成するときに、これらの追加サービスに依存して基盤となるリソースをプロビジョニングします。
このポリシーは例です。これにより、Elastic Beanstalk がアプリケーションと環境を管理するのに 使用する AWS 製品に、広範なアクセス許可のセットが付与されます。例えば、ec2:*
を使用すると、IAM ユーザーが AWS アカウントで、すべての Amazon EC2 リソースに対してどんなアクションでも実行できます。これらのアクセス許可は、Elastic Beanstalk で使用するリソースに限定されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することをお勧めします。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"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":"*"
}
]
}
2 番目のポリシーでは、app1 および app2 リソースに対する John による実行を許可する Elastic Beanstalk アクションを指定します。AllCallsInApplications
ステートメントでは、app1 および app2 内のすべてのリソース ("elasticbeanstalk:*"
など) に対して実行されるすべての Elastic Beanstalk アクション (elasticbeanstalk:CreateEnvironment
など) を許可します。AllCallsOnApplications
ステートメントでは、app1 および app2 アプリケーションのリソース ("elasticbeanstalk:*"
、elasticbeanstalk:DescribeApplications
など) に対するすべての Elastic Beanstalk アクション (elasticbeanstalk:UpdateApplication
など) を許可します。AllCallsOnSolutionStacks
ステートメントでは、ソリューションスタックリソース ("elasticbeanstalk:*"
など) に対するすべての Elastic Beanstalk アクション (elasticbeanstalk:ListAvailableSolutionStacks
など) を許可します。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllCallsInApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
}
}
},
{
"Sid":"AllCallsOnApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
},
{
"Sid":"AllCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
3 番目のポリシーでは、2 番目のポリシーがそれらの Elastic Beanstalk アクションを完了するためにアクセス許可を必要とする Elastic Beanstalk アクションを指定します。AllNonResourceCalls
ステートメントでは elasticbeanstalk:CheckDNSAvailability
アクションを許可します。このアクションは、elasticbeanstalk:CreateEnvironment
などのアクションを呼び出すときに必要です。また、elasticbeanstalk:CreateStorageLocation
アクションも許可します。このアクションは、elasticbeanstalk:CreateApplication
、elasticbeanstalk:CreateEnvironment
などのアクションに必要です。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
例 2: Jill - app1、app2 のテスター
確認および管理しやすいように Jill のポリシーを 3 つに分割しました。2 つのアプリケーションで Jill がテストとモニタリングアクションを実行するための許可は、このすべてのポリシーによって付与されます。
最初のポリシーでは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS、および AWS CloudFormation (非レガシーコンテナタイプの場合) に対する Describe*
、List*
、および Get*
アクションを指定して、Elastic Beanstalk アクションが、app1 および app2 アプリケーションの基盤となるリソースの関連情報を取得できるようにします。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"rds:Describe*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*"
],
"Resource":"*"
}
]
}
2 番目のポリシーでは、app1 および app2 リソースに対する Jill による実行を許可する Elastic Beanstalk アクションを指定します。AllReadCallsInApplications
ステートメントでは、Jill による Describe*
アクションと環境情報アクションの呼び出しを許可します。AllReadCallsOnApplications
ステートメントでは、Jill に app1 および app2 アプリケーションのリソースに対する DescribeApplications
および DescribeEvents
アクションの呼び出しを許可します。AllReadCallsOnSolutionStacks
ステートメントでは、ソリューションスタックリソースに関連するアクション(ListAvailableSolutionStacks
、DescribeConfigurationOptions
、および ValidateConfigurationSettings
)の表示を許可します。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllReadCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
3 番目のポリシーでは、2 番目のポリシーがそれらの Elastic Beanstalk アクションを完了するためにアクセス許可を必要とする Elastic Beanstalk アクションを指定します。AllNonResourceCalls
ステートメントでは elasticbeanstalk:CheckDNSAvailability
アクションを許可します。このアクションは、一部の表示アクションに必要です。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
例 3: Jack - app1 の開発者
確認および管理しやすいように Jack のポリシーを 3 つに分割しました。app1 リソースで Jack が、テスト、モニタリング、デプロイの各アクションを実行するための許可は、このすべてのポリシーによって付与されます。
最初のポリシーは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS、および AWS CloudFormation (非レガシーコンテナタイプの場合) のアクションを指定して、Elastic Beanstalk アクションが基盤となる app1 のリソースを表示および操作できるようにします。サポートされているレガシーではないコンテナタイプのリストについては、「一部のプラットフォームバージョンがレガシーとマークされているのはなぜですか?」を参照してください。
このポリシーは例です。これにより、Elastic Beanstalk がアプリケーションと環境を管理するのに 使用する AWS 製品に、広範なアクセス許可のセットが付与されます。例えば、ec2:*
を使用すると、IAM ユーザーが AWS アカウントで、すべての Amazon EC2 リソースに対してどんなアクションでも実行できます。これらのアクセス許可は、Elastic Beanstalk で使用するリソースに限定されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することをお勧めします。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"
],
"Resource":"*"
}
]
}
2 番目のポリシーでは、app1 リソースに対する Jack による実行を許可する Elastic Beanstalk アクションを指定します。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllReadCallsAndAllVersionCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:CreateApplicationVersion",
"elasticbeanstalk:DeleteApplicationVersion",
"elasticbeanstalk:UpdateApplicationVersion"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
},
{
"Sid":"UpdateEnvironmentInApplications",
"Action":[
"elasticbeanstalk:UpdateEnvironment"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
},
"StringLike":{
"elasticbeanstalk:FromApplicationVersion":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*"
]
}
}
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
3 番目のポリシーでは、2 番目のポリシーがそれらの Elastic Beanstalk アクションを完了するためにアクセス許可を必要とする Elastic Beanstalk アクションを指定します。AllNonResourceCalls
ステートメントでは elasticbeanstalk:CheckDNSAvailability
アクションを許可します。このアクションは、elasticbeanstalk:CreateEnvironment
などのアクションを呼び出すときに必要です。また、elasticbeanstalk:CreateStorageLocation
アクションも許可します。このアクションは、elasticbeanstalk:CreateEnvironment
などのアクションに必要です。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}