必見の記事

AWSアカウントを作ったら最初にやるべきこと 〜2021年版〜 #devio2021

AWSを使い始めた際に、最初にやるべきことについて「ログ・モニタリング」「セキュリティ」「契約・コスト」の観点で紹介します。
2021.10.13

DevelopersIO 2021 Decade のセッション「AWS アカウントを作ったら最初にやるべきこと 〜2021年版〜」のブログ版です。

AWS を使い始めのときは、セキュリティやコストについて不安を抱いている方もいると思います。その不安を少しでも払拭できればという思いで作成しましたが、作成しているうちにあれもこれもと増えていき、ボリュームが多くなっています。

令和元年版 も合わせて参照していただくと理解が深まります。

動画

資料

はじめに

やるべきことは資料にまとめており、本ブログは概略版となります。 資料では、設定するサービス内容の理解を助けるために、各サービスの利用画面もなるべく掲載するようにしています。

やるべきことは「ログ・モニタリング」「セキュリティ」「契約・コスト」の観点で分類しており、レベル設定もしています。 また、資料の方には参考情報として料金の有無も記載しています。

1点注意として、やるべきことのレベル設定は個人の見解となります

やるべきこと一覧

レベル設定

レベル 説明
MUST 必須でやること
SHOULD 明確な理由が無い限りやるべきこと
MAY 条件によってやる/やらないが決まること
INFO 関連する役立ち情報

一覧表

ログ・モニタリング

サービス名 内容 レベル
AWS CloudTrail 有効化(証跡の作成) MUST
CloudTrail Insights の有効化 SHOULD
Athena のテーブル作成 MAY
Amazon EventBridge マネジメントコンソールのサインイン通知 SHOULD
AWS Config 有効化(レコーダーの作成) MUST
Config ルールの作成 SHOULD
Amazon DevOps Guru 有効化 SHOULD
Amazon S3 Storage Lens 有効化(ダッシュボードの作成) SHOULD
AWS Personal Health Dashboard 通知設定 SHOULD
AWS Trusted Advisor 通知設定 SHOULD

セキュリティ

サービス名 内容 レベル
AWS IAM (root ユーザ) MFA 認証の設定 MUST
アクセスキーの削除 MUST
AWS IAM IAM パスワードポリシーの設定 MUST
IAM ユーザの作成 MUST
MFA 認証の設定 MUST
アカウントエイリアスの作成 MAY
AWS IAM Access Analyzer 有効化(アナライザーの作成) SHOULD
マネジメントコンソール IP アドレス制限 MAY
Amazon GuardDuty 有効化 SHOULD
S3 保護の有効化 SHOULD
信頼されている/驚異 IP リストの作成 MAY
通知設定 MAY
S3 エクスポート設定 MAY
AWS Security Hub 有効化 SHOULD
通知設定 MAY
Amazon Detective 有効化 SHOULD
Amazon VPC VPC フローログの有効化 SHOULD
デフォルト VPC の削除 MAY
Amazon EC2 (EBS) EBS のデフォルト暗号化設定 MAY
Amazon S3 アカウントのブロックパブリックアクセス設定 MAY

契約・コスト

サービス名 内容 レベル
マイアカウント お支払い通貨の設定 SHOULD
秘密の質問の設定 SHOULD
代替の連絡先の設定 MAY
デフォルト無効リージョンの確認 INFO
AWS Artifact 準拠法を日本法に変更 MAY
AWS サポート 必要なサポートに加入 MAY
AWS Cost Explorer 有効化 SHOULD
時間単位とリソースレベルのデータを有効化 MAY
サイズの適正化に関する推奨事項を有効化 SHOULD
AWS Compute Optimizer 有効化 SHOULD
AWS Cost Anomaly Detection 有効化(モニターとサブスクリプション設定) SHOULD
Budgets 予算アラートの設定 SHOULD
予算レポートの設定 MAY
請求コンソール (Billing) Cost and Usage Reports の有効化 MAY
コスト配分タグの設定 MAY
PDF 請求書の設定 MAY
無料利用枠の使用アラートの設定 MAY
請求アラートの設定 INFO
マイアカウント IAM ユーザによる請求情報へのアクセス設定 MAY

その他

カテゴリ 内容 レベル
リソース命名規則 大まかな命名規則の決定 SHOULD
辞書登録 よく使う AWS 単語の辞書登録 INFO

ログ・モニタリングのやるべきこと

AWS CloudTrail の設定

