今回は、弊社のYouTubeチャンネル「サーバーワークス チャンネル」にて先日公開した以下動画についてblogでも内容を紹介いたします。
動画内では、実際にAWSマネジメントコンソールを操作しながら設定を行っていくデモがありますのでもし興味があれば是非、動画も参照頂ければと思います。
内容が良かった、為になったと感じたら是非Goodボタンやチャンネル登録頂けると嬉しいです。
対象者
・AWSをこれからはじめたい方
・AWSをもっと活用したい方
・AWSアカウントのルートユーザーの安全性確保に関して実施すべき内容や設定イメージを把握したい方
ルートユーザーに関するおさらい
AWSアカウント作成した初期状態では、作成時に使用したメールアドレスとパスワードでアクセス可能で、AWSアカウントのすべてのリソースに対して完全なアクセス権限を持つ唯一のユーザーとなります。このユーザーからの実行であれば、「当該AWSアカウントの解約」といったオペレーションまでも可能とします。
例えあなたがAWSアカウントのオーナー(管理者)であっても、普段使いすべきユーザーではありません。以下ドキュメントに記載されているルートユーザーでの認証情報が必要なタスク以外での利用は避けるよう心掛ける事は大切です。
参考: AWS アカウントのルートユーザー認証情報が必要な AWS タスク
https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_tasks-that-require-root.html
ルートユーザーの認証情報が必要なタスク以外で強い権限でオペレーションを行使したい場合は、過去の関連blogでも紹介の通り、管理用のIAMユーザーを別途作成して利用するようにしましょう。しかし、ルートユーザーはAWSアカウントを管理するうえで必ず必要なものであり、そしてAWSアカウント管理者の責任で安全を確保する必要があります。
今回は、そんなルートユーザーの安全を確保する為に実施すべき内容についてご紹介します。
参考: AWSアカウントのルートユーザー
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_root-user.html
ルートユーザーの安全を確保するための設定項目
今回紹介する設定項目は大きく以下内容となります。
- パスワードを変更する
- MFA(多要素認証)を有効にする
- ルートユーザーのアクセスキー発行有無の確認
- もし発行されていた場合は削除を検討/実施
- IAMユーザー/ロールでの請求情報アクセスを有効化
1.パスワードを変更する
以下の条件を満たす強度の高いパスワードを検討のうえ設定してください。
- 8~128 文字で構成されている
- 大文字、小文字、数字、特殊文字 ! @ # $ % ^ & * () <> [] {} | _+-= が含まれている
- AWS アカウント名または E メールアドレスと同じでないこと
パスワード保護のベストプラクティスは以下となります。
- パスワードは定期的に変更し、秘密に保つ
- 他のサイト等で使用しているものとは異なるパスワードを使用する
- 安易に想像出来るパスワードは使用しない
- (例) secret , password , amazon ,123456等
参考: AWSアカウントのルートユーザーのパスワードの変更
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_passwords_change-root.html
2.MFA(多要素認証)を有効にする
MFA(多要素認証)とは Multi-Factor Authenticationの略となり、知識情報、所持情報、生体情報など複数の種類の要素をユーザーに要求する認証方式です。
AWSでもMFAの有効化がセキュリティ上のベストプラクティスとなっており、設定が推奨されます。設定を行う事で、通常のログイン認証に加え、AWSでサポートされている以下MFA機構からの認証が追加で加わります。
- 仮想MFAデバイス
物理デバイスをエミュレートするソフトウェアアプリケーション - U2F セキュリティキー
コンピュータの USB ポートに接続するデバイス - ハードウェア MFAデバイス ※ルートユーザーの場合、可能であればこちらを検討(後述)
6 桁の数値コードが表示されるハードウェアデバイス
※SMS テキストメッセージベースMFAというものも存在しますがIAMユーザーのみ対応となり、ルートユーザーではサポートされません
以下CISベンチーマークでは Level 2としてルートユーザーでハードウェアMFAが有効となっている事が定義されています。
参考: CIS Amazon Web Services Foundations v1.2.0
1.14 Ensure hardware MFA is enabled for the "root" account (Scored)
https://d1.awsstatic.com/whitepapers/compliance/AWS_CIS_Foundations_Benchmark.pdf
当動画ではあくまで設定イメージを掴んでもらう事を目的に、仮想MFAデバイス(スマートフォンにインストールした Google Authenticator) を利用して設定を行う形で紹介しておりますが、高度なセキュリティを必要とする重要なAWSアカウントのルートユーザーでは、ハードウェアMFAデバイス利用した設定も検討してみてください。
今回の例で紹介したトークンデバイス以外で設定する場合の手順に関しましては、ご利用の各製品のマニュアルを確認ください。
参考: AWS アカウントの root ユーザーに対して MFA を有効にする
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_root-user.html#id_root-user_manage_mfa
3.ルートユーザーのアクセスキー発行有無の確認と削除
ルートユーザーでも各種プログラムから利用するためのアクセスキーの発行は可能です。ただし、請求情報を含む全てのAWSリソースにフルアクセス出来てしまい、制限する事も出来ないとても強力な物となりますので、余程の理由がない限りルートユーザーのアクセスキーは利用(発行)しない事が推奨されます。
もし、AWSアカウント監理者として意図せずにルートユーザーのアクセスキーの発行がされていた場合には、重大なセキュリティのトラブルに繋がる恐れがありますので削除対応を検討してください。同時に発行された経緯についても確認すると良いでしょう。
※もし、対象アクセスキーを利用しているプログラムの処理等が存在していた場合には影響を受けますので適切な権限のアクセスキーへの置き換えやIAMロール利用による処理の見直しでアクセスキーを利用しない/させない事も同時に検討してください
参考: AWS アカウントのルートユーザー のアクセスキーの管理
https://docs.aws.amazon.com/ja_jp/general/latest/gr/managing-aws-access-keys.html
参考: ルートユーザーのアクセスキーの削除
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_root-user.html#id_root-user_manage_delete-key
4.IAMユーザー/ロールでの請求情報アクセスを有効化
AWSアカウント発行時のデフォルト設定では、請求情報の参照はルートユーザーでのみ可能な状態となっています。ルートユーザーを普段使いしないで済むようにする為にも、別途作成の管理用IAMユーザーにて請求情報参照を可能にする「IAMユーザー/ロールによる請求情報へのアクセス」設定の有効化(IAMアクセスのアクティブ化) を実施すると良いでしょう。
実施後、IAMユーザー/ロールに必要なIAMポリシーを付与する事で請求情報へのアクセスが可能となります。
参考:請求情報およびコスト管理コンソールへのアクセスのアクティベート手順
https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/grantaccess.html#ControllingAccessWebsite-Activate
参考: Billing and Cost Management でのアイデンティティベースのポリシー (IAM ポリシー) の使用
https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/billing-permissions-ref.html
ルートユーザーの安全確保の作業デモ(動画内 02:06〜)
作業概要の説明に加え、実際にAWSマネジメントコンソールからルートユーザーの安全を確保する為の実際の操作デモを動画内で紹介しています。
管理者視点で、ざっくりとルートユーザーの安全確保に必要な作業や設定イメージを掴んで頂ける内容となっておりますで、もし興味があれば動画を参照ください。
まとめ
管理者としてAWSアカウントを作成した際には、ご紹介したセキュリティのベストプラクティスに従い速やかにルートユーザーの安全を確保しましょう。