1. Qiita
  2. 投稿
  3. AWS

AWSアカウントを取得したら速攻でやっておくべき初期設定まとめ

  • 1890
    いいね
  • 2
    コメント

AWSアカウントを作成したら最初にやっておきたいことをまとめてみた。

ホントはCloudFormationで全部自動化したいけど、そうもいかないので、最初は頑張って画面をポチポチしていく。

AWSアカウント(ルートアカウント)の保護

AWSアカウントが乗っ取られると詰むので、真っ先にセキュリティを強化する。

AWSアカウントへ二段階認証を導入

AWSアカウントでのログインは、AWSアカウント作成時のメールアドレス・パスワードだけでできてしまう。心許ないにもほどがあるので、まずは二段階認証を設定しよう。

  1. IAMのページを開く

  2. 「ルートアカウントのMFAを有効化」を選択して、「MFAの管理」ボタンをクリック
    01.png

  3. 「仮想MFAデバイス」にチェックが入っていることを確認し、「次のステップ」ボタンをクリック
    02.png

  4. 注意書きを読んで、「今後はこのダイアログボックスを表示しない。」にチェックを入れて「次のステップ」ボタンをクリック
    03.png

  5. Google Authenticatorなどで、QRコードを読み取って、表示された認証コード二つを入力し、「仮想MFAの有効化」ボタンをクリック
    04.png

  6. 「完了」ボタンをクリック
    05.png

管理用のIAMユーザ作成

普段の作業ではAWSアカウントを使わないのが鉄板なので、管理用のIAMユーザを作成しよう。

ユーザの作成

何はともあれ、ユーザを作成しないとどうにもならないので早速作ってみよう。

ここでのポイントは、 「アクセスキーを生成しないこと」 である。アクセスキーはAWS CLIなどを使うときには必要になるのだが、最初は必要ないので、必要になるまでアクセスキーの生成は控えよう。

また、AWSアカウントと同様に二段階認証は必ず導入しよう。

  1. IAMのページを開く

  2. 「個々のIAMユーザの作成」を選択して、「ユーザの管理」ボタンをクリック
    01.png

  3. 「新規ユーザーの作成」ボタンをクリック
    02.png

  4. ユーザ名を入力し、「ユーザーごとにアクセスキーを生成」のチェックを外して、「作成」ボタンをクリック
    03.png

  5. 一覧に作成したユーザが表示されるので、それをクリック
    04.png

  6. 「認証情報」タブを選択し、「パスワードの管理」ボタンをクリック
    05.png

  7. カスタムパスワードの割り当てをクリックして、パスワードを二回入力し、「適用」ボタンをクリック
    06.png

  8. 「認証情報」タブ内の「MFAデバイスの管理」ボタンをクリック
    07.png

  9. 「仮想MFAデバイス」にチェックが入っていることを確認し、「次のステップ」ボタンをクリック
    08.png

  10. Google Authenticatorなどで、QRコードを読み取って、表示された認証コード二つを入力し、「仮想MFAの有効化」ボタンをクリック
    09.png

  11. 「完了」ボタンをクリック
    10.png

グループの作成

ユーザは作っただけでは何もできない。権限を設定したグループを作成し、ユーザを所属させよう。

  1. IAMのページを開く

  2. 「グループを使用してアクセス許可を割り当て」を選択し、「グループの管理」ボタンをクリック
    01.png

  3. 「新しいグループの作成」ボタンをクリック
    02.png

  4. グループ名を入力し、「次のステップ」ボタンをクリック
    03.png

  5. 「AdministratorAccess」ポリシーにチェックをいれて、「次のステップ」ボタンをクリック
    04.png

  6. 内容を確認し、「グループの作成」ボタンをクリック
    05.png

  7. グループ一覧から作成したグループをクリック
    06.png

  8. 「グループにユーザーを追加」ボタンをクリック
    07.png

  9. 先ほど作成したユーザを選択し、「ユーザーの追加」ボタンをクリック
    08.png

