AWSアカウントを作成したら最初にやるべきこと -セキュリティ編-

JAWS-UG 初心者支部 #22 ハンズオン用の資料です。

## 目的
AWSアカウントを不正利用されないために、アカウントを作成したらまずやるべきセキュリティ周りの設定を行います。

## 前提
- AWSアカウントを作成済みであること
- AWSアカウントにログインしていること
- リージョンは東京リージョンを利用します

## ハンズオン手順

### アカウント周りの設定
#### ルートアクセスキーの削除

__※ルートアカウントのアクセスキーは、デフォルトでは作成されておりません。アクセスキーを作成済みの方を対象とします。__

ルートアカウントは全てのサービスへのアクセスが出来てしまうため、ルートアカウントは使用せず、IAMユーザーを使用しましょう。
CLI等のプログラムアクセスも不要なため、アクセスキーを削除します。
https://console.aws.amazon.com/iam/home#/security_credentials

<img width="1132" alt="スクリーンショット_2020-01-07_0_54_13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/d6965fac-29d4-09a8-b58c-b36e928a71d3.png">


#### ルートアカウントのMFA有効化
もしメールアドレスとパスワードが流出してしまっても、ログインできないように多要素認証を有効化しておきます。

「多要素認証（MFA）」のタブにある「MFAの有効化」をクリックします。
https://console.aws.amazon.com/iam/home#/security_credentials

<img width="1137" alt="スクリーンショット_2020-01-07_0_55_55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/83c49536-05bf-1cd3-f040-2357ec33ee3b.png">

割り当てるMFAデバイスの種類を選択します。
今回は仮想MFAデバイスを利用します。仮想MFAとしては「GoogleAuthenticator」等のアプリがあります。
AppStoreやGooglePlayStoreからMFAアプリをダウロードしましょう。

<img width="715" alt="スクリーンショット_2020-01-07_0_58_08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/10ca9b43-830c-f62b-e38a-b755ec83c9f6.png">

「QRコードを表示」をクリックし、画面に表示されたQRコードをMFAアプリでスキャンします。（もしくはシークレットキーを入力します）
アプリに表示されたコードを2つ入力し、MFAの割り当てを行います。

<img width="711" alt="スクリーンショット_2020-01-07_0_58_27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/01fad938-a1c5-2f5c-e885-c7f3677e32e6.png">

以下のようなモーダルが表示されると、割り当てが完了します。

<img width="718" alt="スクリーンショット 2020-01-07 0.59.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/07777e1e-cb53-79f0-9e5f-deaa7fcb70fe.png">

#### パスワードポリシーの変更
デフォルトの設定は「6文字以上」となっていますが、もう少し複雑なパスワードポリシーに変更します。

https://console.aws.amazon.com/iam/home#/account_settings

「パスワードポリシーを設定する」をクリックします。

<img width="791" alt="スクリーンショット_2020-01-14_12_03_40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/e186f5ff-9d27-787b-ccd9-01a21f08cb84.png">

今回は
- 8文字以上
- 1文字以上のアルファベット大文字（A〜Z）を含む
- 1文字以上のアルファベット小文字（a〜z）を含む
- 1文字以上の数字を含む
- 1文字以上の記号を含む
とします。

<img width="789" alt="スクリーンショット 2020-01-14 12.04.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/a410e7ed-f19a-267a-3ff0-f12efc4a8ac4.png">


#### IAMグループの作成
IAMユーザーを作成する前に、IAMグループを作成します。
IAMグループを作成することで、権限管理がしやすくなります。

https://console.aws.amazon.com/iam/home#/groups

「新しいグループの作成」をクリックします。

<img width="743" alt="スクリーンショット_2020-01-14_14_50_30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/9e86b7b0-1fb9-39de-ed70-39938897fb7a.png">

グループ名を入力します。
今回は全ての操作ができるグループを作成するため、`admin`とします。
<img width="483" alt="スクリーンショット 2020-01-14 14.50.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/23a1b5a6-abd1-5101-30c4-6930204daa3b.png">

IAMグループにアタッチするポリシーを選択します。
今回はマネージドポリシーの「AdministratorAccess」を選択します。

※今回はハンズオンのためAdministratorAccessを利用しますが、実際に運用を始める際には最低限の権限を付与することをお勧めします。

