環境構築

AWSにおけるLAMP環境構築(事前準備編)

こんにちは!issaです。

クラウドサーバー、便利ですよね。昔はサーバーを構築する時には筐体選びに始まりデータセンター契約したり、ラック構成を考えたりと大変でしたが、今やボタン一つでできる時代。素晴らしいの一言ですね!今回は、そんな便利なクラウドの中でも無料期間が長く、これからサーバーを勉強しよう!とか、この構成で大丈夫か?みたいな検証を行う際に便利なAWS(Amazon Web Services)の紹介です。AWSを利用したLAMP環境の作成を例にして説明していきます。

今回は、なるべく無料の範囲内での検証環境作成を前提として構築します。初めてAWSにふれる方でも分かるように記載していきますので、これを機にTryしてみてはいかがでしょうか。逆にサーバー環境はいいから、とにかく開発環境が欲しい!といった方は「Cloud9」というAWSサービスもありますので、そちらを利用してみてください。いつか時間があれば、ご紹介させていただきます。

本記事は2回に分けて、下記流れにて説明を行います。

〇事前準備編

〇構築編

  • WEBサーバー (EC2インスタンス) 作成
  • DBサーバー (RDSインスタンス) 作成
  • WEBサーバーからDBサーバーへの接続

AWSは便利な反面、リスクも

AWSは非常に便利で何でもできる印象がありますが、それは裏をかえせば不正アクセス等で利用された場合に大変なリスクを抱えることになります。「aws 不正利用」で検索するととても怖い記事が・・・そうならないためにも、まずは事前準備をしっかりと!

アカウント作成までの流れは、オフィシャルが丁寧に記載してくれていますのでそちらをご参照ください。アカウント作成のリンクもそちらから遷移可能です。

まずは上記URLよりAWSアカウントを取得していただき、終わりましたら次章「アカウント保護」から始めていきましょう!

アカウント保護

適切に保護されていないアカウントを不正に利用されると、犯罪に利用されたり予想もしない請求がきてしまったりと不測の事態が発生する可能性があります。そんな事態にならないためにも事前の設定で備えておきます。

ここでは、下記の流れにて設定をおこなっていきます。

それでは早速アカウントを保護するため「IAM(Identity and Access Management)」の設定をしていきましょう!

ルートアカウントのMFA有効化

MFA(Multi-Factor Authentication)とは、日本語にすると多要素認証となります。
IDとパスワードのみよりも、強力にアカウントを守る事ができますので必ず設定するようにしてください。

①「すべてのサービス」をクリックし全てのサービスを表示してください。
②「セキュリティ、アイデンティティ、コンプライアンス」の中にある「IAM」をクリック。

①「ルートアカウントのMFAを有効化」をクリック。

①MFAの管理をクリック。

①有効にするMFAデバイスを選択します。

※個人的な検証環境等でしたら、スマートフォンがあれば可能な仮想MFAデバイス。
より強固にしたい、もしくは会社等共有の環境であればハードウェアMFAデバイスが良いでしょう。
こちらに、設定が可能なMFAデバイスの説明があります。
 

②有効にするデバイスを選択したら「次のステップ」ボタンをクリック。
今回は個人の検証環境を想定していますので、仮想MFAデバイスを選択しています。


①ここでは、仮想MFAデバイスに関しての注意文が表示されています。
オフィシャルの情報によると、互換性のあるアプリとしては「Google Authenticator」「Authy」というものが利用できます。

※Authyは、クラウドに情報を保存することにより複数の端末間で共有することが可能です。
携帯の紛失時等に復旧できるのも、非常に有難いですね。
そのため、個人で設定する際にはこちらの方が便利かと思います。
会社等での利用の場合、個人端末外で利用される恐れがありますので利用しない方が無難です。

②再度メッセージが不要な場合は「チェックボックス」にチェックを入れてください。
③「次のステップ」ボタンをクリック。

①仮想MFAデバイスで利用するアプリより、QRコードを読み込んでください。
②30秒で数値が更新されますので、連続2回、認証コード1,2と続けて入力してください。
③入力ができましたら「仮想MFAの有効化」ボタンをクリック。

①「完了」ボタンをクリックで、ルートアカウントのMFA有効化が完了です。

①ステータス画面でも、ルートアカウントのMFAを有効化の欄が警告マークではなくなったのが確認できます。

MFAに関しては、金融系サイト等でも利用されていますのでご存知の方も多かったのではないでしょうか?AWSだとここで設定可能だったんですね!

次は、更にセキュリティレベルを上げるため、IP制限をかけるポリシーを作成します。
固定IP環境ではない方は、こちらの手順は飛ばしてください。