なお、一点注意。ここで設定している「AdministratorAccess」は、AWSアカウントに次ぐ強力な権限なので常用してはいけない。AWSに慣れてきたら、適切な範囲の権限設定に変更しよう。

IAMパスワードポリシーの適用

デフォルトの設定では、パスワードポリシーがかなり緩いので、可能な範囲で縛りを入れよう。

  1. IAMのページを開く

  2. 「IAMパスワードポリシーの適用」を選択し、「パスワードポリシーの管理」ボタンをクリック
    01.png

  3. 任意のパスワードポリシーを設定し、「パスワードポリシーの適用」ボタンをクリック
    02.png

とりあえず、上記のような設定にしてみたが、有効期限の設定や再利用の禁止なども設定できるので、必要に応じて設定しよう。

オプションの詳細はIAM ユーザー用のアカウントパスワードポリシーの設定を参照してほしい。

セキュリティステータスの確認

ここまでやれば、最低限のセキュリティ設定は完了だ。

  1. IAMのページを開く

  2. セキュリティステータスが全てグリーンになっていることを確認
    01.png

すべてグリーンになっている。大変気分がいい。

請求情報の設定

IAMユーザを作ったので、AWSアカウントはログアウトしたいところだが、その前に請求情報やAWSアカウントに関わる設定を変更しておこう。これらの設定のいくつかは、AWSアカウントじゃないとできないので、ログアウトする前にやっつけておく。

IAMユーザへの請求情報のアクセス許可

デフォルトでは、AWSアカウント以外では、請求情報を見ることができない。AWSアカウントは極力使いたくないので、IAMユーザが請求情報にアクセスできるよう許可しておこう。

  1. アカウント設定を開く

  2. 下にスクロールして、「請求情報に対する IAM ユーザーアクセス」の横にある「編集」リンクをクリック
    01.png

  3. 「IAMアクセスのアクティブ化」にチェックを入れて、「更新」ボタンをクリック
    02.png

請求情報とコスト管理の設定

CloudWatchと連携して予期せぬ課金を検知できるようにしておこう。ここではついでに、PDFで請求書をもらえるようにしてみた。

  1. 請求情報とコスト管理の設定を開く

  2. 「電子メールで PDF 版請求書を受け取る」と「請求アラートを受け取る」にチェックを入れて、「設定の保存」ボタンをクリック
    2.png

最後の「請求レポートを受け取る」は、チェックしておくと、S3に明細をCSVで吐いてくれるらしい。個人利用レベルだと必要ないので、ここでは有効にしない。

CloudWatchで請求情報のアラームを作成

「請求アラートを受け取る」を設定すると、任意の金額に達したタイミングで通知する設定が可能になる。いきなり数十万とか請求されたくないので、適当な金額になったら通知するようにしよう。とりあえず、ここでは100ドルに設定してみた。

  1. CloudWatchを開く

  2. 左メニューからアラームの「請求」をクリックし、「アラームの作成」ボタンをクリック
    01.png

  3. 通知のしきい値となる金額と通知先のメールアドレスを入力して、「アラームの作成」ボタンをクリック
    02.png

  4. このウィンドウが開いたら、設定したメールアドレスに「AWS Notification - Subscription Confirmation」という件名のメールが届く
    03.png

  5. Gmailの場合は、「Confirm subscription」リンクがあるのでそれをクリック
    04.png

  6. 「Subscription confirmed!」と表示されることを確認
    05.png

  7. メールアドレスの確認ができたら、「アラームの表示」ボタンをクリック
    06.png

コストエクスプローラーの有効化

必須ではないがあると便利なので、コストエクスプローラーは有効にしておこう。
課金情報をグラフィカルに表示できるようになる。

  1. コストエクスプローラーを開く

  2. 「コストエクスプローラーを有効化」ボタンをクリック
    1.png

現地通貨設定