<img width="817" alt="スクリーンショット 2020-01-14 14.51.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/7d722c73-87e9-b0f6-56ed-db9ce047e1b4.png">


#### IAMユーザーの作成
ルートアカウント以外にログインできるアカウント（IAMユーザー）を作成します。
https://console.aws.amazon.com/iam/home#/users

ユーザー名を入力します。
今回はマネジメントコンソールにログインが出来れば良いので、「AWSマネジメントコンソールへのアクセス」にチェックを入れます。
パスワードは「カスタムパスワード」を選択し、任意のパスワードを入力します。

<img width="995" alt="スクリーンショット 2020-01-14 14.49.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/cc4535b7-a1ed-47b7-0ff5-2126c322231e.png">

IAMユーザーを追加するIAMグループを選択します。
先程作成した`admin`を選択します。
<img width="995" alt="スクリーンショット 2020-01-14 14.52.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/fc330a19-64fa-8b37-1835-698e54e940de.png">

必要に応じて「.csvのダウロード」からログイン情報をダウンロードして下さい。

<img width="1000" alt="スクリーンショット_2020-01-14_14_53_26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/b27091ee-df1f-09ee-4b78-ed197101bcf5.png">

ユーザーの作成が終わったら、ログインしてみましょう。
完了画面に表示されているログインURL(`https://xxxxxxxxxxxx.signin.aws.amazon.com/console`)からログイン出来ます。

##### MFA設定
作成したIAMユーザーに対してもMFAの設定を行い、セキュアにしておきましょう。

https://console.aws.amazon.com/iam/home#/users

IAMユーザー一覧から、先程作成したユーザーを選択し、「認証情報」タブにあるMFAデバイスの割り当ての「管理」をクリックします。

<img width="937" alt="スクリーンショット_2020-01-15_13_57_56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/7f8027a3-b5c8-efee-59df-35696474e167.png">

rootアカウントの時と同様に設定を行います。
「仮想MFAデバイス」を選択します。

<img width="715" alt="スクリーンショット_2020-01-07_0_58_08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/10ca9b43-830c-f62b-e38a-b755ec83c9f6.png">

「QRコードを表示」をクリックし、画面に表示されたQRコードをMFAアプリでスキャンします。（もしくはシークレットキーを入力します）
アプリに表示されたコードを2つ入力し、MFAの割り当てを行います。

<img width="711" alt="スクリーンショット_2020-01-07_0_58_27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/01fad938-a1c5-2f5c-e885-c7f3677e32e6.png">

以下のようなモーダルが表示されると、割り当てが完了します。

<img width="718" alt="スクリーンショット 2020-01-07 0.59.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/07777e1e-cb53-79f0-9e5f-deaa7fcb70fe.png">



### ロギング設定
**ここから先は料金が発生します**
※GuardDutyには30日間の無料トライアル期間があります。

#### CloudTrailの有効化
CloudTrailはAWSのAPIに対する操作ログを取得するサービスです。
有効化しておくと、いつ、どのアカウントが、どのような操作を行ったかを確認することが出来ます。
無料で90日分を遡ることが出来ますが、CloudTrailの有効化を行うことで、操作ログをS3に保存しておくことが出来ます。

https://ap-northeast-1.console.aws.amazon.com/cloudtrail/home#/dashboard

「証跡の作成」をクリックします。

<img width="911" alt="スクリーンショット_2020-01-14_17_05_10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/5906068d-9f3c-b806-286a-bb9cb6ef003f.png">

証跡名を入力します。
<img width="1215" alt="スクリーンショット 2020-01-15 0.37.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/219e3327-99e2-e9e1-143a-40595ec62381.png">

操作ログを保存するS3を作成します。
重複しない名前を入力します。
<img width="1207" alt="スクリーンショット 2020-01-15 0.38.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/5c37f01d-97f3-0234-a5d1-077c95e50fd3.png">

完了すると一覧に作成した証跡情報が表示されます。
<img width="1201" alt="スクリーンショット 2020-01-15 0.41.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/dcf31ab5-0861-f1a9-adf2-2e930c093a70.png">

#### GuardDutyの有効化
GuardDutyはAWSアカウントやAWSリソースに対する不審なアクティビティを検知／通知してくれるサービスです。

