0
0

More than 1 year has passed since last update.

第5回 The Twelve-Factor App on AWS & Django(AWSで初期設定をしようー前編)

Last updated at Posted at 2022-08-22

目次

はじめに

前回の記事でAWSアカウントが作成できたので、今回はAWSを本格的に利用する前に不正利用を受けたりなどしないよう必要な初期設定を実施したいと思います。実施すべき設定が多いので、前半・後半の2回に分けてまとめたいと思います。

ルートユーザーの保護

AWSで利用できるユーザーとしてルートユーザーとIAMユーザーがあります。

ルートユーザーとは、アカウントのAWSリソースに対して無制限のアクセス権限を持ち、アカウントの契約情報を変更したり解約したりもできるユーザーで、流出してしまうと最悪アクセスできなくなってしまうので、ベストプラクティスとして乗っ取りを受けないよう対策を行い、できるだけ普段はルートユーザーを利用しないように設定します。

IAMユーザーを作成し、作成したIAMユーザーを通常の開発・運用では利用するようにします。後程、IAMユーザーを作成します。

今回ルートユーザーを保護するためにMFA(多要素認証)を設定します。AWSマネジメントコンソールのホーム画面にアクセスします。アクセスできたら、「Recently visited」にある「IAM」をクリックします。もしなければ上部の検索ボックスに「IAM」と入力してアクセスして下さい。
root_user_0.png

IAMのダッシュボード画面にアクセスできたら、画面中部の「Add MFA for root user」にある「Add MFA」ボタンをクリックします。
root_user_1.png

MFAの設定画面にアクセスできたら、「Activate MFA」ボタンをクリックします。
root_user_2.png

MFAデバイスの種類を選択します。仮想デバイスと物理デバイスを選択できますが、物理デバイスの用意が難しい場合が多いと思うので、スマートフォンアプリ等で設定可能な仮想MFAデバイスを使用します。「Virtual MFA device」を選択し、「Continue」ボタンをクリックします。
root_user_3.png

仮想のMFAデバイスとしてGoogle Authenticato‪r‬(Google 認証システム)を利用します。お手持ちのスマートフォンのOSに応じてインストールして下さい。

  • iPhone:Google Authenticato‪r‬
  • Android:Google 認証システム

Google Authenticato‪r‬(Google 認証システム)をインストールできたら、「Show QR code」をクリックし、QRコードを表示します。QRコードを表示できたら、Google Authenticato‪r‬(Google 認証システム)でスキャンします。
root_user_4.png

スキャンできたら、Google Authenticato‪r‬(Google 認証システム)にワンタイムパスワード(6桁の数字)を表示するようになり、30秒ごとに新しいワンタイムパスワードに切り替わります。表示中のワンタイムパスワードを「MFAコード1」に入力し、続けて表示する新しいワンタイムパスワードを「MFAコード2」に入力して「Assign MFA」ボタンをクリックします。
root_user_5.png

無事ルートユーザーにMFAを設定することができました。「Close」ボタンをクリックします。
root_user_6.png

ルートユーザーにMFAデバイスが設定済みであることを確認できます。
root_user_7.png

一応、ルートユーザーで「Access keys(access key ID and secret access key)」を展開して、アクセスキーとシークレットアクセスキーを設定していないことを確認します。
root_user_9.png

IAMのダッシュボード画面にアクセスすると、Security recommendationsが全てOKになっていることを確認できます。
root_user_8.png

設定が完了しました。次回以降ルートアカウントでログインすると、MFAコードを入力しないとログインできないようになりました。
root_user_10.png

請求情報を設定変更する

請求情報にデフォルトではルートユーザーでしかアクセスできないので、IAMユーザーでもアクセスできるようにします。

右上のアカウント設定から「Account」をクリックします。
billing_1.png

アカウントの設定画面にアクセスできたら、「IAM User and Role Access to Billing Information」へ移動し、「Edit」をクリックします。
billing_2.png

編集画面に切り替わるので、「Activate IAM Access」にチェックをつけて「Update」ボタンをクリックします。
billing_4.png

請求情報にIAMユーザーでもアクセスできるようになりました。
billing_5.png

管理者のIAMユーザーを作成

IAMを利用すると、個人ごとにユーザーを発行するので、操作ログを追跡することができ、それぞれ必要な権限のみを設定することができます。だから、最悪認証情報が流出しても許した権限のみしか操作できないので、被害を限定的にできます。

ルートユーザーは使用しないようにしましたので、まずは管理者となるIAMユーザーを作成します。

IAMのダッシュボード画面にアクセスし、メニューにある「User Groups」をクリックします。
iam_1.png

「Create group」ボタンをクリックします。
iam_2.png

グループの名前を入力し、作成するグループにアタッチするポリシーを選択します。今回グループの名前を「Administrator」とし、アタッチするポリシーとして「AdministratorAccess」を選択します。「Create group」ボタンをクリックします。
iam_3.png

「Administrator」グループが作成できました。続いて、IAMユーザーを作成します。ナビゲーションメニューにある「Users」をクリックします。
iam_4.png

ユーザーの名前を入力します(今回Admin)。「Select AWS credential type」では「Password - AWS Management Console access」をだけを選択し、「Console password」では「Autogenerated password」を選択します。最後に「Require password reset」にチェックが付いていることを確認して「Next: Permissions」ボタンをクリックします。
iam_7.png

