AWSアカウントを作成した後にやるべきこと

# はじめに

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Security-1-2022-confirmation_556.html

今回は↑のハンズオンの内容を中心に、AWSアカウント作成後にやるべきことをまとめていきます。

# IDアクセス権管理

ルートユーザーはすべてのAWSサービスとリソースに対して完全なアクセス権を持っており、非常に強力な権限があるため日常的な作業にはルートユーザーを使わずにIAMユーザー（IAMポリシー権限で許可された操作のみ可能なユーザー）を使うことをAWSでは推奨しています。

まずはIAM(Identity and Access Managemen)関連の用語を整理しておきます。

* IAMグループ：IAMユーザーをまとめるグループ
* IAMユーザー：AWS操作用のユーザー
* IAMポリシー：AWSのサービス操作に対する権限設定、IAMユーザーやIAMグループ等に対して付与します
* IAMロール：AWSサービスやアプリケーション等のエンティティに対してAWSリシーすの操作権限を付与するための仕組み

ここからはルートユーザーでAWSマネジメントコンソールにサインインして、以下の作業を行っていきます。

## ルートユーザーの多要素認証（MFA）の有効化

多要素認証（MFA）を有効化し、セキュリティを強化します。

1. [セキュリティ認証情報](https://console.aws.amazon.com/iam/home#/security_credentials) の画面を開き、多要素認証(MFA)の項目から「MFAデバイスの割り当て」ボタンを押します。

1. MFAデバイスを選択の画面が表示されます。ここではMFAを行うデバイスの設定を行います。例えば、モバイルデバイスで行う場合にはデバイス名を「iPhone」のように入力して、「Authenticator app」を選択して「次へ」ボタンを押します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/e87b6d76-0490-51e6-a472-337cf889733e.png)

1. デバイスの設定の画面が表示されます。モバイルデバイスに指定されたアプリをインストールします。私はGoogle Authenticatorを使っていますので、モバイルデバイスにインストールされているGoogle Authenticatorを開きます。AWSコンソールからQRコードを表示して、Google AuthenticatorでQRコードをスキャンすると、Google AuthenticatorにAWSのコードが表示されますので、MFAコード1の入力欄に入力します。時間が経過するとGoogle Authenticatorには次のコードが表示されますのでMFAコード2の入力欄に入力して、「MFAを追加」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/0e70e510-7f5c-dd2b-ec1b-c61bbfa6b5e7.png)

1. 以上でルートユーザーの多要素認証（MFA）の有効化は完了です。

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

セキュリティを強固にするために、パスワードポリシーを設定します。

1. [アカウント設定](https://console.aws.amazon.com/iam/home#/account_settings) の画面を開き、パスワードポリシーの項目にある「編集」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/59fce8e9-ed3b-1e49-1396-4de3d6c934d1.png)

1. パスワードポリシーの編集画面で「カスタム」を選択し、パスワードの最小文字数、パスワードの強度、その他の要件を設定していきます。↓のサンプル画像では適当に設定していますがご自身や会社のルールに則った設定を行ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/82cd19ef-e390-c2eb-a624-943980e7a34a.png)

## IAMグループの作成

このあと管理用のIAMユーザーを作成していくにあたり、管理用のユーザーを束ねるIAMグループを作成していきます。

1. [ユーザーグループ](https://aws.amazon.com/iam/home#/groups) の画面を開き、「グループを作成」のボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/8b0a9840-4433-df3a-d19b-bf09f2fb64a6.png)

1. グループに名前を付けるの項目のユーザーグループ名の入力欄に任意の名前を入力します。ここでは管理者グループとして用意するため私は「admin-group」としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/a3048999-0a7e-e868-c352-1740ce31c382.png)

1. ユーザーをグループに追加の項目はいったんスキップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/ee963b34-5e32-8fd4-6f98-bf113b845de6.png)

1. 許可ポリシーを添付の項目では管理者グループなので「AdministratorAccess」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/3ae602e6-48bf-5902-56ea-cf970cda0798.png)

1. 「グループを作成」ボタンを押すとIAMグループが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/fca9e07b-ccb9-8245-08b8-31c719f57f40.png)