IP制限ポリシーの作成

①「ポリシー」をクリック。
②「ポリシーの作成」ボタンをクリック。

①設定内容を、直接記述するために「JSON」タブをクリック。

①今回のコードは「アクセス元が特定のIP以外だった場合、全てのアクションを拒否する」というものになります。
コンソールへのログインを直接防ぐことは、現状のAWSの仕様上できませんが、仮に不正アクセスされたとしても特定のIP以外はほとんどの操作が不可能となります。

IPアドレスはCIDR表記にて記載してください。
※CIDRとは下記SourceIpに記載しているようなIPアドレスの範囲をまとめて記載する記法です。

詳細はこちら


{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "xxx.xxx.xxx.xxx/32",
                    "yyy.yyy.yyy.yyy/28"
                ]
            }
        }
    }
}

②コードの記載が終わったら「Review policy」ボタンをクリック。

①適当な名前を設定してください。今回は「SourceIPRestriction」としました。
②「明示的な拒否」が全サービスに対しておこなわれているのが確認できます。
③「Create policy」ボタンをクリック。

図のように完了メッセージがでれば、IP制限のポリシー作成が完了です。

環境によっては、この設定は不要な場合もあるかと思います。しかし、次の設定は各個人の権限に関わる所となりますので読み飛ばしは厳禁ですよ!

IAMグループの作成

個々のユーザー毎にポリシーを設定していくと、大変手間がかかります。
そのため、ある程度のポリシーをまとめるためのグループを作っておきます。
各ユーザーをこのグループに所属させることにより、一括して管理が可能です。

用途によって、グループは様々作成する必要があると思いますが
今回は管理者グループと、一般開発者グループの2つを用意します。

①「グループ」をクリック。
②「新しいグループの作成」ボタンをクリック。

①管理者用グループ名を入力。ここでは「Administrators」とします。
②「次のステップ」ボタンをクリック。

①検索ボックスに「Admin」と記入。
②検索結果から「AdministratorAccess」のチェックボックスをクリック。
複数ポリシーを選択しますので、まだ「次のステップ」ボタンは押さないでください。

①検索ボックスに先ほど作成したポリシー名「SourceIPRestriction」を入力。
②先ほどと同様に「チェックボックス」をクリック。

①先ほどチェックしたポリシーが表示されていることを確認してください。
②問題なければ「グループの作成」ボタンをクリックして、管理者グループの作成は完了です。

続いて、一般開発グループを作成します。
今回はEC2とRDSの全ての機能を操作することが可能な権限を与えていますが、
実際の運用時には必要最小限の権限のみを与えることをおススメします。

①開発用グループ名を入力。ここでは「Developers」とします。
②「次のステップ」ボタンをクリック。

①検索ボックスに「ec2」と記入。
②検索結果から「AmazonEC2FullAccess」のチェックボックスをクリック。

①検索ボックスに「RDSFull」と記入。
②検索結果から「AmazonRDSFullAccess」のチェックボックスをクリック。

①検索ボックスに先ほど作成したポリシー名「SourceIPRestriction」を入力。
②先ほどと同様に「チェックボックス」をクリック。
③「次のステップ」ボタンをクリック。

①先ほどチェックしたポリシーが表示されていることを確認してください。
②問題なければ「グループの作成」ボタンをクリックして、一般開発グループの作成も完了です。

グループの作成ができましたので続いてユーザーを作成していきます。
まだまだ序章なのでついてきてくださいね!

IAMユーザーの作成

グループの作成ができましたので、続いてログイン用のIAMユーザーを作成します。
ユーザーもグループと同様、管理者および一般開発者をそれぞれ作成していきます。

①メニューから「ユーザー」をクリック。
②「ユーザーを追加」ボタンをクリック。

①管理者名を入力
②ログインが可能なユーザーとするため「AWS マネジメントコンソールへのアクセス」にチェック。
③「次のステップ:アクセス権限」ボタンをクリック。

①今回は管理者のユーザーですので、先ほど作成した「Administrator」グループへ所属させます。
②「次のステップ:確認」ボタンをクリック。

①Administratorグループに所属していることを確認し「ユーザーの作成」ボタンをクリック。

①三か所に同じ番号がありますが、このどこかでパスワードを確認しておいてください。
これ以降、同じパスワードを確認するすべがなくなりますので注意してください。
②パスワードの確認が完了したら「閉じる」ボタンをクリックし、ユーザーの作成は完了です。
同様の手順で、一般開発ユーザーも作成します。選択するグループを「Administrator」から「Developers」へ変えること以外同じですので、ここでの説明は割愛します。