CloudTrail は AWS リソースを「誰が」「いつ」「何に」対して「どうような」操作をしたのかを記録するサービスです。 ログの長期保管の設定をしておくことで、トラブル発生時の解析等に利用できます。 有料です(無料利用枠もあります)

[YouTube] AWS CloudTrailを触ってみた

CloudTrail Insights を利用することで、機械学習により異常なアクティビティを検出することもできます。

ログは S3 と CloudWatch Logs に転送でき、S3 に保管しているログは Athena により検索することもできます。 Athena を利用する場合は、事前に CloudTrail 用のテーブルを作成しておき、検索方法を習熟しておきましょう。 インシデントが発生してから習熟では対応が遅くなります。

[AWS]CloudTrailの証跡ログをAthenaを使ってサクッと解析する[このリソース誰が作ったの?]

マネジメントコンソールのサインイン通知

EventBridge サービスを利用することで、CloudTrail のイベント契機でアクションを設定することができます。 始めに設定しておいた方がよい内容として、IAM ユーザのマネジメントコンソールへのサインイン通知があります。 通知により、IAM ユーザの不正利用に早く気づくことができます。

AWSマネジメントコンソールのサインインをメールで通知する方法

AWS Config の有効化

AWS Config は、AWS リソースの変更の追跡を行うことができるサービスです。 リソースの変更履歴をタイムラインとして表示することもできるため、インシデント発生時の調査等に役立ちます。 有料です。

[YouTube] AWS Configを有効化してみた

AWS リソースの設定内容が基準を満たすかどうかを評価する Config ルールの利用も合わせて検討します。 Config ルールには AWS が提供しているマネージドルールもあります。

AWS Config マネージドルールのリスト

Amazon DevOps Guru の有効化

機械学習により運用パターンから逸脱したアプリケーション動作を検出するサービスです。 ウェブアプリケーションのレイテンシー急上昇やディスクスペースの不足などを検出してくれます。 有料です。

【簡単導入】機械学習で運用を効率化!Amazon DevOps Guruを有効化してみた

Amazon S3 Storage Lens の有効化

S3 の使用状況とアクティビティの傾向を可視化し、コストやデータ保護に関する推奨事項を提案してくれるサービスです。 S3 の利用状況を分析するために役立ちます。 基本メトリクスは無料ですが、高度なメトリクスとレコメンデーション機能は有料となります。

[新機能] S3 の利用状況が一目瞭然!しかも無料!「Amazon S3 Storage Lens」がリリースされました!

AWS Personal Health Dashboard の通知設定

作成したリソースが障害やメンテナンスの影響を受けているか確認できるサービスです。 イベント発生を通知することができます。

MonitoringAWS HealthAmazon CloudWatch Events

AWS Trusted Advisor の通知設定

「コスト最適化」「パフォーマンス」「セキュリティ」「対障害性」「サービスの制限」に関してAWSの推奨事項をアドバイスしてくれるサービスです。 推奨事項はメールで通知する設定ができます。 無料で利用できますが、すべてのチェック項目を利用するためにはビジネスサポート以上が必要となります。

セキュリティのやるべきこと

root ユーザの設定

root ユーザは AWS アカウント作成に使用したメールアドレスとパスワードを利用するユーザです。 root ユーザは強い権限を持つため、普段の作業では利用せず、サポート契約などの root ユーザにしかできない作業を行うときのみ利用するようにします。

不正利用防止のため、MFA 認証の設定とアクセスキーの削除を行います。

AWS IAM MFAをスマートフォンで設定する方法

IAMのベストプラクティス!rootユーザのアクセスキーはできるだけ削除していきましょう

IAM ユーザ/IAM グループの作成

IAM ユーザは AWS 内で定義されるユーザ情報です。 始めにパスワードポリシーの設定を行い、IAM ユーザを作成します。 IAM ユーザを作成する際は、合わせて IAM グループを作成し、IAM グループに対して IAM ポリシーを割り当てるようにします。

IAM ユーザは利用者毎に作成し、MFA 認証を設定するようにします。 MFA 認証は基本的には設定したほうが良いですが、後述するマネジメントコンソールへの IP アドレス制限を行う場合は、利便性とのバランスを考慮して利用有無を検討してもよいかもしれません。

[YouTube] 初めてのIAM User作成

アカウントエイリアスの作成

IAM ユーザでマネジメントコンソールにサインインするときには、12 桁の AWS アカウント ID も入力する必要があります。 このアカウント ID の代わりに任意の文字列のエイリアスを設定することができます。

