はじめに
VMを貸し出すという運用の中で、VMの起動停止できるユーザーを渡すということがあるかと思います。
それをAWSのEC2で実現するポリシーを作ってみました。
概要
- ユーザーの
Dept
タグ:値と、同じDept
タグ:値を持つEC2インスタンスの起動停止をできるポリシーを、CloudFormationで作ります- ただし、すべてのEC2インスタンスがリストに表示されます
EC2インスタンスがすべてリストで表示される理由につきましては、以下の記事にあります。
参考
Azure VMの場合
Azure VMで行った場合は以下で記事にしました。
ポリシーのCFnテンプレート
作成するポリシーのCFnテンプレートは以下になります。
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:aaaa
とDept:bbbb
を付与します。
CFnテンプレートで作成したポリシーをアタッチしたユーザーを作成し、タグにDept:aaaa
を付与します。
このユーザーでコンソールログインして、EC2の画面に移動します。インスタンス2台とも閲覧できます。
まずはDept:aaaa
のインスタンスであるtest001を開始します。
次に、Dept:bbbb
のインスタンスであるtest002を開始してみます。
開始できないことが確認できます。
またインスタンスを別のユーザーで起動しておき、停止も失敗することを確認します。
これで、Dept
が同じEC2インスタンスのみ起動停止できるポリシーが確認できました。
おわりに
今回は特定のEC2インスタンスのみ起動停止できるIAMポリシーを作成しました。
利用者に大きな権限を与えてセルフサービス的に使ってもらうこともあるかと思いますが、単純にインスタンスだけを使ってもらうこともある場合にこのポリシーは使えると思います。
この記事がどなたかのお役に立てれば幸いです。