#Authyを利用して二段階認証を設定し、AWSアカウントを保護する
AWSアカウントの乗っ取り防止のために、利用していきます
インストール
iOS版
Android版
導入
二段階認証アプリ[Authy]が[Google Authenticator]よりも優れている理由
-
AWSにサインイン
-
「仮想 MFA デバイスの設定」画面で「QRコードを表示」をクリック
7. スマホにインストールした、【Authy】を起動する
8. Authyで「Accounts」を開く
9. 「+」ボタンをクリック
10. QRコードを読み込む画面が表示されるので、AWS画面上で表示させたQRコードを読み込ます。
11. 【Authy】アプリ上で6桁の認証番号が表示されます
12. AWSのMFA認証コードを入力欄を見る
13. スマホアプリ上で表示されている、認証コード6桁を「MFAコード1」に入力
14. 続いて、30秒経過して新しく表示された認証コード6桁を「MFAコード2」に入力
(上段には1回目のパスワードを、下段には1回目のパスワードを制限時間切れまで待って、2回目のパスワードが表示されたらそのパスワードを入力します。)
15. 「MFAの割り当て」をクリック
16. 完了
これでログイン時、メールアドレスとパスワードだけではなく、Authyの6桁の番号が必要となります。アカウントの乗っ取りなどを防げます。
IAMユーザーの利用
IAMユーザーは、AWSのサービスの1つです。
最初にメールアドレスで作成した、AWSアカウントはルートユーザーと呼ばれ、全ての機能を使うことができます。そのため、万が一ルートユーザーのID・パスワードが漏洩し悪用されると、第三者が全ての機能を使われてしまいます。
それを防ぐために、機能を制限したユーザーを作成し、通常の作業はそのユーザーでログインし行うようにします。この機能を制限したユーザーを作成する機能がIAMです。
IAMユーザーを作成
それか、
画面下のセキュリティの項目にあるため、下にスクロールして「IAM」をクリック
「IAMリソース」の画面が表示されました。
7. そして、「プログラムによるアクセス」を選択します
8. 画面右下の「次のステップ: アクセス権限」をクリック
9. 「既存のポリシーを直接アクセス」を選択し、「AmazonS3FullAccess」を選択。
11. タグを設定すれば、役職などをタグづけできますが、今回は不要なので何もしないで「次のステップ:確認」をクリック
12. 確認ページが表示されるので、「ユーザーの作成」をクリック
- 「認証情報」を開く
- 「コンソールのパスワード」の管理を選択する
18. コンソールへのアクセス「有効化」、パスワードの設定「動生成パスワード」
19. 「適用」をクリック
20. 「.csvをダウンロード」
21. 閉じる
22. IAMユーザーのMFAの有効化するため、「MFAデバイスの割り当て」の管理をクリック
23. 同様にQRコードを読み取り、MFAコードを入力すれば完了
IAMでサインインする
すると、
- 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