IAM Access Analyzer

外部エンティティ(外部 AWS アカウントや IdP 等)に対するアクセス許可状況を確認できるサービスです。 意図していない権限を外部エンティティに対して付与していないかどうか確認できます。 利用するリージョン毎に有効化する必要があります。

マネジメントコンソールサインインの IP アドレス制限

IAM ロールを利用することで、マネジメントコンソールへサインインできる送信元 IP アドレスを制限することができます。 設定内容はやや複雑なので、設定方法を紹介しているブログをご参照ください。

[AWS]マネージメントコンソールにIP制限をしつつ、一部利用できない機能も利用できるようにする

Amazon GuardDuty の有効化

AWS 環境を継続的にモニタリングして、セキュリティに関する異常を検出してくれるサービスです。 利用するリージョン毎に有効化する必要があります。 有料です。

[2021年版]Amazon GuardDutyによるAWSセキュリティ運用を考える

利用する際には、信頼されている IP アドレスと驚異となる IP アドレスを事前に登録しておくことで精度が向上します。 また、S3 保護機能を有効化することで、S3 に関する異常も検出してくれるようになります。

GuardDuty で検討すべき設定として、CloudWatch Events へのデータ送信間隔の変更と S3 バケットへのエクスポート設定があります。 CloudWatch Events へのデータ送信間隔を 15 分に変更することで、イベントの通知を早めることができるメリットがあります。

セキュリティイベントを通知することもできます。

GuardDutyからのイベント通知をちょっと見やすくして通知する

AWS Security Hub の有効化

セキュリティサービスの検知結果の一元管理とセキュリティ基準(Security Standard)に基づいたリスクの評価ができるサービスです。 GuardDuty 同様に、利用するリージョン毎に有効化する必要があります。 有料です。

[入門]社内勉強会で AWS Security Hubの話をしました

セキュリティ基準機能では、AWS 環境がセキュリティ基準を満たしているかを評価し、セキュリティスコアとして表示してくれます。 評価結果の対処もしくは無効化を行うことで、スコア 100 %を目指します。

うわっ…私のセキュリティスコア低すぎ…?Security HubのCISベンチマークの俺流チューニングで100%準拠を目指す

セキュリティイベントを通知することもできます。

Security Hub イベントを見やすく加工して Eメール通知してみる

Amazon Detective の有効化

セキュリティイベントの調査を容易にするサービスです。 GuardDuty 同様に、利用するリージョン毎に有効化する必要があります。 有料です。

2021年10月12日時点で大阪リージョンでは未提供です

Detective は GuardDuty と連携しており、GuardDuty で検出したイベントを Detective で調査することができます。

[神ツール]セキュリティインシデントの調査が捗るAmazon DetectiveがGAしたのでメリットとオススメの使い方を紹介します

VPC フローログ有効化とデフォルト VPC 削除

VPC のトラフィック情報をログに残すために VPC フローログを有効化します。

フローログの使用

アカウント開設直後では、各リージョンにデフォルト VPC が 1 個ずつ存在します。 自身で VPC を作成する場合は、デフォルト VPC は不要なので削除します。 また、利用していないリージョンにおいてもデフォルト VPC は不要なリソースとなるので削除します。

デフォルト VPC のサブネット設定では、パブリック IPv4 アドレスの自動割り当て設定が有効であるため、削除することで意図しないインターネット公開の可能性を少しでも減らすことができます。

Amazon EC2 (EBS) のデフォルト暗号化設定

EBS ボリュームの暗号化は、デフォルトでは「無効」の設定になっています(作成時に暗号化を有効にすることはできます)。 暗号化設定のデフォルトを「有効」にすることができます。 セキュリティ要件において、Disk の暗号化が必須の場合は、有効化漏れを防ぐためにもデフォルトを「有効」の設定に変更します。

Amazon S3 のブロックパブリックアクセス設定

アカウント内の S3 のインターネット公開をブロックする「アカウントのブロックパブリックアクセス設定」があります。 S3 をインターネットに公開する予定がないアカウントでは、意図しないインターネット公開を防ぐためにブロック設定を行います。

契約・コストのやるべきこと

マイアカウントの設定

希望の支払い通貨に変更します。日本円に変更することもできます。

秘密の質問の設定を行います。 秘密の質問は AWS カスタマーサービスが AWS アカウントの所有者であることを確認するために利用されることがあるようです。 一度、設定すると削除はできませんが、変更はできます。

