はじめに
こんにちは!竹村です!
最近、だいぶ前に作った個人用のアカウントを使ってAWS学習をしているのですが、ふと「ルートユーザーのセキュリティについてあまり気にしていなかったな。。。」と思い、改めて見直してみる事にしました。
AWS学習を始めたばかりの人や、以前アカウントは作って作業してたけど今は放置気味。。。なんて人、もしくは久しぶりにAWSを学習している人もいるかと思います。
今回は、AWSで安全に作業するために確認するべきルートユーザー周りのセキュリティについて、基本的な部分を2点ピックアップしてみます!
ルートユーザーのアクセスキーを削除する
プログラムからAWSのリソースを操作する際に必要となるアクセスキー。
ルートユーザーとIAMユーザーそれぞれでアクセスキーが作成できますが、ルートユーザーはAWSの全リソースに対して権限を持つ最も強力なユーザーであるため、通常はルートユーザーの権限を使用してプログラムからAWSのリソースを操作する事は推奨されていません。
また、AWSアカウント自体の設定変更や解約も行えるので、万が一アクセスキーが漏洩してしまった場合、恐ろしい事になってしまいます。。。
そんな事態を防止するためにも、ルートユーザーのアクセスキーは存在しない状態にしておくべきです。
通常の手順でアカウントを作成していれば、ルートユーザーにはアクセスキーは作成されていませんが、もし何らかの操作で誤って作成してしまっていた場合は削除しましょう。
ルートユーザーのアクセスキーを削除するには、以下の手順で行います。
まず、ルートユーザーでログインします。
コンソール画面の上部にあるアカウント名をクリックし、「セキュリティ認証情報」をクリックします。

アクセスキーの項目を開き、有効になっているアクセスキーを見つけ出してください。

アクセスキーを削除するには、まず無効化させる必要があります。
「無効化」をクリックすると、以下ポップアップが表示されますので、「無効化」をクリックしてください。

その後、コンソール画面で「削除」をクリックしてください。

テキストフィールドにアクセスキーIDを入力し、削除します。

これでルートユーザーのアクセスキーが削除されます。
ルートユーザーのMFAを有効化する
MFA(Multi Factor Authentication:多要素認証)はその名の通り、複数の要素をもって認証を行うことです。
認証要素は大きく分けて「知識要素」「所持要素」「生体要素」の3つがあります。
・知識要素:パスワードや暗証番号等、本人しか知らない情報
・所持要素:スマホやパスポート、クレジットカード等、本人しか持っていないもの
・生体要素:指紋、網膜といった生物学的な情報
認証は、これらのうち2つ以上の要素を組み合わせることでより強力になります。
初期設定のままの場合、ルートユーザーの認証に必要なのはメールアドレスとパスワードのみです。
ルートユーザーの持つ強力な権限に対し、この2つだけでは相対的に弱いのは明白ですので、スマホを仮想MFAデバイスとして使い、ルートユーザーのMFAを有効化します。
手順は以下です。
まず、認証で利用するスマホにMFA用のアプリをインストールします。
Twilio AuthyやGoogle Authenticator等、いくつか種類がありますが、基本的な動作や機能は同じです。
自分はMicrosoft Authenticatorをインストールしました。
次に、アクセスキーの削除を行った先ほどの画面(セキュリティ認証情報画面)から、多要素認証(MFA)を選択し、「MFAの有効化」をクリックします。

今回は、スマホを仮想MFAデバイスとして使用してみます!
一番上にチェックを入れて続行します。

インストールしたMFA用アプリで、表示されたQRコードを読み取ります。
読み取った後、アプリ上では認証に必要なMFAコードが表示されますので、これをコンソールのポップアップ画面に入力していきます。

2つの連続したコードを入力する必要があるのですが、2つ目のコードが表示されるまでに30秒ほどかかるかと思います。
入力できたら、「MFAの割り当て」をクリックします。
これで、仮想MFAが正常に割り当てられます。
次回以降ルートユーザーでログインする場合は、メールアドレスとパスワードに加え、インストールしたMFA用アプリが発行するMFAコードが必要になります。
おわりに
今回取り上げた要素以外にも、AWSにはセキュリティについてのベストプラクティスが定義されていますので、参照する事をお勧めします。
IAM でのセキュリティのベストプラクティス
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html
ベストプラクティスに記載してある設定を全て行ったとしてもリスクを100%回避できるわけではありませんが、不正利用や意図しない高額請求を防ぐためにも、セキュリティ意識はしっかりと持っておくべきだと感じました。
ではまた!