ユーザーの所属グループを選択します。Administratorグループにチェックが付いていることを確認して、「Next: Tags」ボタンをクリックします。
iam_8.png

タグはひとまず不要なので、何も入力しないで、「Next: Review」ボタンをクリックします。
iam_9.png

作成するユーザーの設定を確認して、「Create user」ボタンをクリックします。
iam_10.png

IAMユーザーが作成できました。「Download .csv」ボタンをクリックして、作成したユーザーの認証情報をダウンロードします。ダウンロードしたファイルは大切に保管しましょう。
iam_11.png

IAMユーザーが作成できたことを確認できます。
iam_12.png

一旦ルートユーザーはログアウトして、作成したIAMユーザーでログインしましょう。先程ダウンロードしたファイルにある認証情報を使ってIAMユーザーとしてログインします。
iam_15.png

初回ログインするとパスワードの変更画面に遷移するので、新しいパスワードを入力します。
iam_16.png

IAMユーザーで無事ログインできました。
iam_17.png

今回作成したadminユーザーは「AdministratorAccess」という強力な権限を持つので、ルートユーザー同様MFAを設定します。アカウントの設定メニューから「Security credentials」をクリックします。
iam_18.png

アカウントの設定画面にアクセスできたら、「Assign MFA device」ボタンをクリックします。
iam_19.png

ルートユーザーでMFAを設定したのと同様の操作でMFAを設定します。
iam_20.png

MFAを設定することができたら、「Close」ボタンをクリックします。
iam_22.png

MFAを設定できたことを確認するため、一旦ログインし直します。
iam_26.png

IAMユーザーによるログインでもMFA認証画面を表示することが確認できました。
iam_27.png

請求の設定

AWSからの請求書をPDFファイルで受領できるよう請求の設定を行います。

アカウントの設定メニューで「Account」をクリックします。

billing_1.png

アカウントの設定画面に遷移するので、ナビゲーションメニューで「Billing preferences」をクリックします。「Receive PDF Invoice By Email」と「Receive Free Tier Usage Alerts」にチェックを入れ、メールアドレスを入力します。

billing_2.png

入力できたら、「Save preferences」ボタンをクリックします。

予算の設定

想定外の請求料金が発生しないようBudgetsを活用して、設定した予算を超える場合にアラートメールを送信するようにしましょう。

引き続き、ナビゲーションメニューで「Budgets」をクリックします。

AWS Budgets画面に遷移します。「Create a budget」ボタンをクリックします。
budget_4.png

予算の種類を選択する画面に遷移します。「Enable Cost Explorer」ボタンをクリックしCost Explorerを有効化します。クリックすると新しいタブで「Cost Explorer」の起動画面に遷移します。

「Cost budget - Recommended」が選択済みであることを確認して、「Next」ボタンをクリックします。
budget_5.png

予算の設定画面に遷移します。以下を入力します。入力できたら、「Next」ボタンをクリックします。

「Budget name」:識別しやすい予算の名前
「Period」:「Monthly」
「Budget renewal type」:「Recurring budget」
「Start Month」:現在の月
「Budgeting method」:「Fixed」
「Enter your budgeted amount($)」:予算金額(今回はアラートメールが届くことを早く確認するため$1)

budget_6.png

アラートの設定画面に遷移します。「Add an alert threshold」ボタンをクリックします。
budget_7.png

アラートの閾値を設定するパネルを展開します。以下を設定します。入力できたら、「Next」ボタンをクリックします。

Threshold:80% of budgeted amount
Trigger:Actual
Email recipients:自分のEメールアドレス

budget_8.png

アクションの追加画面に遷移します。何も入力しないで「Next」ボタンをクリックします。
budget_9.png

予算設定の確認画面に遷移します。問題なければ「Create budget」ボタンをクリックします。
budget_10.png

作成が完了し無事予算設定できたことが確認できます。
budget_11.png

Cost Explorerの設定

コストをより詳細(時間単位とリソースレベル単位)に確認できるよう設定します。

引き続き、ナビゲーションメニューで「Cost Explorer」をクリックします。「Launch Cost Explorer」ボタンをクリックします。
cost_management_preferences_0.png

新しいタブで「AWS Cost Mangement」画面に遷移するので、ナビゲーションメニューの「Preferences」をクリックします。

「Hourly and Resource Level Data」と「Receive Amazon EC2 resource recommendations」にチェックをつけて「Save preferences」ボタンをクリックします。
cost_management_preferences_1.png

設定が完了しました。
cost_management_preferences_2.png

Cost Explorerの有効化

引き続き、ナビゲーションメニューにある「Cost Explorer」をクリックします。

初回アクセスではまだデータがないため画面表示ができません。24時間後にまたアクセスして表示できることを確認しましょう。

cost_management_2.png

cost_explorer_1.png

結局、24時間では切り替わらないで、4日後にまたアクセスすると、コストを表示できるようになりました。

cost_explorer_2.png

cost_explorer_3.png

最後に

AWSを本格的に利用する前に必要な初期設定(前半)が完了しました。今回は主にアカウントや請求周りの設定を行い、以上でアカウントの乗っ取りを防止できるようになりました。

次回は、セキュリティ周りの設定を行いたいと思います。

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