AWSを始めとしたクラウドサービスを会社で使っていると、マネージメントコンソールの操作に対して、ユーザ毎に利用できる機能を制限したり、アクセスできるIPアドレスなどを制限したいという要件が出てくることがあると思います。
AWSのIAMという機能を使うと、そういったことを簡単に細かく設定することができますので、今回はその紹介です。
今回は要件例として、以下の内容でポリシーを作ってみます。
- 特定アカウントに対して、権限をEC2とRoute53の参照権限のみにする。
- 特定のIPアドレスからのみアクセス可能IPにする。
では、早速見ていきます。
ユーザの作成
まずは、AWSコンソールにログインし、IAMの画面で「Users」をクリックします。
「Users」の画面で、「Create New Users」をクリックします。
次に、作成するユーザ名(testuser)を入力して、「Create」をクリックします。
次の画面で、「Download Credentials」をクリックして、「credentials.csv」ファイルをダウンロードします。
このファイルには、アクセスキーとシークレットキーが書かれていて、このタイミングでしかダウンロードできないので
ダウンロードしておきます。
ダウンロードできたら、「Close Windows」をクリックします。
これで、「testuser」が作成出来ました。
ログイン設定
このままの状態では、「testuser」でAWSコンソールにログインできないので、ログインできるようにパスワードの設定などをしていきます。
画面下にある、「Security Credentials」タブをクリックして、右下の「Managed Password」をクリックします。
すると、パスワード設定について確認が出ますので、以下のいずれかを選択して「Apply」をクリックします。
- 初期状態では、「Assign an auto-generated password」になっていて、パスワードが自動生成されます。
- もう1つの「Assign a custom password」は自分でパスワードが作成できます。
次の画面で、先ほどと同様に「credentials.csv」ファイルをダウンロードします。
このファイルは名前こそ先ほどと同じですが、このファイルには、AWSコンソールにアクセスするパスワードとURLが記載されているので、ここで必ずダウンロードします。
ダウンロードできたら、「Close Window」をクリックします。
ポリシーの作成
次に、アクセスポリシーを設定していきます。
「Permissions」タブをクリックして、「Attach User Policy」をクリックします。
「Policy Generator」を選択して、「Select」をクリックします。
まずはEC2のポリシーを作るので「AWS Service」に「Amazon EC2」をプルダウンから選択します。
次に「Actions」から参照機能を全てチェックします。
(Describe~となっているもの全てです)
次に「Add Conditions(Optional)」をクリックします。
別ウィンドウが開くので、「Condition」に「ipAddress」を選択します。
「Key」に「aws:Sourceip」を選択して、「Value」に「アクセスを許可するIPアドレス」を入力します。
入力したら「Add Condition」をクリックします。
設定が追加されたことを確認して、右上の「Hide」をクリックします。
元のウィンドウに戻って、「Add Statement」をクリックします。
「Add Statement」をクリックすると、設定した内容が表示されますので、一番下にスクロールして、「Continue」をクリックします。
作ったポリシーが、JSON形式で出力されます。
そのまま「Apply Policy」をクリックします。
これで、「EC2の参照権限のみ & EC2のアクセスIPアドレス制限」ポリシーが出来ました。
同様に、「Route53の参照権限のみ & Route53のアクセスIPアドレス制限」ポリシーを作っていきます。
手順は先ほどと全く同じです。
Route53の参照権限のみの場合は、許可する「Actions」には「Get~」と「List~」のものを全て選択します。
これで要件のアクセス制限が完成しました。
確認
試しに、許可しているIPアドレス以外からアクセスしてみると、EC2だと、以下の様に中身を見ることが出来ません。(※アクセスするURLとログインパスワードは、先ほどダウンロードしたCSVファイルに記載されています。)
Route53の方も、エラーになり、情報を取得出来ませんでした。
許可しているIPからアクセスしても、EC2でインスタンスを作ることはできません。
Route53でも、ゾーンを新たに作成することが出来ません。
また、EC2とRoute53以外にアクセスしても、参照することができません。
試しにS3にアクセスすると、「権限がない」とエラーになります。
IAMは、派手さは無い機能ですが、先日発表された、AWSコンソールの操作記録が取れる「CloudTrail」と合わせて、セキュアな環境づくりには欠かせない機能です。
是非ともご活用下さい。
次回も引き続き、クラウド関連のことを紹介したいと思います。
更新予定は、1月中旬頃です。