これも必須ではないが、日本円で支払いができるようになる。また利用料表示もドルではなく、日本円になってくれる。

  1. アカウント設定を開く

  2. 下にスクロールして、「現地通貨設定」の横にある「編集」リンクをクリック
    01.png

  3. お支払通貨の選択で「JPY - Japanese Yen」を選択し、「更新」ボタンをクリック
    02.png

  4. Payment Currency Terms and Conditionsウィンドウが出てくるので、内容を確認して「Accept」ボタンをクリック
    03.png

AWSアカウントの設定

代替の連絡先

AWSアカウント登録時の連絡先以外へ連絡してくれる。携帯を二台持ちしてる人なんかは登録しておくと少しだけ安心感が増すと思う。

  1. アカウント設定を開く

  2. 下にスクロールして、「代替の連絡先」の横にある「編集」リンクをクリック
    01.png

  3. 連絡先を入力し、「更新」ボタンをクリック
    02.png

秘密の質問

電話での問い合わせや、MFAの解除申請などの時に、秘密の質問を聞いてくれる。AWSアカウントがよりセキュアになるが、秘密の質問は、本人が忘れる可能性が結構あるので、安易に設定するのはオススメしない。

一度設定すると削除できない(変更は可)らしいので、設定するなら、ちゃんと答えられる質問を入れよう。

  1. アカウント設定を開く

  2. 下にスクロールして、「秘密の質問の設定」の横にある「編集」リンクをクリック
    03.png

  3. 質問と答えを入力し、「更新」ボタンをクリック
    04.png

ちなみに、筆者は秘密の質問の設定はしていない。じゃあ、なんで紹介したんだと言われそうだが、適当に設定して数年後に痛い目を見た人もいるようなので、念のため紹介させてもらった。

通知設定

マーケティング関連のメールに埋もれて、重要なメールを見落とすと痛いので、筆者はマーケティング関連のメールは全てオフにしている。Amazonさん、ゴメンナサイ!

  1. 通知設定を開く

  2. 「マーケティング関連 E メール受信を希望しない」を選択して、「変更の保存」ボタンをクリック
    01.png

IAMユーザへの切り替えとリージョン設定

IAMユーザでのログイン

それではそろそろ、AWSアカウントとはオサラバして、先ほど作成したIAMユーザでログインしなおしておこう。

  1. IAMのページを開く

  2. IAMユーザーのサインインリンクをコピーして、AWSアカウントからサインアウト
    01.png

  3. コピーしたURLを開き、ユーザー名とパスワード入力し、「サインイン」ボタンをクリック
    02.png

  4. MFAコードを入力し、「送信」ボタンをクリック
    03.png

リージョンを変更

多くの人は東京リージョンが都合がいいと思うで、リージョンを変更しておこう。

  1. 右上のメニューの「バージニア北部」をクリックして、リージョン一覧から「アジアパシフィック (東京)」をクリック 01.png

CloudTrail

AWSのAPI呼び出しの履歴を残してくれるCloudTrailを設定しよう。CloudTrailを設定するとAWS内のリソースの作成、変更、削除がログに残るようになる。

  1. CloudTrailを開く

  2. CloudTrailを下記の設定をして、「有効化」ボタンをクリック
    02.png

    • 「証跡名」に任意の名前を入力
    • 「証跡情報を全てのリージョンに適用」の『はい』にチェック
    • 「新しい S3 バケットを作成しますか」の『はい』にチェック
    • 「S3 バケット」に任意のバケット名を入力

  3. しばらくしてから左メニューの「API アクティビティ履歴」をクリック
    03.png

  4. CloudTrail設定時のログを確認
    04.png

なお、CloudTrail単体では、履歴を残してくれるだけで、インシデント検知などはできない。詳細は紹介しないが、CloudWatch Logsなどと連携すれば、色々できるので調べてみてほしい。

git-secrets

git-secretsはAmazonが公開しているツールで、シークレットアクセスキーなどの秘密情報を、誤ってgitへコミットしてしまうのを防止してくれる。

GitHubなどに秘密情報を一瞬でも公開してしまうと、不正利用される可能性があるため、うっかりミス防止のためにもぜひ導入しよう。(@mmizutani さんの情報提供に感謝!)