先ほどまでの項目で、ユーザーの作成が完了しました。
ルートアカウントと同様に、IAMユーザーへもMFAを適用します。

①MFAが有効でないことが確認できます。
②「ユーザー名」をクリックします。

①「認証情報」タブをクリック。
②「ペンの画像」をクリック。
ここからは、ルートアカウントの時と同様の手順でMFAを対象のMFAデバイスに紐づけてください。

ここまでの作業で、アカウントの保護に関する設定ができました。
続いて請求関連の設定をおこなっていきます。

請求関連設定

AWSの特徴でもある従量課金。
少ない金額で運用が可能ですが、間違った運用をおこなってしまうと大変な請求が来ることもありえます。
計画的な利用のためのサービスが、既に用意されていますのでそちらを利用していきます。

ここでは、下記の流れにて設定をおこなっていきます。

予算設定

一か月の運用に対する予算を設定していきます。
ここでは、あまりコストをかけない想定で10ドルを予算額にしていきます。


※このサービスは、あくまで予算アラートです。設定金額を超えたからと言っていきなりサービスが停止するわけではないのでご注意ください。
また、予算を超えているかのチェックはリアルタイムにおこなわれるわけではなく、定期的なチェック時に超えていたらアラートメールが飛ぶという形になりますので
多額の料金がかかるサービスを利用する場合、それに応じた予算の設定が必要になります。

①画面右上のアカウント名をクリックし、メニューを表示させます。
②メニュー内より「請求ダッシュボード」をクリック。

①ダッシュボードが表示されたら、メニューより「予算」をクリック。
②AWS Budgets(予算)ページへ遷移したら「予算を作成」ボタンをクリック。

①予算に名前を付けます。
※複数アカウントを所持する予定がある方は、ここで付ける名前には全てのアカウントで一意になる名前を付けることをおススメします。
アラートメールには、この予算名のみが記載されるため
1つのアドレスで複数アカウントの通知を受け取っていた場合は
どのアカウントからのアラートなのか分からなくなってしまいます。

②予算額をドル単位で記載します。
③どのタイミングで通知を受け取るかを設定します。
 今回は予算の50%。5ドルを超えたら通知されるように設定しています。
④通知先のアドレスを設定します。
 即座に気づけるように、今回は携帯アドレスを設定しました。
⑤全ての入力が終わったら「作成」ボタンをクリック。

これで、予算の作成が完了です。

請求設定

定期的に請求ダッシュボードのチェックは必要ですが、
請求書に関してはメールでも受信できるようにしておきます。

①メニューより「設定」をクリック。
②「電子メールで PDF 版請求書を受け取る」をチェック。
③予算の設定はしていますが「無料利用枠の使用のアラートの受信」にもチェックを付けてより確実にしておきましょう。
④アラート受信のアドレスを設定。
⑤「設定の保存」ボタンをクリック。
画面上部に「設定を保存しました」とメッセージが表示されたら設定完了です。

IAMユーザーへの請求情報閲覧権限付与

このままですと、ルートアカウントでなければ請求関連の参照ができません。
そこで、先ほど作ったAdministratorグループに所属したユーザーには参照権限を与えるようにします。

①画面右上の「アカウント名」をクリック。
②メニューから「アカウント」をクリック。

①初期状態では、IAMユーザーが請求情報へアクセスできないようになっています。
②「編集」をクリック

①「IAM アクセスのアクティブ化」にチェック。
②「更新」ボタンをクリック。

①有効になっていたら、アクセスが可能になります。
※今回はAdministratorグループへ「AdministratorAccess」権限を付与しているため、その他操作は不要でした。
「AdministratorAccess」権限を持たないユーザーへ個別に設定する場合には、別途下記URLを参考に設定する必要があります。

事前準備完了

これで事前準備は完了です。
事前準備めんどくさーい!と思った方もいらっしゃるかもしれませんが、何事も自己防衛大事です。後悔してからでは遅いのです!

次回は「AWSにおけるLAMP環境構築入門(構築編)」です。

いよいよインスタンスの作成に入っていきます!
インスタンスとは「AWS クラウドにある仮想サーバー」を意味します。
ようやく本題って感じですね!
接続できるところまで記載していきますので、お楽しみに!!

LINEで送る
Pocket

この記事を書いた人・プロフィール
issa
ニックネーム: issa

カタリスト創業メンバーの一人。
主にPHPを使う事が多いですが、過去にかじった言語は無数にあります。
社内NWの構築や各サーバの管理等インフラ周りも担当してます。

趣味:お酒、バイク、音楽(主にロックかボカロ)