タグを使用した Elastic Beanstalk リソースへのアクセスのコントロール - AWS Elastic Beanstalk

タグを使用した Elastic Beanstalk リソースへのアクセスのコントロール

AWS Identity and Access Management (IAM) ユーザーポリシーステートメントの条件は、Elastic Beanstalk アクションが完了するために必要なリソースへのアクセス許可を指定するために使用する構文の一部です。ポリシーステートメントの条件の指定の詳細については、「Elastic Beanstalk アクションのリソースと条件」を参照してください。条件内でタグを使用することは、リソースとリクエストへのアクセスをコントロールする 1 つの方法です。Elastic Beanstalk リソースのタグ付けについては、「Elastic Beanstalk アプリケーションリソースのタグ付け」を参照してください。このトピックでは、タグベースのアクセスコントロールについて説明します。

IAM ポリシーの設計時に特定のリソースへのアクセス権を付与することで、詳細なアクセス許可を設定できます。管理するリソースの数が増えるに従って、このタスクはより困難になります。リソースにタグ付けしてポリシーステートメント条件でタグを使用することにより、このタスクをより容易にすることができます。特定のタグを使用して任意のリソースへのアクセス権を一括して付与します。次に、作成時や以降の段階で、このタグを関連リソースに繰り返し適用します。

タグは、リソースにアタッチするか、タグ付けをサポートするサービスへのリクエストに渡すことができます。Elastic Beanstalk では、リソースにタグを付けることができ、一部のアクションにタグを含めることができます。IAM ポリシーを作成するときに、タグ条件キーを使用して以下をコントロールできます。

  • 既にあるタグに基づいて、どのユーザーが環境に対してアクションを実行できるか。

  • アクションのリクエストで渡すことができるタグ。

  • リクエストで特定のタグキーを使用できるかどうか。

タグ条件キーの完全な構文とセマンティクスについては、IAM ユーザーガイドの「タグを使用したアクセスコントロール」を参照してください。

以下の例は、Elastic Beanstalk ユーザー用のポリシーでタグ条件を指定する方法を示しています。

例 1: リクエストのタグに基づいてアクションを制限する

Elastic Beanstalk の管理ユーザーポリシー、AdministratorAccess-AWSElasticBeanstalk では、Elastic Beanstalk で管理されている任意のリソースに対して、任意の Elastic Beanstalk アクションを実行するための、無制限のアクセス許可をユーザーに付与します。

以下のポリシーでは、この権限を制限し、未認可のユーザーに対して Elastic Beanstalk の本番稼働環境を作成するアクセス許可を拒否します。これを行うには、リクエストに指定されているタグ CreateEnvironment の値が stage または gamma のいずれかである場合、prod アクションを拒否します。また、このポリシーでは、タグ変更アクションにこれらの同じタグ値を含めることや stage タグを完全に削除することを許可しないことで、これらの未承認のユーザーが本番稼働用環境のステージを改ざんするのを防ぎます。お客様の管理者は、管理されたユーザーポリシーに加えて、この IAM ポリシーを未認可の IAM ユーザーにアタッチする必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "elasticbeanstalk:CreateEnvironment", "elasticbeanstalk:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/stage": ["gamma", "prod"] } } }, { "Effect": "Deny", "Action": [ "elasticbeanstalk:RemoveTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["stage"] } } } ] }

例 2: リソースタグに基づいてアクションを制限する

Elastic Beanstalk の管理ユーザーポリシー、AdministratorAccess-AWSElasticBeanstalk では、Elastic Beanstalk で管理されている任意のリソースに対して、任意の Elastic Beanstalk アクションを実行するための、無制限のアクセス許可をユーザーに付与します。

以下のポリシーでは、この権限を制限し、未認可のユーザーに対して Elastic Beanstalk 本番稼働環境でアクションを実行するアクセス許可を拒否します。これを行うには、環境に含まれているタグ stage の値が gamma または prod のいずれかである場合、特定のアクションを拒否します。お客様の管理者は、管理されたユーザーポリシーに加えて、この IAM ポリシーを未認可の IAM ユーザーにアタッチする必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "elasticbeanstalk:AddTags", "elasticbeanstalk:RemoveTags", "elasticbeanstalk:DescribeEnvironments", "elasticbeanstalk:TerminateEnvironment", "elasticbeanstalk:UpdateEnvironment", "elasticbeanstalk:ListTagsForResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": ["gamma", "prod"] } } } ] }

例 3: リクエストのタグに基づいてアクションを許可する

以下のポリシーでは、Elastic Beanstalk の開発アプリケーションを作成するアクセス許可をユーザーに付与します。

これを行うには、リクエストに指定されているタグ CreateApplication の値が AddTags である場合、stage アクションと development アクションを許可します。aws:TagKeys 条件により、ユーザーは他のタグキーを追加できなくなります。特に、stage タグキーの大文字と小文字が確実に区別されます。このポリシーは、Elastic Beanstalk の管理ユーザーポリシー、AdministratorAccess-AWSElasticBeanstalk が、IAM ユーザーにアタッチされていない場合に役立ちます。管理ポリシーでは、Elastic Beanstalk で管理される任意のリソースに対して任意の Elastic Beanstalk アクションを実行する無制限のアクセス許可をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:CreateApplication", "elasticbeanstalk:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/stage": "development" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["stage"] } } } ] }

例 4: リソースタグに基づいてアクションを制限する

以下のポリシーでは、Elastic Beanstalk の開発アプリケーションに対するアクションを実行し、これらのアプリケーションに関する情報を取得するアクセス許可をユーザーに付与します。

これを行うには、アプリケーションに含まれているタグ stage の値が development である場合に、特定のアクションを許可します。aws:TagKeys 条件により、ユーザーは他のタグキーを追加できなくなります。特に、stage タグキーの大文字と小文字が確実に区別されます。このポリシーは、Elastic Beanstalk の管理ユーザーポリシー、AdministratorAccess-AWSElasticBeanstalk が、IAM ユーザーにアタッチされていない場合に役立ちます。管理ポリシーでは、Elastic Beanstalk で管理される任意のリソースに対して任意の Elastic Beanstalk アクションを実行する無制限のアクセス許可をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:UpdateApplication", "elasticbeanstalk:DeleteApplication", "elasticbeanstalk:DescribeApplications" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "development" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["stage"] } } } ] }