注目の記事

【資料公開】AWSアカウントで最初にやるべきこと 〜2022年6月版〜

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

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

昨年の DevelopersIO 2021 Decade で登壇した内容(以下のブログ)について、2022 年 6 月に同じ内容のセミナーをやらせていただく機会がありましたので少し更新しました。資料公開と合わせてブログでも補足します。

登壇資料

はじめに

やるべきことは資料にまとめており、本ブログは概略版となります。「ログ・モニタリング」「セキュリティ」「契約・コスト」の観点で分類しており、参考としてレベル設定もしています。

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

レベル設定に関して、用途や利用者の状況によってやるべきことは変わるため、一時は削除しようかとも考えましたが、「検討の参考になるので助かる」とのありがたいお言葉もいただけたため、引き続き掲載することにしました。おそらく 10 名に聞くと 10 通りの回答になるので、周りの方とディスカッションしてみていただくのもおもしろいと思います。


やること一覧

前回からの主な変更は次の通りです。最近の状況の考慮やフィードバックの反映をしています。

  • 項目の追加、削除
  • レベル設定の見直し
  • AWS 利用経験に応じた本資料の使い方の例を追加

他にも細かい点は色々更新しています。変更点はついては、本ブログ中の各項目の説明としてなるべく記載するようにしています。

レベル設定

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

一覧表

ログ・モニタリング

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

セキュリティ

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

契約・コスト

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

その他

カテゴリ 内容 レベル
アカウントの全般設定 言語、デフォルトリージョン、お気に入りバーの設定 MAY
リソース命名規則 大まかな命名規則の決定 SHOULD
辞書登録 よく使う AWS 単語の辞書登録 INFO


AWS 利用経験に応じた本資料の活用例

AWS 利用経験 本資料の使い方の例
AWS を触り始めたばかりの方 重要なデータを AWS 上に保管しない場合、始めは次の設定を確認し、他の項目は後で徐々に理解を深めながら確認していただく
・MUST の項目
・マイアカウントの項目
・AWS Cost Explorer
・AWS Budgets
AWS をある程度利用されている方 自身の環境チェックや企業におけるアカウント発行時のベースライン設定検討の参考にしていただく


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

AWS CloudTrail の設定

CloudTrail は AWS リソースに関して「誰が」「いつ」「何に」対して「どうような」操作をしたのかのイベントを記録するサービスです。イベント履歴から 90 日間分のイベントを確認することはできますが、イベントログの長期保管の設定(証跡の作成を行い、S3 に保管)をしておくことで、トラブル発生時の解析やインシデント発生時の調査などに利用できます。

有料です(無料利用枠もあります)。

[YouTube] AWS CloudTrail を触ってみた

CloudTrail Insights イベントを利用することで、機械学習により異常なアクティビティを検出することもできます。通常の操作で検出されることがあるため、始めに試してみて、あまり活用しないようであれば無効化を検討でも良いと思います。

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

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

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

Amazon EventBridge と Amazon SNS を利用することで、イベント契機で通知する設定ができます。マネジメントコンソールへのサインインをメールや Slack に通知することができます。

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

【2021 版からの変更点】 SHOULD としていましたが、アカウントによっては通知過多になることもあるため、MAY に見直しました。

AWS Config の有効化

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

有料です。

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

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

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

【2021 版からの変更点】 Config ルールは SHOULD としていましたが、最近は Security Hub のコントロールの追加が活発なこともあり、利用する機会が減っている印象です。Security Hub のセキュリティ標準で足りない要件の実現手段として検討するのが良いと思います。

AWS Health Dashboard の通知設定

AWS サービスの障害や自身のアカウントに関する障害やメンテナンスの影響を確認できるサービスです。イベント発生を通知することができます。

Amazon EventBridge を使用した AWS Health イベントのモニタリング - AWS Health

【2021 版からの変更点】 2022 年 2 月に Service Health Dashboard と Personal Health Dashboard が統合されて AWS Health Dashboard になったことを反映しました。

[アップデート] Service Health Dashboard と Personal Health Dashboard が統合されて AWS Health Dashboard になりました

AWS Trusted Advisor の通知設定

「コスト最適化」「パフォーマンス」「セキュリティ」「対障害性」「サービスの制限」に関して AWS の推奨事項をアドバイスしてくれるサービスです。推奨事項はメールで通知する設定ができます。