代替の連絡先を設定できます。 AWS からの連絡先として、root ユーザのメールアドレス以外の連絡先を追加できます。 必要に応じて、「請求」「オペレーション」「セキュリティ」の連絡先タイプごとに設定します。

デフォルトで無効になっているリージョンを確認し、利用する場合は有効化のアクションを行います。

準拠法の契約変更

アカウント開設直後は、AWS カスタマーアグリメントの準拠法は米国ワシントン州法です。 必要に応じて、準拠法を日本法に変更する契約変更を締結できます。

AWSの準拠法を日本法に変更する方法

AWS サポートへの加入

要件に応じて、AWS のサポートに加入します。 サポートはプランにより料金が変わります。

サポートのプラン比較

AWS Cost Explorer の設定

実績と予測のコストを可視化してくれるサービスです。 Cost Explorer API の利用や一部のオプション機能は有料となります。

次の 2 点の設定変更を検討します。

  • 時間単位とリソースレベルのデータ
    • 言葉通りの意味ですが、コストを時間単位で表示したり、リソース別に表示したりできるようになります
    • 追加料金が発生します
  • サイズの適正化に関する推奨事項を受け取る
    • CPU 使用率等のメトリクス情報を基に EC2 インスタンスにおける推奨インスタンスタイプを提示してくれるようになります
    • 追加料金は発生しません

AWS Compute Optimizer の有効化

コストとパフォーマンスの観点で最適な Compute リソースを提案してくれるサービスです。 EC2 / EBS / Auto Scaling Group / Lambda に対応しています。

[アップデート] AWS Compute Optimizerが東京リージョンに対応しました!

AWS Cost Anomaly Detection の有効化

機械学習によりコストの異常を検出してくれるサービスです。 検出した異常を通知する設定ができ、通知によりコスト異常に早く気づくことができます。

正式リリースされた「AWS Cost Anomaly Detection」を利用して、EC2 Mac インスタンスの課金を検出させてみた

Budgets の設定

予算の管理を行うサービスです。 設定した実績 / 予測コストのしきい値でアラート送信ができます。

定期的(日次、週次など)に予算に対する実績 / 予測コストのレポートをメールで受け取ることもできます。 注意点として予測コストが利用できるようになるまで、約 5 週間必要となります。

Cost and Usage Reports の有効化

日本語では「AWS のコストと使用状況レポート」です。 コストに関する詳細情報を CSV 形式(GZIP 圧縮)で S3 に保管してくれます。 S3 に保存したレポートは、Athena や BI ツールを利用して分析できます。

コスト配分タグを利用することで、レポートにタグ情報を追加することもできます。 タグ情報があることにより分析の幅が広がります。

請求コンソール (Billing) の設定

「E メールで PDF 版請求書を受け取る」設定と「無料利用枠の使用アラートを受信する」設定を有効化するかどうか検討します。 「請求アラートを受け取る」設定もありますが、Budgets 機能で代替可能なので、無理に有効化する必要はありません。

IAM ユーザによる請求情報へのアクセス設定

これまで説明した CostExplorer などの請求・コストに関するサービスの中には、root ユーザにしか権限がないサービスがあります。 IAM ユーザに対してもアクセス権を与える設定がありますので、必要に応じてマイアカウント画面から設定します。

その他

大まかなリソース命名規則の決定

始めから詳細なリソース命名規則を決めることは難しいですが、大まかに決めておくことをおすすめします。 「要素」と「順番」だけ考慮して、ハイフンで区切るだけで、大まかな命名規則を決めることができます。

「要素」としては、システム名、環境(prod, stg, dev)、サービス名、リージョン名、ユーザ名/チーム名/組織名、などがあり、要素毎に必要かどうかを精査します。 「順番」はアクセス制御のしやすさやソートのしやすさを考慮して決定します。

決め方の例は資料をご参照ください。 参考として、弊社内で利用されている命名規則の一例を紹介したブログもございます。

弊社で使っているAWSリソースの命名規則を紹介します

辞書登録

よく使う AWS 単語を IME の辞書に登録しておくと便利です。

  • まいあかうんと → 111122223333
  • とうきょうりーじょん → ap-northeast-1 など

まとめ

AWS で最初にやるべきことについて「ログ・モニタリング」「セキュリティ」「契約・コスト」の観点で紹介しました。

ぜひご活用ください!