タグを使って Amazon EC2 インスタンスへのアクセスを管理する、IAM ポリシーの作成方法を教えてください。

最終更新日: 2019 年 4 月 17 日

タグを使って Amazon Elastic Compute Cloud (Amazon EC2) インスタンスへのアクセスを管理する、AWS Identity and Access Management (IAM) ポリシーの作成方法を教えてください。

簡単な説明

次の手順に従うと、小規模なデプロイの Amazon EC2 インスタンスへのアクセスを管理することができます。

  1. ユーザーやグループに対してアクセスを許可するインスタンスに、特定のタグを追加する。
  2. 特定のタグでインスタンスへのアクセスを許可する IAM ポリシーを作成する。
  3. インスタンスへのアクセスを許可するユーザーやグループに、IAM ポリシーをアタッチする。

解決方法

EC2 インスタンスのグループにタグを追加する

Amazon EC2 コンソールを開き、ユーザーやグループに対してアクセスを許可する EC2 インスタンスのグループにタグを追加します。既存のタグがない場合は、新規タグを作成します。

注: リソースにタグを付けるときは、事前に Tag Restrictions をよく読んで理解してください。Amazon EC2 のタグは大文字と小文字が区別されます。

特定のタグを付けたインスタンスへのアクセスを許可する IAM ポリシーを作成する

以下を実行する IAM ポリシーを作成します。

  • タグの付いたインスタンスに対する管理を許可する。
  • 条件キー ec2:ResourceTag/UserName の値がポリシー変数 aws:username と一致した場合に Amazon EC2 リソースへのアクセスを許可する、条件付きステートメントを含める。ポリシー変数 ${aws:username} は、IAM がこのポリシーを評価する際に、現在の IAM ユーザーのフレンドリ名に置き換えられる。
  • Amazon EC2 リソースに対する ec2:Describe* のアクションへのアクセスを許可する。
  • ec2:CreateTagsec2:DeleteTags の各アクションへのアクセスを明示的に拒否し、ユーザーがタグを作成または削除することを禁止する。
    注: これにより、ユーザーが EC2 インスタンスに特定のタグを追加してインスタンスを管理することを禁止します。

完成したポリシーは、例えば以下のように表示されます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/UserName": "${aws:username}"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "*"
    }
  ]
}

インスタンスへのアクセスを許可するユーザーやグループに IAM ポリシーをアタッチする

最後に、インスタンスへのアクセスを許可するユーザーやグループに対して作成した IAM ポリシーをアタッチします。IAM ポリシーをアタッチするには、AWS マネジメントコンソール、AWS CLI、または AWS API を使用します。


この記事は役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合