LoginSignup
0
0

特定のEC2インスタンスのみ起動停止できるIAMポリシー

Posted at

はじめに

VMを貸し出すという運用の中で、VMの起動停止できるユーザーを渡すということがあるかと思います。

それをAWSのEC2で実現するポリシーを作ってみました。

概要

  • ユーザーのDeptタグ:値と、同じDeptタグ:値を持つEC2インスタンスの起動停止をできるポリシーを、CloudFormationで作ります
    • ただし、すべてのEC2インスタンスがリストに表示されます

EC2インスタンスがすべてリストで表示される理由につきましては、以下の記事にあります。

参考

Azure VMの場合

Azure VMで行った場合は以下で記事にしました。

ポリシーのCFnテンプレート

作成するポリシーのCFnテンプレートは以下になります。

create_policyStartStop.yaml
AWSTemplateFormatVersion: '2010-09-09'
  
Resources:
  PolicyStartStopEc2:
    Type: 'AWS::IAM::ManagedPolicy'
    Properties:
      ManagedPolicyName: 'StartStopEc2'
      Path: /
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Action: 'ec2:DescribeInstances'
            Resource: '*'
          - Effect: Allow
            Action: 
              - 'ec2:StartInstances'
              - 'ec2:StopInstances'
            Resource: 'arn:aws:ec2:*:*:instance/*'
            Condition:
              StringEquals:
                aws:ResourceTag/Dept: '${aws:PrincipalTag/Dept}'

確認

Dept:aaaaのユーザーを作成し、Dept:aaaaのEC2の起動停止を確認してみます。

まずEC2インスタンスを2台作成します。タグはそれぞれにDept:aaaaDept:bbbbを付与します。
image.png
image.png

CFnテンプレートで作成したポリシーをアタッチしたユーザーを作成し、タグにDept:aaaaを付与します。
image.png
image.png

このユーザーでコンソールログインして、EC2の画面に移動します。インスタンス2台とも閲覧できます。
image.png

まずはDept:aaaaのインスタンスであるtest001を開始します。
image.png

正常に開始を確認したら、停止できることも確認します。
image.png

次に、Dept:bbbbのインスタンスであるtest002を開始してみます。
image.png
開始できないことが確認できます。

またインスタンスを別のユーザーで起動しておき、停止も失敗することを確認します。
image.png

これで、Deptが同じEC2インスタンスのみ起動停止できるポリシーが確認できました。

おわりに

今回は特定のEC2インスタンスのみ起動停止できるIAMポリシーを作成しました。
利用者に大きな権限を与えてセルフサービス的に使ってもらうこともあるかと思いますが、単純にインスタンスだけを使ってもらうこともある場合にこのポリシーは使えると思います。

この記事がどなたかのお役に立てれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0