IAM ユーザーによるアクセスを特定の Amazon EC2 リソースに制限することはできますか?

最終更新日: 2020 年 8 月 12 日

AWS Identity and Access Management (IAM) ユーザーまたはグループのアクセスを特定の Amazon Elastic Compute Cloud (Amazon EC2) リソース 1 つ、または同じ AWS アカウントにある複数のリソースグループのための Amazon EC2 リソースグループに制限したいと考えています。これはどのように実行できますか?

解決方法

最も重要な Amazon EC2 アクションは、リソースレベルのアクセス許可または条件をサポートしておらず、AWS リージョン以外の基準で IAM ユーザーまたはユーザーグループの Amazon EC2 リソースへのアクセスを分離することは、ほとんどのユースケースに適切ではありません。

その代わりに、AWS Organizations を介して複数の異なる AWS アカウントをリンクすることを検討してください。その後、それぞれのアカウントにある IAM ユーザーグループを分離します。

同じアカウントにあるリソースをリージョンまたは条件別に分離する必要がある場合は、まずリソースレベルのアクセス許可と条件をサポートする EC2 アクションのリストをチェックして、ユースケースがこのソリューションをサポートすることを確認してください。

次に、IAM コンソールを開いて、以下のような IAM ポリシーを作成します。

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ec2:Describe*",
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:StartInstances",
            "ec2:StopInstances",
            "ec2:RebootInstances"
         ],
         "Resource":[
            "arn:aws:ec2:us-east-1:111122223333:instance/*"
         ],
         "Condition":{
            "StringEquals":{
               "ec2:ResourceTag/Owner":"Bob"
            }
         }
      }
   ]
}

注意: 所有者の Bob 、および AWS リージョンをご使用の環境のパラメータに置き換えてください。

このポリシー例では、タグ値が Bob になっている所有者のタグキーがある米国東部 (バージニア北部) [us-east-1] リージョン内における EC2 インスタンスの起動/停止/再起動のみに IAM ユーザーまたはグループのアクセスが制限されます。

最後に、IAM ユーザーのグループごとに異なるリージョンを使用して、それぞれのグループに同様のポリシーを作成します。

ユースケースのタグ付けとベストプラクティスについては、タグ付けのベストプラクティスを参照してください。