インストール&設定

ここでは、git-secretsをインストールするとともに、git init時に自動的に、AWS関連の秘密情報コミット防止をするように設定している。

$ brew install git-secrets
$ git secrets --register-aws --global
$ git secrets --install ~/.git-templates/git-secrets
$ git config --global init.templatedir '~/.git-templates/git-secrets'

詳細は「クラウド破産しないように git-secrets を使う」を参考にしてほしい。

既存プロジェクトへの反映

新規にgit initしたときは、勝手にgit-secretsが組み込まれるが、既存のプロジェクトについては、明示的な設定が必要なので覚えておいてほしい。

$ cd /path/to/your/repo
$ git secrets --install

AWSマネジメントコンソールへの不正アクセスを検知する仕組みの構築

外部のブログだが、「AWSマネジメントコンソールにいつ誰がサインインしたか通知する仕組み」を構築する方法について、解説する記事を書いたのであわせて参考にしてほしい。

上記の記事ではSlackを使う前提にしているが、SNS経由でメールを飛ばすなどの仕組みにすることも簡単なので、ぜひチャレンジしてみよう。この仕組みを構築しておくと、安心感が圧倒的に増す。

学び方を知る

さて、ここまでで、AWSで最初にやるべきことを、筆者なりに紹介してきた。

最後にAWSを学んでいくにあたっての、取っ掛かりを紹介して、この記事は締めよう。

はじめてAWSをさわる場合

AWSについては、Web上でも情報が溢れているが、その情報量の多さゆえに、戸惑うことも多い。そこで、最初のうちはWebではなく、書籍をオススメしたい。特にオススメは、Amazon Web Services パターン別構築・運用ガイドである。

Amazon Web Services パターン別構築・運用ガイド

この本は現時点(2016年1月)では最も網羅性が高くてバランスがよい。良きガイドになること請け合いなので、ぜひ手元に置いておこう。

ベストプラクティスを知る

ご存知のとおり、AWSは利用者も多く、数多くの人が知見を共有してくれている。特にセキュリティについては、個人利用・法人利用問わず重要になってくるので、少しずつ学んでいこう。

セキュリティ全般

Amazon社が初心者向けに公開している利用者が実施するAWS上でのセキュリティ対策が、セキュリティの全体像を知るのに非常にいい。結構ページ数が多いスライドだが、ぜひ一度読んでおこう。

slideshare.png

IAMベストプラクティス

IAMは特に重要なので、Amazonが公開しているIAM のベストプラクティスから、トピックスをそのまま引用する。詳細な解説はリンク先を参照してほしい。なお、上記で、太字にした部分は本記事で実施済みの項目である。(12番はCloudTrailしか設定してないけど)

  1. AWS アカウント(ルート)のアクセスキーをロックする
  2. 個々の IAM ユーザーを作成する
  3. IAM ユーザーへのアクセス許可を割り当てるためにグループを使います。
  4. 最小限の特権を認める。
  5. ユーザーのために強度の高いパスワードポリシーを設定する。
  6. 特権ユーザーに対して、MFA を有効化する。
  7. Amazon EC2 インスタンスで作動するアプリケーションに対し、ロールを使用する。
  8. 認証情報を共有するのではなく、ロールを使って委託する。
  9. 認証情報を定期的にローテーションする。
  10. 不要な認証情報の削除
  11. 追加セキュリティに対するポリシー条件を使用する。
  12. AWS アカウントのアクティビティの監視

少しだけ補足しよう。

4番の「最小限の特権を認める。」はAWSに限らない、セキュリティの一般的な考え方であるが、実践するためにはかなり勉強する必要がある。ポリシー設定などを駆使することになるが、少しずつ勉強して、適切な設定ができるようにしよう。

あと、忘れがちだが重要なのが、9番の「認証情報を定期的にローテーションする。」で、特にアクセスキーについては、必ず定期ローテーションをする運用にしよう。