無料で利用できますが、すべてのチェック項目を利用するためにはビジネスサポート以上が必要となります。

【2021 版からの変更点】 SHOULD としていましたが、他サービスで代替できることもあるため、通知設定は MAY に見直しました。例えば、Security Hub を利用している場合は Security Hub の方がチェック項目が多く充実しています。

Amazon DevOps Guru の有効化

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

有料です。

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

【2021 版からの変更点】 有益なサービスであり、SHOULD としていましたが、開発環境など必ずしも必要ではない状況もあるため、MAY に見直しました。

Amazon S3 Storage Lens のダッシュボード作成

S3 の使用状況とアクティビティの傾向を可視化し、コストやデータ保護に関する推奨事項を提案してくれるサービスです。S3 の利用状況を分析するために役立ちます。

基本メトリクスは無料ですが、高度なメトリクスとレコメンデーション機能は有料となります。

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

【2021 版からの変更点】 SHOULD としていましたが、デフォルトのダッシュボードが作成済みであり、追加のダッシュボードが必要ないケースもあるため、MAY に見直しました。はじめて利用する場合はデフォルトのダッシュボードをまずは利用してみて、不足がある場合に検討でも良いと思います。


セキュリティのやること

ルートユーザーの設定

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

不正利用防止のため、MFA 認証の設定とアクセスキーの削除(作成している場合のみ)を行います。

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

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

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

IAM ユーザーは AWS 内で定義されるユーザー情報です。

始めに、パスワードポリシーの設定を行います。IAM ユーザーを作成する前に IAM グループを作成し、IAM グループに対して IAM ポリシーを割り当てるようにします。IAM ユーザーは使い回しをせずに利用者毎に作成し、MFA 認証を設定します。

[YouTube] 初めての IAM User 作成

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

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

AWS アカウント ID とそのエイリアス - AWS Identity and Access Management

IAM Access Analyzer の有効化

外部エンティティ(外部 AWS アカウントや ID Provider など)に対するアクセス許可状況を確認できるサービスです。意図していない権限を他の AWS アカウントに対して与えていないかを確認できます。

利用するリージョン毎に有効化する必要があります。

AWS IAM Access Analyzer を使用する - AWS Identity and Access Management

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

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

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

複数の AWS アカウントを管理している場合は、IAM ユーザーを集約する Jump アカウントを作成して IP アドレス制限を行う方法もあります。

Jump アカウント環境で IP アドレス制限を行う方法

Amazon GuardDuty の有効化

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

有料です。

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

利用する際には、信頼されている IP アドレスと驚異となる IP アドレスを事前に登録しておくことで精度が向上します。また、S3 保護、及び、Kubernetes 保護機能を有効化することで、S3 や EKS に関する異常も検出してくれるようになります。S3 保護、及び、Kubernetes 保護は 2021 年 6 月 15 日時点ではデフォルトで有効化されています。

【2021 版からの変更点】 Kubernetes 保護は新しく追加された機能です。

[アップデート] GuardDuty が EKS クラスターへの脅威の検出をサポートしました!


セキュリティイベントを通知することができ、重要度に応じて通知させることもできます。

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

GuardDuty の通知が重要度でフィルター可能になりました

【2021 版からの変更点】 MAY から SHOULD に変更しました。重要度「高」の中には C&C サーバとの通信検知など、即座に対応が必要なものが含まれるためです。


その他に、GuardDuty で検討すべき設定として、更新された検出結果の頻度の変更と S3 バケットへのエクスポート設定があります。更新された検出結果の頻度を 15 分に変更することで、イベントに更新があった場合の再通知を早めることができます。S3 にエクスポートすることで Athena を用いて集計や分析を行うことができます。

AWS Security Hub の有効化

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

有料です。

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

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


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

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

セキュリティイベントを通知することもできます。無条件で全ての内容を通知すると数が多くなりがちなので、重要度や項目を絞るなど検討した方が良いです。

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

Amazon Detective の有効化

セキュリティイベントの調査を容易にするサービスです。GuardDuty で検出したセキュリティイベントを Detective で調査することができます。GuardDuty 同様に、利用するリージョン毎に有効化する必要があります。Detective の有効化に関して、GuardDuty の有効化が前提条件となっており、GuardDuty 有効化後に少なくとも 48 時間の経過が必要となります。