https://ap-northeast-1.console.aws.amazon.com/guardduty/home


「今すぐ始める」をクリックしたあと、「GuardDutyの有効化」をクリックして有効化します。

<img width="575" alt="スクリーンショット_2020-01-15_10_55_40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/06fa8dab-1a4d-fa31-a661-8d5a8c172ea5.png">

<img width="989" alt="スクリーンショット_2020-01-15_10_55_48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/ba71438d-3642-00ce-8d5b-708cb1206e51.png">

結果画面が表示されたら完了です。

<img width="1037" alt="スクリーンショット 2020-01-15 14.06.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/cc2e4058-c820-b960-54cc-fbd99c24c428.png">

## 時間が余ったら・・・

### GuardDutyのサンプル表示
GuardDutyでイベントが検知された場合、どのような結果が取得できるのか、サンプルデータで確認することが出来ます。

左メニューの「設定」→「結果サンプルの生成」をクリックします。

<img width="1202" alt="スクリーンショット_2020-01-28_16_41_41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/f046fdc6-153c-a785-63ef-4c839e00ba80.png">

ボタンのローディングアニメーションが終了したら、左メニューの「結果」をクリックして結果一覧を見てみましょう。

<img width="850" alt="スクリーンショット 2020-01-28 16.46.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/1b7aeb9a-82af-7a90-c448-1e8878fd23be.png">

リストをクリックすることで詳細を確認することが出来ます。
以下の例であれば、 `i-9999999` のEC2インスタンスがビットコインに関するIPアドレスにリクエストしている旨の警告が出ています。

<img width="801" alt="スクリーンショット 2020-01-28 17.12.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/c91b00bd-2dcc-3548-6a13-f665bff310bf.png">

### 課金リソースの削除
CloudTrailとGuardDutyは、トライアル期間が終了してしまうと料金が発生するため、削除方法も記載しておきます。

#### CloudTrailの無効化

左メニューの「証跡情報」から、先程作成した証跡を選択します。
<img width="628" alt="スクリーンショット_2020-01-28_17_34_12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/5c7acbb0-6b5a-6f02-a5bc-c5ace29c8ca1.png">

右上にあるゴミ箱アイコンをクリックします。
<img width="1205" alt="スクリーンショット_2020-01-28_17_34_31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/c29a2f84-d97d-b405-f5df-bbd845aaa311.png">

警告画面が表示されます。「削除」クリックします。
<img width="583" alt="スクリーンショット_2020-01-28_17_34_40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/91be6dd6-6ba5-6241-5902-fb446edc4d79.png">

#### S3バケットの削除
CloudTrailのログを格納してあるS3バケットを削除します。

S3のコンソール画面から、対象のS3バケットを選択し、「空にする」をクリックしオブジェクトを削除した後、「削除」をクリックしてバケットを削除します。
<img width="744" alt="スクリーンショット_2020-01-29_10_16_18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/538abe4d-79bb-6a7e-0ec9-eb02a3c1ef1a.png">

#### GuardDutyの無効化
左メニューの「設定」から、一覧下にある「GuardDutyの無効化」セクションの「無効化」をクリックします。
<img width="1199" alt="スクリーンショット_2020-01-28_17_25_37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/7eb97f32-c99a-f8ef-a85e-7c7428eeb42f.png">

警告画面が表示されます。「無効化」をクリックします。
<img width="613" alt="スクリーンショット_2020-01-28_17_27_29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/bdfbb834-bd75-c319-e69f-d7acfbf80193.png">

スタート画面が表示されたら完了です。
<img width="562" alt="スクリーンショット 2020-01-28 17.27.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234559/6f1e1e52-026c-93c4-6d8b-097f91e62111.png">


## 参考
AWSが公開しているIAM運用のベストプラクティスも参照してみて下さい。
https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html

[What Is AWS CloudTrail?](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)

[【初心者向け】AWSの脅威検知サービスAmazon GuardDutyのよく分かる解説と情報まとめ](https://dev.classmethod.jp/cloud/aws/guardduty-summary/)

この他にも最初にやるべきことがたくさんありますので、こちらもチェックしてみて下さい。
[AWSアカウントを作ったら最初にやるべきこと ～令和元年版](https://dev.classmethod.jp/cloud/aws/aws-1st-step-new-era-reiwa/)