AWS (登録方法)
AWSとは
AWSとは「Amazon Web Servises」の略で、通販で有名な米Amazonが提供しているサーバーに関するサービスの総称です。
Amazon S3
「Amazon S3」とはAWSの中のサービスの1つで、「Amazon Simple Storage Service」の略称です。
ネット上にデータを保存する箱を借りられるようなイメージで、ここに画像などを保存したり、保存してある画像を取得したりすることができます。
これまで画像を保存する際はActiveStorageを用いてアプリケーションのディレクトリに保存してきましたが、これから行う作業により、画像はAmazon S3へ保存されることになります。
この「Amazon S3」を使うことで、データ容量を気にすることなく画像を保存することができます。S3に保存できるデータの量は膨大で、個人で作成するアプリで使われるレベルの量なら完全に無料で利用できます。
無料使用期間について
AWSは、アカウント作成から12ヶ月間、様々なサービスを無料で利用できます。その中には、本章で取り扱うS3も含まれています。
しかし、12ヶ月の無料期間を過ぎた後からは、使用量に応じて料金が発生するため注意が必要です。
そのため、AWSを用いる必要性が無くなったアプリケーションは、インスタンスの停止やElasticIPの開放、S3バケットの削除を行い、不要な料金が発生しない様に気をつけましょう。
サービス名 | 無料枠 |
---|---|
Amazon EC2 | 750時間/月 (t2.microインスタンスの使用もこれに含む)まで |
Amazon S3 | 5GBの標準ストレージ、20,000件のGETリクエスト、2,000件のPUTリクエスト |
Elastic IPアドレス | 実行中のインスタンスに関連づけられたElastic IPアドレスを1つだけ |
以下の場合は課金対象となります。
サービス名 | 料金が発生する場合 |
---|---|
Elastic IPアドレス | インスタンスに紐付いていないElastic IPアドレスがある |
IAM | IAMユーザーの一時的なセキュリティ認証情報を使用して、他のAWSサービスにアクセスする |
AWSアカウントの作成方法
AWSのサイトにアクセスしましょう
まず【こちら】をクリックして、AWSのサイトにアクセスします。
サインアップボタンを押しましょう
トップページに遷移すると、右上に「無料サインアップ」と書かれたボタンがありますので、クリックします。
アカウント情報を登録
サインアップボタンをクリックすると以下のようなページに遷移するので、「メールアドレス」「パスワード」「AWSアカウント名」を入力して"続行"をクリックしてください。
画面遷移後、セキュリティチェックがあるので、画面指示に従って進めます。
次に連絡先情報を登録します。
以下の画像のような連絡先情報を入力するページに遷移するので、各項目の入力とアグリーメントをチェックして、"アカウントを作成して続行"をクリックしましょう。入力は全て半角英数字で入力します。
アカウントの種類は「パーソナル」を選択してください。
ご自分の住所を入力します。
次に支払情報を登録します。
以下のような支払情報を入力するページに遷移するので、各項目に入力し、"検証して追加する"をクリックします。
次に本人確認をしす。
以下のような本人確認をするページに遷移するので、①〜④まで入力します。なお、検証コードをどのように受け取りますか?の欄は「テキストメッセージ(SMS)」をチェックしましょう。入力し終えたら"お問い合わせください"をクリックしてください。
画面遷移後、しばらくするとショートメールが届くので、画面に表示されるPIN番号を入力します。本人確認が完了したら次へ進みます。
成功すれば下記のような画面に遷移します。
次にサポートプランを選択します。
以下の画像のようなサポートプランを選択するページに遷移するので、ベーシックプランを選択して、次へ進みましょう。
これでアカウントが作成されました!数分後に、登録したメールアドレスに確認メールが来るので、確認します(認証等はありません)。
作成したアカウントでサインインします
「コンソールにサインイン」をクリックすると、アカウント情報を登録する最初の画面に戻ってきます。今回は、先ほど登録したメールアドレスとパスワードを入力して、サインインします。
以下の画像のような画面が表示されたら、正しくサインインができています。
AWS上のセキュリティ対策
まず最初に、セキュリティ対策を行います。これは、パスワードが漏れるなどといった事態によりアカウントが不正に利用され、高額な利用料を請求されるといったことを防ぐためです。
例えば悪意を持ったユーザーにAWSのIDとパスワードが漏れてしまったとします。
そうすると、AWSの中には従量課金制のサービスもあるため、他人がなりすましログインして膨大な処理を行うと、それに対する支払いが発生してしまいます。
このような状況を防ぐためにもしっかりとセキュリティ対策を行います。
今回は以下の3つの設定を行います。
- 二段階認証の設定
- IAMユーザーの作成
- git-secretsの利用
それでは順に進めていきましょう。
二段階認証を設定
二段階認証は、あるサービスにログインする際に「通常パスワード」に加えて「別の方法でも認証されないとログインできないようにする」仕組みです。
万が一パスワードが漏れたとしても、それだけでは乗っ取られないため安全性を高めることができます。
今回は以下の2つの場合に二段階認証がされるように設定します。
このIAMユーザーについては、次に確認します。
二段階認証のために、Authyというアプリケーションを利用します。スマートフォン(iOS/Android)でもPCでも使うことができます。
Authyを起動するとパスワードが表示されるので、二段階認証の際にそれを入力します。パスワードは一定時間ごとに自動で変更されるため、漏洩のリスクが低くなります。
Authyをインストール
まずは「Authy」を自分のスマホにインストールします。自分が利用するスマホの種別に応じたものを導入します
-
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
次に初期設定をしましょう。
初めてアプリを起動すると「電話番号」と「メールアドレス」を聞かれるので登録します。
なお電話番号ですが、ここで登録した番号にSMSで確認コードが来ますので、自分のスマホの電話番号を登録します。
- codeは+81 (Japan)
- 最初の0を抜いた自分のスマホの電話番号
登録後に「GET ACCOUNT VERIFICATION VIA」のメッセージが表示されるので、確認コード送付方法として「SMS」を選択しましょう。
届いた確認コードをAuthyに入力したら、初期設定が完了です。スマートフォンのOSによっては確認コードが自動入力されてアプリのトップ画面に遷移します。
次にAWSで二段階認証を行うための設定を行います。
ヘッダー部分に表示されているアカウント名をクリックして、メニューの中から 「マイセキュリティ資格情報」 を選択します。
モーダル画面が表示されたら 「Continue to Security Credentials」 をクリックします。
何も表示されずに次の画面に遷移することもあります。
メニューの中の 「多要素認証(MFA)」 をクリックすると内容が展開されますので、「MFAの有効化」 をクリックしましょう。
モーダル画面の中から「仮想MFAデバイス」が選択されているのを確認して、続行をクリックします。
次の画面で「QRコードの表示」をクリックすると、QRコードが表示されます。
ここまで終えたら、スマートフォンでAuthyを開きましょう。
ここからはAuthyにAWSアカウントを追加していきます。
Authyを開いたら、下記画像に従って操作してください。
カメラが起動しますので、先ほどのQRコードを読み取りましょう。
設定画面を終了すると、二段階認証用のパスワードが表示されるようになります。
ワンタイムパスワードと呼ばれるもので、30秒経つと自動的にそのパスワードは無効になります。
このパスワードをAWSで入力します。
1つ目のパスワードを上の欄に、その次に表示されたパスワードを下の欄に入力します。
最後に「MFAの割り当て」をクリックして設定は完了です。
AWSのログイン時に追加でパスワードを求められるようになりますので、Authyで表示されたパスワードを入力しましょう。
IAMユーザーを作成
IAMユーザーとは、AWSのサービスの1つです。
最初にAWSで作ったアカウントはルートユーザーと呼ばれ、ルートユーザーでAWSにログインするとAWS内の全ての機能を使うことができてしまいます。
そのため、万が一ルートユーザーのID・パスワードが漏洩し悪用されると、第三者が全ての機能を使えてしまいます。
このような状況を防ぐために、使えるサービスを制限したユーザーを作成し、通常の作業はそのユーザーでログインし行うようにします。
この機能を制限したユーザーを作成できる機能が「IAM」です。
それでは実際に「IAMユーザー」を作成しましょう。
IAMユーザーを作成
ログイン後の以下のページの検索のフォームに「IAM」と打ち込み、出てきた検索結果からIAMのページに飛んでください。
遷移先のページで、以下をクリックします。
左上の「ユーザーを追加」を選択してください。
ここでは作成するユーザーの名前を登録します。
記入したら、「次のステップ:アクセス権限」をクリックしましょう。
「既存のポリシーを直接アタッチ」から「AmazonS3FullAccess」に設定してください。
チェックを入れたら「次のステップ タグ」と書かれたボタンをクリックします。
次は何もせずに、「次のステップ: 確認」を押してください。
最後に設定の確認をして、画像と同じ設定になっていればOKです。「ユーザーの作成」をクリックしてください。
これで「IAMユーザー」の作成が完了しました。
最後に、忘れずに認証情報をダウンロードしておきましょう!
続いて、「IAMユーザーのパスワード」を設定します。
IAMユーザーのパスワードを設定
IAMのメニューから作成したIAMユーザーをクリックします。「認証情報」のタブをクリックすると以下のページに遷移するので コンソールのパスワード欄の「管理」 をクリックします。
そのまま下の画像のように「有効化」「自動生成パスワード」をクリックします。
ルートユーザーの時と同じく、認証情報はダウンロードしておきましょう(ここではcsvファイルとしてダウンロードできます)。
作成したIAMユーザーでログイン
それでは今作成したIAMユーザーでログインできることを確認してみましょう。
まずルートアカウントのサインアウトを行います。
続いて、先ほどダウンロードしたcredentialの情報を使ってログインします。
上記画像の①をクリックすると、以下のようなログイン画面に遷移します。②のユーザー名とパスワードを入力してサインインしましょう。
正常にログインできれば成功です!
ルートユーザーで再度サインイン
IAMユーザーでログインできることが確認できたら一度ログアウトし、改めてルートユーザーでログインしなおします。
サインインアウト→コンソールにサインインを選択すると以下のような画面に遷移します。「ルートユーザーのEメールを使用したサインイン」を選択しましょう。
以下の画面からサインインします。
二段階認証になっていることに注意してください。
IAMユーザーも二段階認証
続いて、再びIAMのユーザー選択画面から先ほど作成したユーザー名を選択し遷移したページ先で、以下の「MFAデバイスの割当」をクリックします。
あとは ルートユーザーの時と同じ手順で二段階認証の設定をします。
git-secretsを利用
今みなさんはGitHubのpublicリポジトリにソースコードをアップロードしています。
そのため、誤操作でパスワードをGitHubにpushしてしまうと誰でも見られる状態になってしまいます。「git-secrets」は、そのような誤操作を防いでくれるツールです。
git-secrets
pushしようとしたコードをチェックし、パスワードだと推定されるような文字列が含まれている場合はそこで処理が中断される仕組みとなっています。
それでは実際に設定していきましょう。
git-secretsをインストール
ターミナルから、Homebrewを経由してgit-secretsを導入します。
1 2 |
% cd ~/ % brew install git-secrets |
git-secretsが導入できたら、設定を適用したいリポジトリに移動して、git-secretsを有効化します。
1 2 |
% cd アプリケーション名 #開発中のアプリケーションディレクトリに移動 % git secrets --install |
これで、有効化を行なったリポジトリでgit-secretsを使用する準備ができました。
続いて、「どのようなコードのコミットを防ぐのか」を設定していきましょう。この後の作業は開発中アプリケーションのディレクトリで実行していきます。
git-secretsの条件を設定
下記のコマンドを実行することで、secret_key, access_keyなど、アップロードしたくないAWS関連の秘密情報を一括で設定することができます。
1 |
% git secrets --register-aws --global |
現在のgit-secretsの設定は、下記のコマンドで確認することができます。
1 2 3 4 5 6 7 8 |
% 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が適用されません。
特段の理由がなければ、以下のコマンドを実行して自動で適用されるようにしましょう。
1 2 |
% git secrets --install ~/.git-templates/git-secrets % git config --global init.templatedir '~/.git-templates/git-secrets' |
GitHub Desktopからgit-secretsを利用できるようにしましょう
GitHub Desktop経由でgit secretsを利用する場合は、追加の設定をします。
この時、Github Desktopがapplicationフォルダに存在している必要があります。
適宜移動しておきましょう。
GitHub Desktopを利用するため、以下を実行しましょう。
1 |
% sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/app/git/bin/git-secrets |
sudoコマンドはパスワードの入力が必要です。入力の際は、とくに画面には何も表示されません。しかし、入力自体は認識されています。
上記コマンドで「No such file or directory」のエラーがでる場合は以下のコマンドを実行しましょう。
GitHub Desktopのバージョンが古い場合、上記のコマンドではなく、以下のコマンドでないと設定ができないことがあるためです。
1 |
% sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/git/bin/git-secrets |
ここまでで、事前に行うセキュリティ対策の作業は終了です