AWS  IAMとAuthyによる二段階認証を設定する

#Authyを利用して二段階認証を設定し、AWSアカウントを保護する
AWSアカウントの乗っ取り防止のために、利用していきます

## インストール
iOS版

https://itunes.apple.com/jp/app/authy/id494168017?mt=8&uo=4&at=10lMo4

Android版

https://play.google.com/store/apps/details?id=com.authy.authy

## 導入
[二段階認証アプリ[Authy]が[Google Authenticator]よりも優れている理由](https://coinpost.jp/?p=4150#index04)

1. AWSにサインイン
2. 画面右上のユーザー名をクリック
![スクリーンショット 2020-04-05 21.59.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/d0279a82-e5bb-c42f-f3dc-718c3d65e099.png)

3. 「マイセキュリティ資格情報」をクリック
![スクリーンショット 2020-04-05 22.01.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/26b281bd-811f-9f67-31d4-b5eeaa3fcf10.png)

4. 多要素認証（MFA）の「MFAを有効化」をクリック（青いボタン）
![スクリーンショット 2020-04-05 22.04.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/98a13ad1-79bb-20ad-a9bc-b3bddd1587aa.png)

5. 「仮想 MFA デバイス」を選択して、「続行」をクリック
![スクリーンショット 2020-04-05 22.06.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/055e1fee-bcc9-8d24-2286-ac555eb22631.png)

6. 「仮想 MFA デバイスの設定」画面で「QRコードを表示」をクリック

[![Image from Gyazo](https://i.gyazo.com/75966a5c0143a19b570bbaef424d698d.gif)](https://gyazo.com/75966a5c0143a19b570bbaef424d698d)
7. スマホにインストールした、【Authy】を起動する
8. Authyで「Accounts」を開く
9. 「＋」ボタンをクリック
![6eb0de4925b045439a842058d2f12014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/4cbbd381-7fa4-2ba6-824e-78055cfc5272.png)
10. QRコードを読み込む画面が表示されるので、AWS画面上で表示させたQRコードを読み込ます。
![Authy1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/3483cf76-ad5d-0360-a32f-ae0c22555b97.jpeg)
11. 【Authy】アプリ上で6桁の認証番号が表示されます
![スクリーンショット 2020-04-05 22.21.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/b43fbf89-1bc6-532a-e90c-af0225c3df99.png)
12. AWSのMFA認証コードを入力欄を見る
![スクリーンショット 2020-04-05 22.27.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/a08f476d-d9f3-14cc-fce9-485ee5c9821f.png)
13. スマホアプリ上で表示されている、認証コード6桁を「MFAコード1」に入力
14. 続いて、30秒経過して新しく表示された認証コード6桁を「MFAコード2」に入力
（上段には1回目のパスワードを、下段には1回目のパスワードを制限時間切れまで待って、2回目のパスワードが表示されたらそのパスワードを入力します。）
[![Image from Gyazo](https://i.gyazo.com/4ef1e36844cc4e9f6cc2b18c18a82eb3.gif)](https://gyazo.com/4ef1e36844cc4e9f6cc2b18c18a82eb3) 
15. 「MFAの割り当て」をクリック
![スクリーンショット 2020-04-05 22.32.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/0e0d0f51-ed4e-8c6f-7d07-615885b1e41c.png)
16. 完了

これでログイン時、メールアドレスとパスワードだけではなく、Authyの6桁の番号が必要となります。アカウントの乗っ取りなどを防げます。


# IAMユーザーの利用
IAMユーザーは、AWSのサービスの1つです。
最初にメールアドレスで作成した、AWSアカウントはルートユーザーと呼ばれ、全ての機能を使うことができます。そのため、万が一ルートユーザーのID・パスワードが漏洩し悪用されると、第三者が全ての機能を使われてしまいます。

それを防ぐために、機能を制限したユーザーを作成し、通常の作業はそのユーザーでログインし行うようにします。この機能を制限したユーザーを作成する機能がIAMです。

## IAMユーザーを作成
1. [AWSのページで検索をする](https://ap-northeast-1.console.aws.amazon.com/console/home?)

[![Image from Gyazo](https://i.gyazo.com/f3a0f5f5ccfbd6d954c72e648928d4d5.gif)](https://gyazo.com/f3a0f5f5ccfbd6d954c72e648928d4d5)

それか、
画面下のセキュリティの項目にあるため、下にスクロールして「IAM」をクリック
[![Image from Gyazo](https://i.gyazo.com/b4228b5a2bbcfaeb91062e3d6c505929.gif)](https://gyazo.com/b4228b5a2bbcfaeb91062e3d6c505929)

「IAMリソース」の画面が表示されました。

![スクリーンショット 2020-04-05 22.46.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/083d86a0-40d7-6d65-6b7a-180bdd2ace73.png)
2. 「個々のIAMユーザーの作成」のタブを開く

![スクリーンショット 2020-04-05 22.49.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/9ecf7aaa-b3df-f7f0-afdd-09c1f140167c.png)
3. 「ユーザー管理」をクリック

![スクリーンショット 2020-04-05 22.50.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/087d237b-5d20-7261-ceda-303efe3d0bf4.png)
4. ユーザー管理画面が開かれる

![スクリーンショット 2020-04-05 22.50.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/835c9cb1-b8e5-93f0-3fb4-69aab482a39f.png)
5. 「ユーザーを追加」をクリック

![スクリーンショット 2020-04-05 22.50.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/51715155-91f6-451f-8951-640919914d6d.png)
6. ユーザー名を入力します

[![Image from Gyazo](https://i.gyazo.com/c0ff63f5eb5a2c3a3c28d77b127e8e6a.gif)](https://gyazo.com/c0ff63f5eb5a2c3a3c28d77b127e8e6a)
7. そして、「プログラムによるアクセス」を選択します
![スクリーンショット 2020-04-05 22.57.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/02392562-b142-0ce8-b35b-12892fa7bab9.png)
8. 画面右下の「次のステップ: アクセス権限」をクリック

![スクリーンショット 2020-04-05 22.58.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/d91f076d-f228-7be8-2cc6-fc560ade6856.png)
9. 「既存のポリシーを直接アクセス」を選択し、「AmazonS3FullAccess」を選択。

 [![Image from Gyazo](https://i.gyazo.com/99dcd4e54a2786cda171b64b192cc8bb.gif)](https://gyazo.com/99dcd4e54a2786cda171b64b192cc8bb)
10. 「次のステップ： タグ」

![スクリーンショット 2020-04-05 23.02.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/9ee9217c-307c-97f4-e3d4-000517168565.png)
11. タグを設定すれば、役職などをタグづけできますが、今回は不要なので何もしないで「次のステップ：確認」をクリック

![スクリーンショット 2020-04-05 23.05.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/d699a755-8413-ae24-791e-abb60b6da5ee.png)
12. 確認ページが表示されるので、「ユーザーの作成」をクリック

![スクリーンショット 2020-04-05 23.07.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/6371c97d-34ed-a68d-b98d-7876a20737d4.png)
13. ⚠️「.CSV」をダウンロードします

![スクリーンショット 2020-04-05 23.13.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/527220d8-a216-124e-62a5-f633accda338.png)
14. 閉じる
15. 追加されたユーザーを選択

![スクリーンショット 2020-04-05 23.21.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/0cce088c-54c9-cd4a-6319-3e60f9120ee9.png)

16. 「認証情報」を開く
17. 「コンソールのパスワード」の管理を選択する

[![Image from Gyazo](https://i.gyazo.com/bafafa4bd09bd8d0499267c382b55042.gif)](https://gyazo.com/bafafa4bd09bd8d0499267c382b55042)
18. コンソールへのアクセス「有効化」、パスワードの設定「動生成パスワード」
![スクリーンショット 2020-04-05 23.23.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/9cb9e96f-3c2b-a3b5-e510-6e033082f34d.png)
19. 「適用」をクリック
20. 「.csvをダウンロード」

![スクリーンショット 2020-04-05 23.25.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/5b778106-06f9-9557-5821-e61802665775.png)
21. 閉じる
22. IAMユーザーのMFAの有効化するため、「MFAデバイスの割り当て」の管理をクリック![スクリーンショット 2020-04-05 23.29.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/e5852790-f0d2-866f-038b-b0a3821aef74.png)
23. 同様にQRコードを読み取り、MFAコードを入力すれば完了

## IAMでサインインする
先ほどダウンロードした.CSVファイルを開く
![スクリーンショット 2020-04-06 8.33.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/444fd5e2-ab4e-a080-d717-a6606995d0a2.png)

すると、

- user name
- Password
- ログインするためのURL

の３つの要素が記述されています。
これを利用すればログイン可能です。

まずは　Console login linkのURLを開く
user名とPWを入力して、ログイン
MFAコードが要求されたら、Authyで表示された番号を入力しよう
するとログインができます

# git-secretsを導入し、AWSの情報をコミットしないようする
ターミナルから、Homebrewを経由してgit-secretsを導入します。

```:ターミナル
$ cd
$ brew install git-secrets
```
git-secretsが導入できたら、設定を適用したいリポジトリに移動して、git-secretsを有効化します。

```:ターミナル
$ cd アプリ名
$ git secrets --install
```
これで、有効化を行なったリポジトリでgit-secretsを使用する準備ができました。
続いて、「どのようなコードのコミットを防ぐのか」を設定する。

## 条件設定の確認
下記のコマンドを実行することで、secret_key, access_keyなど、アップロードしたくないAWS関連の秘密情報を一括で設定することができます。

```:ターミナル
$ git secrets --register-aws --global
```
現在のgit-secretsの設定は、下記のコマンドで確認することができます。

```:ターミナル
$ git secrets --list

secrets.providers git secrets --aws-provider
secrets.patterns [A-Z0-9]{20}
secrets.patterns ("|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)("|')?\s*(:|=>|=)\s*("|')?[A-Za-z0-9/\+=]{40}("|')?
secrets.patterns ("|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?("|')?\s*(:|=>|=)\s*("|')?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}("|')?
secrets.allowed AKIAIOSFODNN7EXAMPLE
secrets.allowed wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

これで、git secrets --installを行なったリポジトリでは、コミット時にAWSの秘密情報を含んだコードがないかチェックされるようになりました。

「うっかりパスワードをGithubに載せてしまった」という事態を防ぐことができるので、必ず設定を行うようにしましょう。

 ## 今後作成する全てのリポジトリにgit-secretsが適用させる
以下のコマンドを実行して自動で適用されるにする

```:ターミナル
$ git secrets --install ~/.git-templates/git-secrets
$ git config --global init.templatedir '~/.git-templates/git-secrets'
````

## GitHub Desktopからgit secretsを利用する

Github Desktopがapplicationフォルダに存在している必要があります。

GitHub Desktop経由でgit secretsを利用する場合は、追加の設定をします。
まず以下を実行

```:ターミナル
$ sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/app/git/bin/git-secrets
```
```
No such file or directory
````
のエラーが表示される場合、ディレクトリが異なるため下記を実行

```:ターミナル
$ sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/git/bin/git-secrets
```