## IAMユーザーの作成

管理用のIAMユーザーを作成します。

1. [ユーザー](https://us-east-1.console.aws.amazon.com/iam/home#/users) の画面を開き、「ユーザーの作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/30e7c29e-22df-45a5-c8a4-e98db2545f7a.png)

1. ユーザーの詳細を指定する画面が表示されます。ユーザー名入力欄には任意のユーザー名を入力します。
1. 「AWSマネジメントコンソールへのユーザーアクセスを提供する」のチェックは、IAMユーザーを作成したあとで設定を行うため、ここではチェックをつけずに「次へ」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/eb3d3073-c1a1-68fe-df8c-ec4e0e1b3fa6.png)

1. 許可を設定の画面が表示されます。許可のオプションの項目では「ユーザーをグループに追加」を選択し、ユーザーグループの項目で、さきほど作成したIAMグループを選択して、「次へ」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/9153800e-1dbd-db32-f4f6-3fb9749b4460.png)

1. 確認して作成の画面が表示されます。設定に誤りがないようであれば「ユーザーの作成」ボタンを押すと、IAMユーザーが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/dca597ce-39cc-9576-2136-f6cc2f342f1d.png)

## IAMユーザーのMFA有効化

IAMユーザーに対してもMFAを有効化し、セキュリティを強化します。

1. [ユーザー](https://us-east-1.console.aws.amazon.com/iam/home#/users) の画面が開き、ユーザーの項目から作成したユーザーのリンクを開き、ユーザー情報の画面を開きます。
1. セキュリティ認証情報のタブからコンソールサインインの項目で「コンソールアクセスを有効にする」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/6adc459e-b94d-9eba-e11b-8bacfb178509.png)

1. コンソールアクセスを管理のダイアログが開きます。コンソールを通じたアクセスを有効化し、パスワードを設定します。パスワードはご自身の使用状況に合わせて設定し、「適用」ボタンで設定を適用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/120d1f75-58db-f259-dc00-18120e3f83f4.png)

1. 同じくセキュリティ認証情報のタブから多要素認証(MFA)の項目で「MFAデバイスの割り当て」ボタンを押します。以降の設定については、「ルートユーザーの多要素認証（MFA）の有効化」での作業と同様になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/6d66faac-d279-329e-5958-9a2797db9833.png)

1. ここまでの設定で作成したIAMユーザーでAWSコンソールにサインインすることができますので試してみます。セキュリティ認証情報のタブが表示されていると思いますので、コンソールサインインの項目にあるコンソールサインインリンクをクリップボードにコピーします。まずはルートユーザーをサインアウトして、ブラウザのURLにクリップボードにコピーしていたリンクをペーストして開きます。IAMユーザーとしてサインインの画面が表示され、アカウントIDが入力された状態になっていると思いますので、作成したIAMユーザーのユーザー名とパスワードを入力してサインインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/5acb75da-372c-9cc7-31c9-63b0d1f0a613.png)

## IAMユーザー/ロールによる請求情報へのアクセス

IAMユーザーでも請求情報にアクセスできるようにします。

1. [アカウント](https://console.aws.amazon.com/billing/home#/account) の下部にあるIAM ユーザーおよびロールによる請求情報へのアクセスの項目で「編集ボタン」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/a7aeaeb4-77e0-d0d9-ca8e-3fc55822b137.png)

1. IAMアクセスをアクティブ化にチェックして、「更新」ボタンを押して設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/6bcd7439-39fe-0555-21a9-2e084eccda49.png)

## アカウントエイリアスの設定

ハンズオンにはありませんが、IAMユーザーでサインインする際に必要となるAWSアカウントID(12桁の数字)を記憶するのは困難なため、覚えやすいエイリアス文字列を設定することで、アカウントIDの代わりにアカウントエイリアスを使用することができます。

