

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

# リソースに対するアクセス許可に基づいたポリシーの例
<a name="AWSHowTo.iam.example.resource"></a>

このセクションでは、特定の Elastic Beanstalk リソースにアクセスする Elastic Beanstalk アクションに対するユーザーのアクセス許可を制御するユースケースについて説明します。そのユースケースをサポートするサンプルポリシーについて説明します。Elastic Beanstalk リソースのポリシーの詳細については、「[カスタムユーザーポリシーの作成](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)」を参照してください。ユーザーおよびグループにポリシーをアタッチする方法については、* AWS Identity and Access Managementの使用*の「[IAM ポリシーの管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)」を参照してください。

このユースケースの Example Corp. は小規模コンサルタント会社で、2 つのカスタマー用にアプリケーションを開発しています。開発マネージャーである John は、2 つの Elastic Beanstalk アプリケーション、app1 と app2 の開発を監督しています。John は 2 つのアプリケーションを開発し、テストをいくつか実行します。また、ジョンのみがこの 2 つのアプリケーションに対して本番環境を更新できます。ジョンが app1 および app2 に対して必要とする許可を次に示します。
+ アプリケーション、アプリケーションバージョン、環境、および設定テンプレートを表示する
+ アプリケーションバージョンを作成し、ステージング環境をデプロイする
+ 本番環境を更新する
+ 環境を作成および終了する

テスターである Jill には、アプリケーション、アプリケーションバージョン、環境、および設定テンプレートの 4 つのリソースを表示するためのアクセス許可が必要です。これにより、2 つのアプリケーションを監視およびテストします。ただし、Elastic Beanstalk リソースに変更を加えることはできません。

app1 の開発者である Jack には、app1 のすべてのリソースを表示するためのアクセス許可が必要です。また、app1 のアプリケーションバージョンを作成し、ステージング環境にデプロイする必要もあります。

Judy は Example Corp の AWS アカウントの管理者です。 John、Jill、Jack の IAM ユーザーを作成し、それらのユーザーに次のポリシーをアタッチして、app1 および app2 アプリケーションに適切なアクセス許可を付与します。

## 例 1: John - app1、app2 の開発マネージャー
<a name="AWSHowTo.iam.policies.john"></a>

確認および管理しやすいように John のポリシーを 3 つに分割しました。2 つのアプリケーションで John が開発、テスト、デプロイの各アクションを実行するための許可は、このすべてのポリシーによって付与されます。

最初のポリシーは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS、および CloudFormationのアクションを指定します。Elastic Beanstalk は、環境を作成するときに、これらの追加サービスに依存して基盤となるリソースをプロビジョニングします。

このポリシーは例です。これにより、Elastic Beanstalk がアプリケーションと環境の管理に使用する AWS 製品に幅広いアクセス許可が付与されます。たとえば、 `ec2:*`は IAM ユーザーが AWS アカウント内の任意の Amazon EC2 リソースに対して任意のアクションを実行できるようにします。これらのアクセス許可は、Elastic Beanstalk で使用するリソースに限定されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することをお勧めします。

------
#### [ JSON ]

****  

```
{
   "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: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:PassRole"
   ],
   "Resource": "arn:aws:iam::111122223333:role/MyRole"
   }
   ]
   }
```

------

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` など) を許可します。

------
#### [ JSON ]

****  

```
{
   "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` などのアクションに必要です。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability",
            "elasticbeanstalk:CreateStorageLocation"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

## 例 2: Jill - app1、app2 のテスター
<a name="AWSHowTo.iam.policies.jill"></a>

確認および管理しやすいように Jill のポリシーを 3 つに分割しました。2 つのアプリケーションで Jill がテストとモニタリングアクションを実行するための許可は、このすべてのポリシーによって付与されます。

最初のポリシーでは`Describe*`、Auto Scaling、Amazon S3`List*`、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS、および CloudFormation (非レガシーコンテナタイプの場合) に対する 、、および `Get*`アクションを指定して、Elastic Beanstalk アクションが app1 および app2 アプリケーションの基盤となるリソースに関する関連情報を取得できるようにします。

------
#### [ JSON ]

****  

```
{
   "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`）の表示を許可します。

------
#### [ JSON ]

****  

```
{
   "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` アクションを許可します。このアクションは、一部の表示アクションに必要です。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

## 例 3: Jack - app1 の開発者
<a name="AWSHowTo.iam.policies.jack"></a>

確認および管理しやすいように Jack のポリシーを 3 つに分割しました。app1 リソースで Jack が、テスト、モニタリング、デプロイの各アクションを実行するための許可は、このすべてのポリシーによって付与されます。

最初のポリシーでは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS、および CloudFormation (レガシー以外のコンテナタイプの場合) のアクションを指定して、Elastic Beanstalk アクションが app1 の基盤となるリソースを表示して操作できるようにします。サポートされているレガシーではないコンテナタイプのリストについては、「[一部のプラットフォームバージョンがレガシーとマークされているのはなぜですか?](using-features.migration.md#using-features.migration.why)」を参照してください。

このポリシーは例です。これにより、Elastic Beanstalk がアプリケーションと環境の管理に使用する AWS 製品に幅広いアクセス許可が付与されます。たとえば、 `ec2:*`は IAM ユーザーが AWS アカウント内の任意の Amazon EC2 リソースに対して任意のアクションを実行できるようにします。これらのアクセス許可は、Elastic Beanstalk で使用するリソースに限定されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することをお勧めします。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ec2:*",
            "elasticloadbalancing:*",
            "autoscaling:*",
            "cloudwatch:*",
            "s3:*",
            "sns:*",
            "rds:*",
            "cloudformation:*"
         ],
         "Resource":"*"
      }
   ]
}
```

------

2 番目のポリシーでは、app1 リソースに対する Jack による実行を許可する Elastic Beanstalk アクションを指定します。

------
#### [ JSON ]

****  

```
{
   "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"
               ]
            },
            "ArnLike":{
               "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` などのアクションに必要です。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability",
            "elasticbeanstalk:CreateStorageLocation"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------