実践で学ぶRuby on rails 〜仮説千本ノック〜

プログラマーとして独立するため日々スキルアップに励んでいます。優れたプログラマは仮説を立てるのがうまい。そこを目指して仮説を立てては検証する日々です!!

AWSを使ったデプロイ〜S3を使用するための準備〜

S3を利用する際のセキュリティ対策

従量制サービスであるS3は悪意のあるユーザーに操作されることで高額請求される可能性があり、パスワードを漏洩しない、したとしてもパスワードだけでは操作できないようにする等の工夫が必要です。

 

今回は、下記の三つの対策について学びます。

 

▫️ログイン時の2段階認証

AWSへログインする際、(ルートにしてもIAMにしても)パスワードに加えて、Authyのパスワード入力も求める様にしましょう。

Authyのパスワードは刻一刻と変化するので、漏洩する可能性は低いです。

 

・携帯などへのAuthyのインストール

AWSへの2段階認証設定

AWSの多要素認証(MFA)の設定画面からQRコードを表示し、それを携帯のAUthyで読み取ることによって、AWSログイン時に、Authyのワンタイムパスワードの入力が必須となる。

 

▫️IAMユーザーの利用

ルートユーザーは権限が強く、認証情報が漏れて悪用された際のリスクが高いので、権限を限定したIAMユーザーで普段の作業を行う様にしましょう(漏れた時のリスクが抑えられる)

AWSではIAMというサービスで、IAMユーザーを作成できます。

 

こちらも、作成したのちに、Authyによる2段階認証を設定しましょう。

 

▫️リモートリポジトリ(Github)へのパスワードのアップを防ぐ

ソースコードと一緒に、誤ってパスワードをGithubにアップしてしまうと、GIthubには誰でもアクセスできるので、悪用される恐れがあります。

そこで、pushする際に、コードを精査し、パスワードらしきものがあったら、処理を中断してくれるgit-secretesを導入しましょう。

 

git-secretsを、ローカル環境で、Homebrewを経由してインストール

$ cd ~/
$ brew install git-secrets

 

続いて、アプリのディレクトリに移動して、git-secretsを有効化する。

$ cd chatspace
$ git secrets --install

 

続いて、アプリのディレクトリにいる状態で、どの様なコードのコミットを防ぐのか、設定しましょう。

 

このコマンドにより、aws関連の重要情報をチェックする様に登録(register)できます

$ 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 ~/.git-templates/git-secrets
$ git config --global init.templatedir '~/.git-templates/git-secrets'

 

なお、Githubdesktopによるpushの際にgit-secretsを効かせたいなら、別途コマンドを実行する必要があります。

 

大前提として、githubDesktopがアプリケーションフォルダに格納されている必要があるので、違う場合は移動しておきましょう。

 

git-secetsをどこかのフォルダにコピーしてルーティングっぽいのですが、詳細は不明。

$ sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/app/git/bin/git-secrets

 なお、「No such file or directory」エラーが出た場合GIthubdesktopのバージョンが古いことが原因のため、次のコマンドを実行します。

$ sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/git/bin/git-secrets