有料です。

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

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

デフォルト VPC の削除

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

デフォルト VPC ではサブネットやセキュリティグループも作成されており、これらを意図せず活用して、リソースを必要以上の範囲で公開してしまう可能性があります。なお、削除した場合でも復旧することができます。

デフォルト VPC を削除/復旧する手順を教えてください

【2021 版からの変更点】 デフォルト VPC の削除は、意図しない公開を防ぐために有効なため MAY から SHOULD に変更しました。以前は、VPC フローログの項目がありましたが、VPC 作成時の検討事項となるため削除しました。

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

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

[アップデート] EBS 暗号化のデフォルト値を指定できるようになりました!

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

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

なお、S3 バケットを直接公開するよりも Amazon CloudFront 経由でアクセスさせることをご検討ください。


契約・コストのやること

マイアカウントの設定

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

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

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

【2021 版からの変更点】 支払い通貨の設定を削除しました。デフォルトで日本円となったためです。

準拠法の契約変更

やることから削除しました

【2021 版からの変更点】 2021 年 11 月にAWS カスタマーアグリーメントが変更され、AWS 契約当事者が「Amazon Web Services Japan Godo Kaisha」の場合は、準拠法は日本国法、管轄裁判所は東京地裁と定められるようになったため削除しました。AWS Japan FAQ's にも参考となる情報があります。

AWS サポートへの加入

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

サポートのプラン比較

AWS Cost Explorer の設定

実績と予測のコストを可視化してくれるサービスです。

Cost Explorer API の利用や一部のオプション機能は有料となります。

次の 2 点の設定も確認します。

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

AWS Compute Optimizer の有効化

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

EC2 インスタンスのメモリ利用率を対象とするためには、EC2 インスタンスに CloudWatch エージェントをインストールする必要があります。CloudWatch の利用には料金が発生します。

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

AWS Cost Anomaly Detection の有効化

機械学習によりコストの異常を検出してくれるサービスです。

検出した異常を通知する設定ができ、通知によりコスト異常に早く気づくことができます。例えば、アカウントを乗っ取られ、マイニング等に利用された場合に気づきやすくなります。

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

AWS Chatbot と統合された AWS コスト異常検出 (Cost Anomaly Detection)を試してみた

AWS Budgets の設定

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

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

AWS Cost and Usage Reports の活用

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

Amazon Athena を使用したコストと使用状況レポートのクエリ - AWS コストと使用状況レポート

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

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

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

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

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


その他

アカウントの全般設定

マネジメントコンソールにおける利用言語、デフォルトのリージョン、お気に入りバーの表示形式を設定します。

デフォルトのリージョンは、サインインするときに表示されるリージョンを指定する設定です。設定しようと思ったらバージニア北部リージョンだった、という状況を減らすことが期待できます。

お気に入りバーの表示設定では、お気に入りバーをアイコンのみとするかアイコン+サービス名の表示にするか選択できます。AWS 外のツール利用となりますが、アイコンの表示を大きくすることもできます

AWS マネジメントコンソールの各種設定をデバイスやブラウザ間で共有できるようになりました

【2021 版からの変更点】 新しい項目です。

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

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

要素としては、システム名/サービス名、環境(prod, stg, dev)、AWS サービス名、リージョン、ユーザー名/チーム名/組織名などがあり、要素毎に必要かどうかを精査します。

順番は、アクセス制御のしやすさやソートのしやすさを考慮して決定します。例えば、IAM ポリシーで条件を設定する際にリソース名のプリフィックスで指定できる場合があります。

参考として、弊社内で利用されている命名規則の一例を紹介しているブログを紹介します。

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

辞書登録

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

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


さいごに

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

用途や利用者の状況次第でやるべきことは変わってくるので、一意に定めることができないところが難しいですね。私の場合は、AWS を組織的に利用するためのアカウントベースライン設定も想定して記載しているところがあります。

このブログがどなたかのご参考になれば幸いです。

最後に、アカウントのベースライン設定の参考になるブログを紹介します。クラスメソッドのセキュアアカウント発行サービス において、どのような設定が行われているかを紹介しているブログです。