AWS EC2の起動と停止のみが可能なIAMポリシーを作成してIAMポリシーの設定方法を理解する

2021年6月30日

はじめに

本記事ではAWS EC2の起動と停止のみが可能なIAMポリシーの作成方法を説明します。

AWSではEC2に関するAWSの管理ポリシーとしてFull AccessやRead Only Accessが最初から用意されていますが、EC2インスタンスの起動と停止のみが可能で、作成と削除は不可能といったユーザーを作成したい場合には自分でポリシーを作成する必要があります。

前提となる知識

ポリシーのアタッチ先

アクセス制限を行うためのIAMポリシーはIAMのユーザーもしくはユーザーグループにアタッチします。個人に適用するポリシーであればユーザーにアタッチするのが良いですし、例えば、EC2にアクセスする人が複数人いてそれぞれに同じ権限を付けたいのであれば、専用のユーザーグループを作成し、そのユーザーグループに必要なポリシーをアタッチするのが良いと思います。

ポリシーの種類

ポリシーの種類には以下の3種類があります。

  • AWS管理ポリシー
  • カスタマー管理ポリシー
  • インラインポリシー

AWS管理ポリシーはAWS側で用意してくれているポリシー群です。サービスに対して細かく制御を実施しないで良い場合はこのAWS管理ポリシーのみで事足りると思います。

カスタマー管理ポリシーはユーザーが作成可能なポリシーとなります。作成したポリシーはポリシーの一覧に表示されますので、他のユーザーやグループにも適用したい場合にはこちらを利用するのが良いと思います。

インラインポリシーはカスタマー管理ポリシーと同様にユーザーが作成可能なポリシーとなります。カスタマー管理ポリシーと異なり、ポリシーの一覧には表示されません。そのため、作成したポリシーを他のユーザーやグループに適用出来ない他、どのようなポリシーを設定していたかの確認が少し手間になります。

実施方法

実施していく内容

以下の内容を権限設定を実施していきます。今回、インラインポリシーは利用せず、カスタマー管理ポリシーを作成し、それを作成したユーザーグループにアタッチすることでアクセス制限を行います。

  • 作成ユーザー:EC2onlyUSER
  • 作成するユーザーグループ:EC2AccessGroup
  • 作成するカスタマー管理ポリシー:EC2StartStopPolicy
  • アクセス権 : EC2の状態確認、EC2インスタンスの起動・停止

ユーザーとユーザーグループの作成

ユーザーグループは以下のメニューの「グループを作成」から実施します。

ユーザーが作成済であればここでユーザーを指定しておきましょう。アクセス許可ポリシーの設定もここで可能ですが、一旦設定せずにグループを作成して下さい。

これでグループが作成されましたが、未だアクセス許可が設定されていない状態です。

カスタマー管理ポリシーの作成

作成したグループにアタッチするポリシーを作成します。ここではEC2の起動・停止のみを許可するポリシーを作成します。ポリシーのメニューからポリシーの作成をクリックして下さい。

様々なサイトでJSONによるポリシーの記述方法が掲載されていますが、ビジュアルエディタでも簡単に設定出来るので今回はビジュアルエディタで設定を行います。個人的には作成したポリシーの内容をチェックする時にJSONで見るぐらいでも良いかと思います。

ポリシーの設定では以下を設定します

  • サービス:AWSのどのサービスに対するポリシーなのか
  • アクション:アクセスを許可するのか、禁止するのか
  • リソース:EC2のどのリソースに対するポリシーなのか
  • リクエスト条件:細かい条件設定(今回は指定しません)

まずサービスにEC2を選択します。

今回はEC2に対するEC2インスタンスの起動・停止のみの"許可"を与えるポリシーの作成です。アクセスレベルの書き込みの項目から"StartInstances"と"StopInstances"をチェックを入れて下さい。

こういった形で一覧でアクセス権が確認出来るのはビジュアルエディタの魅力かと思いますので是非有効活用して下さい。

リソースの項目では最初に「このアカウント内のいずれか」のチェックを入れて頂くのが簡単です。チェックを入れることでアカウント内で管理している全てのEC2インスタンスを対象とする設定が自動的に作成されます。

対象とするインスタンスを指定したい場合にはEC2のページから該当インスタンスのARN(Amazon Resource Name)を調べて指定することも可能です。

次のステップに進み、必要に応じてタグの設定を行って下さい。問題なければ確認のページに移動し、最後に名前と説明を入れて、「ポリシーの作成」をクリックすることでポリシーの作成が完了します。

これでカスタマー管理ポリシーの作成は完了です。

カスタマー管理ポリシーのアタッチ

先ほど作成したカスタマー管理ポリシーを今回用意したユーザーグループにアタッチします。

個のユーザーグループのメニューからポリシーアタッチしたいユーザーグループを選択して下さい。

今回作成した

最初はそのグループに属するユーザーが一覧で見えていると思いますので、アクセス許可のタブをクリックして、アクセス許可を追加のメニューから「ポリシーをアタッチ」を選択して下さい。

※カスタマー管理ポリシーを作成しない場合はここでインラインポリシーを作成を選んで、ここでポリシーを設定していくことも可能です。

ポリシーは一覧で表示されますので、数を絞るために"EC2″でフィルターを実施します。

先ほど作成したカスタマー管理ポリシーである「EC2StartStopPolicy」とAWS管理ポリシーである「AmazonEC2ReadOnlyAccess」を選択し、最後に「アクセス許可を追加」をクリックして下さい。

これでポリシーのアタッチは完了です。

動作確認

最後に簡単に動作確認を実施しておきましょう。今回のポリシーをアタッチしたユーザーグループに属するユーザーアカウントでログインしてください。

IAMのサービスなどは権限が何もないので大量のエラーが発生します。

EC2のサービスについてはReadAccesssがついているので一見、何のエラーもないように見えますが、インスタンスの削除やインスタンスの作成を行おうとした場合にはやはりエラーで怒られてしまいますが、インスタンスの起動と停止については問題なく出来ることが確認出来るかと思います。

最後に

本記事ではIAMのカスタマー管理ポリシーを利用してEC2の起動と停止のみが行える権限を持つユーザーを作成する方法を説明しました。ポリシーの作成にはJSON形式によるものだけでなく、ビジュアルエディタを使っても簡単に設定が出来ることがご理解頂けたのではないかと思います。

ではまた。