1. [IAM](https://console.aws.amazon.com/iam/home)の画面を開き、右上部のアカウントエイリアス項目の作成リンクより、覚えやすいエイリアス名を設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/cfc25930-c8de-06f8-71d4-cd25aa10e206.png)

# 請求データの確認とアラート

サービスを不正に利用されると高額な請求が発生することがあります。また、自身での利用であっても予期しないことで利用料金が高くなってしまうこともあります。そのため、予算を設定して予算の超過を把握できるようにしておきます。

ここからはIAMユーザーでAWSマネジメントコンソールにサインインして、以下の作業を行っていきます。

## AWS Cost Explorer の有効化と確認

はじめて [コスト管理ホーム](https://console.aws.amazon.com/cost-management/home#) の画面を開くと、データの収集が開始されます。データの収集には24時間かかりますので、24時間経過後に再度開くとコスト状況を参照できるようになります。

## AWS Budgets を使った請求アラート

予算は2つまでは無料で作成できます。

1. まずはあらかじめ設定した予算を超過したことを把握するための設定をしていきます。[予算](https://console.aws.amazon.com/billing/home#/budgets) の画面を開き、「予算の作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/04e8db8a-0307-3959-208b-38db39f0105d.png)

1. 予算の設定の項目ではシンプルな「テンプレートを使用」を選択。

1. テンプレートは自身の予算に合わせて選択します。私の場合は可能な限り節約を目指しますが、安心できるセキュリティ対策であったり学習にかかるコスト分を許容しようと思ってるので、「月次コスト予算」を選択して予算額を$10ほど積みました。またEメールの受信者を設定して、「予算を作成」ボタンで予算を作成します。

1. [予算](https://console.aws.amazon.com/billing/home#/budgets) の画面では作成した予算が登録されているため、登録された予算のリンクをクリックして、アラートタブから「アラートの編集」ボタンを押すことで設定していきます。アラートはデフォルトで3つ（実際のコストが85%を超過した場合、予測コストが100%を超過した場合、実際のコストが100%を超過した場合）設定されています。自身の利用に合わせてアラートを設定します。私の場合は、実際のコストが85%を超過した場合のアラートを削除し、代わりに実際のコストが33%を超過した場合と実際のコストが66%を超過した場合を追加しました（$1=150円計算で500円程度と1000円程度）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/d91680d9-a75b-70cc-d15f-524a1a2f9009.png)

1. 次に定期的に予算レポートを把握するための設定をしていきます。[予算レポート](https://us-east-1.console.aws.amazon.com/billing/home#/budgets/reports)の画面を開き、「予算レポートを作成する」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/7d652b45-22a7-d79f-9672-b0305b407ab3.png)

1. レポート名に任意の名前をつけ、該当の予算を選択し、配信設定で頻度とEメールの受信者を自身の状況に合わせて設定し、「予算レポートを作成する」ボタンを押して作成します。なおレポート１通につき$0.01程度のわずかな利用料金がかかります。

## コストと使用状況レポートの設定

コストと使用状況レポートとは、AWSからの請求の詳細なデータが含まれるレポートファイルです。
ユーザーが各サービスの利用状況を時間単位・日単位で確認したり、Cost Explorerがグラフを用いて感覚的にコスト状況を理解できるようになっていることに対して、コストと使用状況レポートは詳細データを用いて分析などを可能にします。

コストと使用状況レポートはデータがS3に格納されるためS3の利用料（ごく僅か）が発生します。

1. [コストと使用状況レポート](https://console.aws.amazon.com/billing/home#/reports)の画面を開き、「レポート作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/864d03e5-e048-8168-5f3d-6410a30edb7a.png)
1. レポートの詳細の指定の画面が開くので、レポート名に任意の名前を入して、「次へ」ボタンを押します。
1. 配信オプションの設定の画面が開くので、S3バケットの設定に任意のバケット名を設定したり（バケット名はユニークである必要があるため、日時を入れるなどしてユニークになるようにしてください）、レポート配信オプションで自身の利用目的に合わせて設定を行い、「次へ」ボタンを押します。
1. 確認と作成画面が表示されるため、下部にある「レポートの作成」のボタンを押して、レポートを作成します。

# 操作履歴とリソース変更履歴の記録

セキュリティ対策の一環として、利用者の操作ログを記録・管理することは不可欠です。
「いつ」「だれが」「どのリソースを」「そのように操作したか」「結果どうなったか」といった情報などがログに適切に記録されている必要があります。

* AWS CloudTrailを利用することで、AWSのサービスを利用する際の行動履歴をログに記録し、継続的に監視し、保持することができます（操作履歴）。
* AWS Configにてリソースの変更履歴、構成情報を管理・監視することができます（リソース変更履歴）。

## AWS CloudTrailの証跡の保存

1. [AWS CloudTrail](https://console.aws.amazon.com/cloudtrail/home/)の画面を開き、「証跡の作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/5b60e5b8-f6e2-6965-0e14-6148c3718710.png)
1. クイック証跡の作成のページが開くので、任意の証跡名を入力し、「証跡の作成」ボタンを押して、証跡を作成します（証跡の保存先のS3の料金が発生します）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/51e726b5-f700-ec45-cfd3-1954c0ad5df1.png)

## AWS Configの有効化

1. [AWS Config](https://console.aws.amazon.com/config/home)の画面を開き、「今すぐはじめる」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/c21c5ab7-3a8a-96b1-c94e-2148a020f92c.png)
1. 設定のページが開くので、デフォルトの設定のまま「次へ」ボタンを押します。
1. ルールのページが開きますが、今回はルールを設定せずに「次へ」ボタンを押します。
1. レビューのページが開くので、確認して「確認」ボタンを押してAWS Configを有効にします（記録された設定項目あたりの料金と設定履歴ファイルの保存先のS3の料金が発生します）。

# 脅威検知

悪意のある操作や不正な動作を継続的にモニタリングする脅威検出サービスであるAmazon GuardDutyを有効化します（Amazon GuardDutyは30日無料ですが、以降は分析したログの量に応じて料金が発生します）。

## Amazon GuardDutyの有効化

1. [Amazon GuardDuty](https://console.aws.amazon.com/guardduty/home)の画面を開き、「今すぐはじめる」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/bece61bf-3604-de05-87fc-c6c0e4b8d6f2.png)
1. GuardDutyにようこそのページが開くので、「GuardDutyを有効にする」ボタンを押してGuardDutyを有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/8cc3af2c-a4bc-34aa-6374-83d118222f19.png)

# おまけ

## AWSマネジメントコンソールへのサインイン通知

基本的に自分しか利用しないため、AWSマネジメントコンソールにサインインした際に通知を受けるようにし、自分以外のサインインを把握できるようにします。

1. [AWS User Notifications](https://console.aws.amazon.com/notifications/home) の画面を開き、サイドメニューから通知ハブを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/bd3d503b-ccc8-20c8-d90b-057ef72aad64.png)
1. 通知ハブのページでは、通知ハブの選択では通知ハブにメインで利用しているリージョンを設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/ce6c234c-d2fb-dfe4-3661-d2a72cc39b41.png)
1. 次はサイドメニューから配信チャネルを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/ad35a225-8d59-2bba-0074-ac3368b1fdbd.png)
1. 配信チャネルのページでは、配信チャンネル（通知先）として、今回はメールアドレスを設定することとし、「Eメールの追加」ボタンから設定します。
1. 追加すると設定したメールアドレスにメールが届くので、手順に従いメールの検証を行います。
1. 次はサイドメニューから通知設定を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/228454cb-a061-be87-fed0-5e9cf73fcb26.png)
1. 通知設定のページでは、「通知設定を作成」ボタンを押します。
1. 通知設定を作成のページでは、以下のように設定し、「通知設定を作成」ボタンを押して通知設定を作成します。

    * 名前と説明：任意の名前と説明を入力します。
    * イベントルール
        * AWSのサービスの名前：「AWS Console Sign-in」
        * イベントタイプ：「サインインイベント」とし「任意のユーザー」を選択
        * リージョン：有効なすべてのリージョンを選択
    * 集約設定：集約しない
    * 配信チャネル -　オプション
        * チャネル：「Eメール」を選択
        * Eメール：先程配信チャネルで追加したEメールの受信者と名前を設定