LoginSignup
12
7

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-04-05

Authyを利用して二段階認証を設定し、AWSアカウントを保護する

AWSアカウントの乗っ取り防止のために、利用していきます

インストール

iOS版

Android版

導入

二段階認証アプリ[Authy]が[Google Authenticator]よりも優れている理由

  1. AWSにサインイン
  2. 画面右上のユーザー名をクリック
    スクリーンショット 2020-04-05 21.59.17.png

  3. 「マイセキュリティ資格情報」をクリック
    スクリーンショット 2020-04-05 22.01.47.png

  4. 多要素認証(MFA)の「MFAを有効化」をクリック(青いボタン)
    スクリーンショット 2020-04-05 22.04.13.png

  5. 「仮想 MFA デバイス」を選択して、「続行」をクリック
    スクリーンショット 2020-04-05 22.06.10.png

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

Image from Gyazo
7. スマホにインストールした、【Authy】を起動する
8. Authyで「Accounts」を開く
9. 「+」ボタンをクリック
6eb0de4925b045439a842058d2f12014.png
10. QRコードを読み込む画面が表示されるので、AWS画面上で表示させたQRコードを読み込ます。
Authy1.jpg
11. 【Authy】アプリ上で6桁の認証番号が表示されます
スクリーンショット 2020-04-05 22.21.21.png
12. AWSのMFA認証コードを入力欄を見る
スクリーンショット 2020-04-05 22.27.47.png
13. スマホアプリ上で表示されている、認証コード6桁を「MFAコード1」に入力
14. 続いて、30秒経過して新しく表示された認証コード6桁を「MFAコード2」に入力
(上段には1回目のパスワードを、下段には1回目のパスワードを制限時間切れまで待って、2回目のパスワードが表示されたらそのパスワードを入力します。)
Image from Gyazo
15. 「MFAの割り当て」をクリック
スクリーンショット 2020-04-05 22.32.39.png
16. 完了

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

IAMユーザーの利用

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

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

IAMユーザーを作成

  1. AWSのページで検索をする

Image from Gyazo

それか、
画面下のセキュリティの項目にあるため、下にスクロールして「IAM」をクリック
Image from Gyazo

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

スクリーンショット 2020-04-05 22.46.55.png
2. 「個々のIAMユーザーの作成」のタブを開く

スクリーンショット 2020-04-05 22.49.01.png
3. 「ユーザー管理」をクリック

スクリーンショット 2020-04-05 22.50.12.png
4. ユーザー管理画面が開かれる

スクリーンショット 2020-04-05 22.50.28.png
5. 「ユーザーを追加」をクリック

スクリーンショット 2020-04-05 22.50.28.png
6. ユーザー名を入力します

Image from Gyazo
7. そして、「プログラムによるアクセス」を選択します
スクリーンショット 2020-04-05 22.57.28.png
8. 画面右下の「次のステップ: アクセス権限」をクリック

スクリーンショット 2020-04-05 22.58.46.png
9. 「既存のポリシーを直接アクセス」を選択し、「AmazonS3FullAccess」を選択。

Image from Gyazo
10. 「次のステップ: タグ」

スクリーンショット 2020-04-05 23.02.47.png
11. タグを設定すれば、役職などをタグづけできますが、今回は不要なので何もしないで「次のステップ:確認」をクリック

スクリーンショット 2020-04-05 23.05.33.png
12. 確認ページが表示されるので、「ユーザーの作成」をクリック

スクリーンショット 2020-04-05 23.07.23.png
13. ⚠️「.CSV」をダウンロードします

スクリーンショット 2020-04-05 23.13.42.png
14. 閉じる
15. 追加されたユーザーを選択

スクリーンショット 2020-04-05 23.21.07.png

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

Image from Gyazo
18. コンソールへのアクセス「有効化」、パスワードの設定「動生成パスワード」
スクリーンショット 2020-04-05 23.23.56.png
19. 「適用」をクリック
20. 「.csvをダウンロード」

スクリーンショット 2020-04-05 23.25.31.png
21. 閉じる
22. IAMユーザーのMFAの有効化するため、「MFAデバイスの割り当て」の管理をクリックスクリーンショット 2020-04-05 23.29.18.png
23. 同様にQRコードを読み取り、MFAコードを入力すれば完了

IAMでサインインする

先ほどダウンロードした.CSVファイルを開く
スクリーンショット 2020-04-06 8.33.57.png

すると、

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

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

まずは 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
12
7
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
12
7