AWS アカウントは簡単に作成でき、手軽に利用できます。しかし、初期設定ではセキュリティ設定が弱いため、第三者に悪用される危険があります。
安全に利用するために、適切な設定を実施しましょう。
ルートユーザーの権限は強力であるため、初期設定を行ったあとは可能な限り利用しないようにしましょう。
ルートユーザーでしか出来ない作業が必要になった場合のみ利用するようにしましょう。
詳しくは、以下の URL を参照してください。
https://docs.aws.amazon.com/accounts/latest/reference/root-user-tasks.html
ルートユーザーの乗っ取りを防止する意味でも アカウントを作成したらすぐにでも MFA を設定しましょう。
AWS アカウント登録時の連絡先以外にも連絡してくれるようになります。
請求、オペレーション、セキュリティの3つに対して代替の連絡先を指定できます。必要に応じて設定しましょう。
<設定方法>
https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-alternate.html
MFA デバイスの紛失時などに電話番号認証を行う場合、国際電話識別番号が設定していないと AWS からの国際電話が着信しません。(03-1234-5678 の場合、+81 3-1234-5678) 国際電話が着信しないと、カスタマーサポートに連絡することになり、時間外などはすぐに対応してもらえない場合があります。
<設定方法>
アカウントの乗っ取りや誤ったインスタンスタイプの起動など、予期しない請求を早期に検知できるので設定しましょう。
<設定方法>
https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-create.html
予算アラートは、設定した予算額に対してある敷居値を超えるときに通知するサービスでした。実際に超過しなければ通知されないため、異常な兆候は検出できません。
コスト異常検知は、コストを継続的にモニタリングし、機械学習モデルを利用して異常な AWS コストの発生を検出することができるサービスです。 AWS コスト異常検出を使うことで、想定外のコストが発生することを減らすことができ、アラートを受信することができます。
https://docs.aws.amazon.com/cost-management/latest/userguide/getting-started-ad.html
アカウント内で不正な操作を記録、検知するためにも有効にしましょう。 CloudTrail のログ保存先の S3 は、ライフサイクルルールも設定しましょう。 後述するログ監視を実施するために、CloudWatch Logs にも配信しましょう。CloudWatch のロググループには適切な保持期限を設定しましょう。
<設定方法>
https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html
CloudTrail のログを監視し、少なくとも以下を監視してアラートされるようにしましょう。
その他に監視しておくとよいのは以下です。
Personal Health Dashboard で随時確認し、監視してもよいですが、Amazon EventBridge コンソール でイベントパターン{"source": ["aws.health"]}を監視して自動化しよう。 通知する場合は、入力トランスフォーマーを使い、メッセージを読みやすいように整形しましょう。
<設定方法>
入力トランスフォーマーの設定例
{"eventDescription":"$.detail.eventDescription[0].latestDescription","eventTypeCode":"$.detail.eventTypeCode","region":"$.region","service":"$.detail.service","startTime":"$.detail.startTime","type":"$.detail-type"}
"AWSにてメンテナンス通知が発行されました。"
"type: <type>"
"eventStartTime: <startTime>"
"service: <service>"
"region: <region>"
"eventTypeCode: <eventTypeCode>"
"eventDescription: <eventDescription>"
"詳細は Personal Health Dashboard を確認してください。"
"https://phd.aws.amazon.com/phd/home#/dashboard/open-issues"
https://docs.aws.amazon.com/ja_jp/health/latest/ug/cloudwatch-events-health.html
デフォルトの IAM ユーザーのパスワードポリシーは脆弱です。そのため、アカウントを作成したら忘れないうちに強力なポリシーに変更しましょう。
推奨は、以下です。
- パスワードの最小長「12」以上
- 少なくとも1つの大文字が必要
- 少なくとも1つの小文字が必要
- 少なくとも1つの数字が必要
- 少なくとも1つの英数字以外の文字が必要
MFA を利用しない場合は、以下の追加も検討しましょう。
- パスワードの失効を許可「180日」
- パスワードの再利用を禁止「5回」
<設定方法>
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_account-policy.html
ルートユーザーの代わりとなる全般的な管理を行う IAM ユーザーとグループを作成します。
作成した管理用グループに IAM ユーザーを追加します。
次に、AdministratorAccess の権限のロールとスイッチングロールを許可したポリシーを作成し、作成したグループに付与します。安全のために、ロール切り替え時には MFA が有効になっていることを条件としましょう。
作成した IAM ユーザには MFA を設定しましょう。
※ 2022 年 2 月以降に作成した AWS アカウントでは、最初から「日本準拠法」になっているので本手順は不要になりました。
AWS アカウントの開設直後に設定されている準拠法は米国ワシントン州法となっています。ワシントン州法への準拠および英語での法務対応が困難な場合は、準拠法を日本法、紛争に関する第一審裁判所を東京地方裁判所に変更しましょう。
AWS アカウントはセキュリティチャレンジ質問の使用を中止します
ルートユーザーの多要素認証の解除など、カスタマーサービスに問い合わせを行うときに AWS アカウントの所有者であることを確認するために使うことができ、本人確認をする手間が楽になります。 ただし、一度設定すると変更は可能ですが削除することはできません。
秘密の質問は、設定した本人が忘れることが多いので、安易に設定するのはお勧めしません。設定する場合はよく検討しましょう。(参考記事: https://japan.zdnet.com/article/35065000/)
<設定方法>
https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-security-challenge.html