ヘルプ Amazon Web Services ガイダンスレポート

AWSガイダンスレポート

アマゾンウェブサービスのガイダンスレポートでは、EC2、RDS、IAM、S3、SESなど、各種AWSサービスの設定やリソース利用を確認できます。さらには、コスト最適化のため推奨事項を提示し、AWSアカウントの障害耐性やパフォーマンスの向上に役立ちます。

以下、227のベストプラクティスルールを、AWSサービスごとに分けて紹介します。

リソースレベルのベストプラクティスチェック

ガイダンスレポートタブでは、各AWSリソースのベストプラクティスを表示します。対応しているAWSサービスはこちらを参照してください。次の画像は、AWS EC2監視ダッシュボードに標準実装されたベストプラクティス推奨事項を表示しています。

ベストプラクティスチェック

AWSベストプラクティスチェック

Elastic Compute Cloud(EC2)

1. 使用率の低いEC2インスタンス(優先度:中)

ベースライン:

過去48時間でCPU使用率が2%未満であったEC2インスタンスが存在するかを確認します。

推奨:

Amazon EC2ではインスタンスタイプと使用時間に応じて請求が発生します。使用率の低いインスタンスを停止してコストを下げてください。ダウングレード先に推奨するインスタンスタイプも表示されるので、こちらもコスト削減に役立てられます。

必要な権限:

"ec2:DescribeInstances"、"cloudwatch:GetMetricData"、"cloudwatch:GetMetricStatistics"、"cloudwatch:ListMetrics"

2. EC2セキュリティグループ:特定ポートへの 無制限アクセス(優先度:高)

ベースライン:

監視しているEC2インスタンスのセキュリティグループを確認し、ポート「20、21、22、1433、1434、3306、3389、4333、5432、5500」で、無制限アクセスを許可しテイルポートがないか調べてください。

説明:

無制限アクセスはDDoS攻撃やアプリケーションへの悪意のトラフィックにつながる可能性があります。

推奨:

TCPポート80と443をインターネットに公開し、攻撃機会を最小限にします。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeSecurityGroups"

3. EC2インスタンスの終了を抑制(優先度:高)

ベースライン:

EC2インスタンスの設定を確認し、終了制御が有効となっているかを確認してください。

説明:

終了抑制によって、インスタンスが誤って削除されるのを防止できます。また、Auto ScalingポリシーによってEC2インスタンスがスケールインする際に、削除されるのも防止します。

推奨:

EC2インスタンスの終了抑制はデフォルトでは無効となっています。予期しないインスタンスの終了を防ぐためにこれを有効化してください。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeInstanceAttribute

4. Amazon EC2 VPCインスタンス:膨大なルールをもつセキュリティグループ(優先度:中)

ベースライン:

50を超えるインバウンドおよびアウトバウンドルールをもつセキュリティグループがあるAmazon EC2 VPCインスタンスを確認します。

説明:

インスタンスをVPCで起動している場合、インスタンスに関連付けられているセキュリティグループを5つまで特定します。各セキュリティグループで、入力および出力トラフィックを制御するルールを追加します。セキュリティグループの数がルールよりも大きい場合、インスタンスのパフォーマンスに影響を及ぼします。

推奨:

VPCセキュリティグループに関連付けられているルールに数を減らしてください。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeSecurityGroups"

5. タグ付けされていないEC2インスタンス(優先度:情報)

ベースライン:

ユーザー定義のタグ(キー・バリューペア)のElastic Compute Cloud (EC2)インスタンスを確認します。

説明:

AWSはユーザーにタグ(キー・バリューペア)のフォームでメタデータを割り当て、インスタンスやイメージ、Auto Scalingグループなどに対してよりよい追跡と管理を提供しています。組織はこれら関連するタグや実践的なタグの戦略を実行し、EC2リソースファームを効果的に管理することができます。

推奨:

タグ戦略とAWSのベストプラクティス

必要な権限:

"ec2:DescribeInstances"

6. Amazon EC2:高いインスタンス使用率(優先度:高)

ベースライン:

Amazon EC2のパフォーマンスカウンターを確認し、使用率が高いインスタンスを識別します。

説明:

次の条件を満たした場合に、EC2インスタンスは利用過剰と判断します。

  • 日ごとのEC2インスタンス平均CPU使用率が、最新7日間連続で90%を超えた場合
  • 日ごとのEC2インスタンス平均メモリー使用率が、最新7日間連続で90%を超えた場合(EC2インスタンスにSite24x7のエージェントが展開されている場合のみ適用)

推奨:

インスタンスサイズを変更したり、インスタンスをAuto Scalingグループによって追加するかを検討してください。

7. Amazon EC2のIAM権限 (優先度:高)

ベースライン:

監視されているEC2インスタンスの設定を確認し、IAM権限の無いリソースを識別します。

説明:

マイクロサービスアーキテクチャ内で、EC2インスタンス上で稼働しているアプリケーションは、その他AWSサービス(S3バケット、Lambda、DynamoDBなど)上で稼働しているリソースにアクセスする必要があります。これを有効化するには、AWS認証情報を作成してインスタンスに分配するか(将来的にはそれらを変更したり更新する必要があります)、IAM権限を用いたAPI要求によって権限を与える必要があります。

推奨:

EC2インスタンスのIAM権限を作成し、その権限を与えるアクションを行います。

必要な権限:

"ec2:DescribeInstances"

8. Auto Scalingグループに所属していないEC2インスタンス(優先度:情報)

ベースライン:

Auto Scalingグループに関連付けられていないElastic Compute Cloud (EC2)インスタンスを確認します。

説明:

Auto Scalingは需要によってコンピューターリソースを拡大・縮小するのに役立ちます。Auto ScalingグループというEC2インスタンスのグループを作成して、希望する容量の入力し、条件を割り当てます。そうすることで、アプリケーションの要求を処理するのに最適なEC2インスタンスの数が確保されます。

推奨:

Auto ScalingグループとしてEC2インスタンスを構成してください。

必要な権限:

"ec2:DescribeInstances" "autoscaling:DescribeAutoScalingGroups"

9. VPC内で起動していないEC2インスタンス(優先度:中)

ベースライン:

EC2クラシックプラットフォームで起動しているElastic Compute Cloud (EC2)インスタンスを確認します。

説明:

Amazon EC2ネットワークはEC2クラシックとEC2 VPCという2つのプラットフォームに分類されています。クラシックプラットフォーム内のインスタンスを起動すると、そのインスタンスは他のAWSテナントが共有するネットワークで起動されます。一方、VPCでインスタンスを起動すると、リソースは他のネットワークからロジカルに隔離されます。

推奨:

インスタンスをVPCに移行してください。

必要な権限:

"ec2:DescribeInstances"

10. EC2システムステータスチェックの失敗(優先度:高)

ベースライン:

システム到達チェックの失敗

説明:

システムステータスチェックはAmazon EC2で提供されていて自動的に行われます。これはEC2インスタンスをホストしているAWS物理インフラで行われている運用の信頼性を確認します。

推奨:

自動アクションを設定し、インスタンスを再起動してください。定期的にシステムチェックが失敗するインスタンスある場合は、そのインスタンスを置き換えるか、インスタンスタイプを変更してください。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeInstanceStatus"

11. EC2インスタンスのステータスチェックの失敗(優先度:高)

ベースライン:

インスタンス到達チェックの失敗

説明:

Amazon EC2自体にインスタンスステータスチェックという自動チェック機能がサポートされています。このチェックはアドレス解決プロトコル(ARP)を送信することで、インスタンスの死活確認を行います。

推奨:

OSやネットワーク設定をチェックすることでシステムログを取得し、インスタンス再起動といったトラブルシューティングや自動アクションを設定します。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeInstanceStatus"

12. EC2インスタンスのメンテナンススケジュール(優先度:中)

ベースライン:

Elastic Compute Cloud(EC2)インスタンスのメンテナンススケジュールイベントを確認します。

説明:

使用しているインスタンスでAWSがシステムメンテンナンスイベントをスケジューリングし、その物理ホストの定期的なメンテナンスタスクを実行する場合があります。

推奨:

監視しているEC2インスタンスをSite24x7のメンテナンスウィンドウに関連付けることで、アラートを抑制し、その間も監視を続けるように設定します。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeInstanceStatus"

13.使用していないAmazon EC2セキュリティグループ(優先度:低)

リソースレベルの説明:

使用していないEC2セキュリティグループでも追加課金が発生します。

ベースライン:

使用していないEC2セキュリティグループが存在するかを確認します。

説明:

使用していないAmazon EC2セキュリティグループをアカウントから削除し、追加課金の発生を防ぎます。

推奨:

インスタンスにアタッチされていないセキュリティグループを削除します。使用率の低いセキュリティグループを誤ってEC2インスタンスにアタッチしないようにし、外部からの攻撃から保護します。

14. EC2インスタンスがインスタンスメタデータサービスを使用していない。

ベースライン:

インスタンスがインスタンスメタデータサービスのv2を使用していないかどうかを確認します。

説明:

EC2 IMDSはインスタンスメタデータの値をクエリするのに使用されます。IMDSはローカルで全てのインスタンスにアタッチされていて、特有の"link local"のIPアドレスで稼働します。デフォルトではIMDSv1とIMDSv2の両方をインスタンスで使用できます。IMDSがv2にのみ制限されている場合、セキュリティがより強化されるため、IMDSv2を使用することが重要です。

推奨:

すべてのEC2インスタンスにIMDSv2を使用してネットワークの脆弱性を守ります。

15. 停止したEC2インスタンスの特定期間経過後の削除

ベースライン:

許可した日にち以上に停止されているEC2インスタンスがあるかを確認します。

説明:

EC2インスタンスを停止した時、ストレージの課金は引き続き発生します。しかしインスタンスを削除した場合には課金は停止します。加えて、EC2インスタンスが一定期間稼働していない場合、インスタンスがアクティブに維持されていない可能性があるため、リスクが高くなる可能性があります。

推奨:

一定期間停止しているEC2インスタンスがないかを確認します。

16. Amazon EC2 - 複数ENIのアタッチ(優先度:低)

ベースライン:

Amazon EC2インスタンスに複数Elastic Network Interfaces (ENI)がアタッチされているか確認します。

説明:

複数のENIデュアルホストインスタンスを引き起こし、複数のサブネットがインスタンスに割り当てられます。これにより、ネットワークセキュリティ問題が発生し、意図しないネットワークパスやアクセスを引き起こします。

推奨:

必要のないENIをインスタンスから取り除きます。

必要な権限:

  • "ec2:DescribeInstances"

17. Amazon EC2 - Para-virtual仮想化タイプインスタンス(優先度:中)

ベースライン:

Para-virtual仮想化タイプのEC2インスタンスが存在するか確認します。

説明:

Linux Amazon Machine Image (AMI)は、Para-virtual (PV)またはハードウェア仮想マシン (HVM)の2タイプのいずれかを使用します。PVとHVM AMIでは起動の方法が異なります。HVMタイプベースのインスタンスでは、PVベースと比べより高いパフォーマンスを持ちます。

推奨:

HVM仮想化タイプのインスタンスに変更します。

必要な権限:

  • "ec2:DescribeInstances"

Elastic Block Storage (EBS)

1. スナップショットのないEBSボリューム (優先度:高)

ベースライン:

スナップショットIDと関連付けられているAmazon Elastic Block Store (EBS)ボリューム設定を確認します。

説明:

EBSはEC2インスタンスの永続的なブロックレベルのストレージを提供します。スナップショットはEBSボリューム内に保存されているデータのある時点での追加バックアップです。冗長化において、これらスナップショットは複数のアベイラビリティゾーンにわたったS3バケットに保存されます。また障害時には、スナップショットは新規ボリュームに作成されたり、アベイラビリティゾーンまたは領域のような領域に移動します。

推奨:

EBSボリュームの週ごとのスナップショットの作成するようにします。

必要な権限:

"ec2:DescribeVolumes"、"ec2:DescribeSnapshots"

2. 最近のスナップショットのないEBSボリューム(優先度:中)

ベースライン:

過去30日の間に取得されているEBSスナップショットがない。

説明:

スナップショットはEBSボリュームのその時の状態を記録します。障害時、元のボリュームを複製したものがこれらスナップショットを用いて作成されます。

推奨:

EBSボリュームが変更される頻度に基づき、スナップショットを撮影するスケジュールを自動的に設定し、EBSデータの保護と回復を向上させます。

必要な権限:

"ec2:DescribeVolumes"、"ec2:DescribeSnapshots"

3. 停止しているEC2インスタンスに接続しているEBSボリューム(優先度:中)

ベースライン:

EBSが接続しているEC2インスタンスの状態を確認します。

説明:

インスタンスがどのような移行を行っても、それに伴ってEBSボリュームは永続的に持続し続けます。EBSは提供されたストレージ容量に基づいて支払いが発生します。IOPS(Only for Provisioned IOPS SSD (io1) Volumes)はストレージが解放されるまでです。

推奨:

EBSボリュームのスナップショットを作成し、ストレージを解放してください。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeVolumes"

4. 接続されていないEBSボリューム(優先度:中)

ベースライン:

関連付けられているインスタンスIDのEBSボリューム設定を確認します。

説明:

EBSボリュームはインスタンス終了したり、インスタンスからボリュームをアンマウントや解除したりしても、ボリュームは独立して保持できます。よく知られていることですが、接続されていないボリュームは提供されたストレージに基づいて、IOPSに対して課金が発生します。

推奨:

EBSボリュームをアクティブなインスタンスを関連付けて、ストレージボリュームを解放してください。

必要な権限:

"ec2:DescribeVolumes"

5. Amazon EBS:暗号化(優先度:高)

ベースライン:

EBSボリュームの設定を確認し、暗号化されていないボリュームがある場合は警告します。

説明:

EBSボリュームが暗号化されていて、それがEC2インスタンスに接続されている場合、ボリューム内の全てのデータが暗号化されます。また、ボリュームとインスタンス間で移行したデータは全て暗号化されます。

推奨:

重要なデータが保存されている場合、そのボリュームを暗号化してください。

6. Amazon EBS:AWS管理のCMKを用いた暗号化(優先度:高)

ベースライン:

EBSボリュームの設定を確認し、AWS管理のCMKを用いた暗号化が有効化されているボリュームを識別してください。

説明:

Amazon EBSの暗号化にはAWSキー管理サービスであるCMKを用います。CMKには、顧客管理のCMK、AWS管理のCMK、AWSが所有するCMKも3つのタイプがあります。顧客管理のCMKが一番柔軟に利用することができ、キー条件やIAM条件などの設定と維持を行うことができます。

推奨:

顧客管理のCMKを作成し、ボリュームを暗号化します。

Elastic Load Balancing(ELB)

1. 使われていないELB(優先度:高)

ベースライン:

監視しているクラシックロードバランサーの設定を確認し、バックエンドのインスタンスに登録されていないELBノードを特定します。

説明:

設定されているロードバランサーは削除しない限り課金が発生します。ロードバランサーに登録されていないバックエンドのインスタンスがある場合、それを効果的に利用できているとは言えません。

推奨:

インスタンスをロードバランサーに追加・登録するべきか、またはそれを削除するべきかを検討してください。

必要な権限:

"elasticloadbalancing:DescribeLoadBalancers"、"elasticloadbalancing:DescribeInstanceHealth"

2. アイドルなELB(優先度:高)

ベースライン:

監視しているクラシックなロードバランサーの使用率状況で、入力/出力要求数や目的インスタンスへのTCP接続数が過去48時間に100より低くアイドルとしてみなされているかを確認します。

説明:

ロードバランサーの稼働時間に応じてAWSで課金が発生します。ロードバランサーのルーティングでその要求数が100に満たない場合は、適切に使用できているとは言えません。

推奨:

ロードバランサーを使用していないアプリケーションを継続的に使用するか、削除するかを検討します。

必要な権限

"elasticloadbalancing:DescribeLoadBalancers"、"cloudwatch:GetMetricData"、"cloudwatch:GetMetricStatistics"、"cloudwatch:ListMetrics"

3. ロードバランサーの正常に機能しているインスタンス数の把握(優先度:中)

ベースライン:

ロードバランサーの"正常なホスト数"を確認し、しきい値を下回った際にそれを警告します。

説明:

ロードバランサーは全ての登録されているインスタンスの死活確認を行い、インスタンスが正常に機能しているかを確認します。しかし、この死活確認の設定が制限されている場合があり、正常なインスタンスでも異常とみなされることがあります。

推奨:

死活確認の設定を行い、そのしきい値やタイムアウトの最適化を行います。

必要な権限:

"elasticloadbalancing:DescribeLoadBalancers"、"elasticloadbalancing:DescribeInstanceHealth"

4. 複数のアベイラビリティゾーンで使用されていないELB(優先度:高)

ベースライン:

単一のアベイラビリティゾーンでのみ稼働しているロードバランサーを確認します。

説明:

単一のアベイラビリティゾーンで起動しているEC2インスタンスがある場合、そのデータセンターで障害が発生すると、その中の全てのインスタンスが利用できなくなる可能性があります。同じ領域の異なるアベイラビリティゾーンに、複数EC2インスタンスを配置することで、その障害発生部分を取り除くことができます。

推奨:

復旧力と障害耐性を高めるには、異なるアベイラビリティゾーンに接続されているロードバランサーにEC2インスタンスを接続してください。

必要な権限:

"elasticloadbalancing:DescribeLoadBalancers"

5. ELB:クロスゾーンロードバランス(優先度:高)

ベースライン:

ELBのクロスゾーンロードバランスが無効となっているかを確認します。

説明:

クラシックタイプのELBではデフォルトで、クロスゾーンロードバランスが有効化されていません。一般的に、ロードバランサーは設定しているアベイラビリティゾーンへの流入トラフィックを均等に分配しています。しかし、各ゾーンで稼働しているEC2インスタンスの数が均等でない場合、ロードの不一致が引き起こされる可能性があります。このような状況はヘルスチェックの失敗やメンテナンスの除去があった際の、手動での登録解除やデタッチによって簡単に引き起こされてしまいます。クロスゾーンロードバランスを有効化すれば、ELBがアプリケーションのトラフィックを登録されているインスタンスでのみ均等に分配します。

推奨:

クラシックタイプのELBのクロスゾーンバランスを有効にします。

必要な権限:

"elasticloadbalancing:DescribeLoadBalancers"

6. ELB:アクセスログ(優先度:中)

ベースライン:

ロードバランサーの設定で、ELBのアクセスログが有効となっているかを確認します。

説明:

アクセスログはロードバランサーが受け取った各要求の詳細な情報を取得して保存します。IPアドレス、レイテンシー、要求パス、バックエンドのサーバー応答といった情報が設定したAmazon S3バケットに保存されます。AWSアカウントのユーザーはこれらをトラフィックパターンの解析やアドバンス型ELBにあった障害のトラブルシュートに用いることができます。

推奨:

デフォルトで、アクセスログ機能は無効となっているため、使用しているELBでこの機能を有効化してください。

必要な権限:

"elasticloadbalancing:DescribeLoadBalancers"

7. ELB:接続ドレイン(優先度:高)

ベースライン:

監視しているELBを確認し、接続ドレインが無効となっているELBノードを特定します。

説明:

死活確認の失敗によって削除または登録解除されたEC2インスタンスがある場合、ELBは新規要求のルーティングを停止し、インスタンスへの接続を閉鎖します。接続ドレインを有効にすると、ELBはセッションが完了するまでその接続を試行し続けます。

推奨:

ロードバランサーの接続ドレインを有効化してください。

必要な権限:

"elasticloadbalancing:DescribeLoadBalancers"

8. ELB:リスナーセキュリティ(優先度:高)

ベースライン:

クラシックまたはアプリケーションタイプのELBの設定を確認し、安全なプロトコル(HTTPSまたはSSL)を用いているリスナーではない場合に警告します。

説明:

リスナーは接続要求を確認するプロセスです。ELBにHTTPSの設定されていないリスナーがいる場合に、そのような許可されていない関係者はクライアントとロードバランサー間のネットワークで送信されたデータのみ閲覧することができます。

推奨:

ロードバランサーにSSL証明書を配置し、HTTPリスナーのSSL/TLSサポートを有効にしてください。

Identify Access Management (IAM)

1. IAMユーザーのアクセスキー(優先度:中)

ベースライン:

アクセスキーの作成日時を確認し、90日より古いキーのIAMユーザーを特定します。

説明:

アクセスキーはアクセスキーIDとシークレットアクセスキーで構成されていて、AWS APIエンドポイントへの要求にプログラムで署名することに用いられます。

推奨:

セキュリティのベストプラクティスとして、定期的にアクセスキーを変更を行うことでアクセスキーが有効である期間を短くするようにします。

必要な権限:

"iam:ListUsers"、"iam:ListAccessKeys"

2. IAMグループ:インラインポリシー(優先度:情報)

ベースライン:

インラインポリシーのIAMグループを確認します。

説明:

IAMポリシーはIAMのユーザー、権限、グループに割り当てることができるJSONポリシーのドキュメントです。管理ポリシーを用いる利点として、それらの維持や新規AWSサービスの更新、APIの導入が更新できることです。

推奨:

AWS管理ポリシーを用いて、IAMグループへの許可を付与します。

必要な権限:

"iam:ListGroupPolicies"

3. 管理者権限をもつIAMユーザー(優先度:高)

ベースライン:

アカウント内の各IAMユーザーを確認し、管理者アクセスが割り当てられている管理ポリシーのあるユーザーを特定します。

説明:

管理者のアクセスポリシーは表示、読み込み、書き込み、許可管理といった全ての4つのアクセスレベルの許可が付与されています。管理者のアクセスを制限しないと、リソースの孤立やセキュリティの問題、AWS請求書の予期しない急増に簡単につながってしまいます。

推奨:

IAMユーザーにアクセス権限を付与する場合は最小限の権限を付与するようにしてください。例としては、タスクを行うのに必要な権限のみを付与するなどが考えられます。

必要な権限:

"iam:ListEntitiesForPolicy"

4. 全ての管理者権限をもつIAMロール(優先度:高)

ベースライン:

アカウントの各IAMロールを確認し、管理者アクセス権限が割り当てられているロールを特定します。

説明:

管理者のアクセスポリシーによって、ユーザーがコンテンツの読み込み、作成、削除、修正、許可権限の修正を行うことができます。

推奨:

このポリシーはアカウントの管理者にだけ割り当ててください。そして、リソースを安全に保つために、IAMポリシーに他のロールが割り当てられていないかを定期的に確認してください。

必要な権限:

"iam:ListAttachedRolePolicies"

5. 必要のないアクセスキー(優先度:高)

ベースライン:

2つのアクセスキーをもつIAMユーザーを確認します。

説明:

IAMユーザーはアクセスキーを用いて、AWSサービスAPIへの安全なRESTやHTTP要求を行います。

推奨:

ベストプラクティスとして、アクティブなキーを1つのみにするようにしてください。

必要な権限:

"iam:ListUsers"、"iam:ListAccessKeys"

6. 使われていないIAMユーザー(優先度:中)

ベースライン:

プログラムアクセスのないIAMユーザーのコンソールパスワードの使用期間を確認し、それが使われていない場合に警告します。

説明:

コンソールパスワードはIAMユーザーがAWS管理コンソールにサインインするために使うものです。使われていないIAMユーザーを削除するかパスワードを無効化することで、AWSアカウントのセキュリティをより高めることができます。

推奨:

使われていないIAMユーザーを削除してください。

必要な権限:

"iam:ListUsers"、"iam:GetLoginProfile"

7. 無効なIAMユーザー(優先度:中)

ベースライン:

プログラムアクセスの無いIAMユーザーのコンソールパスワードの使用期間を確認し、過去90日間でそれが使用されていない場合に警告します。

説明:

コンソールパスワードはIAMユーザーがAWS管理コンソールにサインインするために使うものです。使われていないIAMユーザーを削除するかパスワードを無効化することで、AWSアカウントのセキュリティをより高めることができます。

推奨:

無効なIAMユーザーを削除するか、サインインの認証情報を無効化してください。

必要な権限:

"iam:ListUsers"、"iam:GetLoginProfile"

8. MFA:AWS rootアカウント(優先度:高)

ベースライン:

多要素認証がルートアカウントで有効化となっているかどうかを確認します。

説明:

すでに知っている方も多いと思いますが、ルートアカウントを持っている人は、そのアカウント内の全てのAWSサービスやリソースにアクセスすることができます。2段階あるいは多要素認証を追加し、パスワードや時間で同期されるワンタイムパスワードを用いることで、重要なAWSリソースを保護することができます。

推奨:

トークンベースの多要素認証を用いて、AWSアカウントを保護します。

9. IAMグループ(優先度:高)

ベースライン:

AWSアカウントにIAMグループが作成されているかどうかを確認します。

説明:

IAMユーザーを作成することで、チームメンバーがAWSコンソールへサインインできたり、AWSサービスへのプログラムを用いた要求を行えるようになります。ポリシーをユーザーに直接追加したり、手動で権限を編集する代わりに、IAMグループ(複数のIAMユーザー)を作成して簡単に管理を行うことができます。

推奨:

異なる権限を持った複数のIAMグループを作成してください。

必要な権限:

iam:ListGroups"

10. IAMパスワードポリシー(優先度:高)

ベースライン:

パスワードポリシーがAWSアカウントに設定されているかを確認します。

説明:

複雑なパスワード要求(長さや文字のタイプ)や定期的にIAMユーザーのパスワードを変更するといったパスワードポリシーを作成します。

推奨:

パスワードポリシーを設定し、より複雑なパスワードを作成するようにします。

必要な権限:

"iam:GetAccountPasswordPolicy"

11. IAMユーザー:サポートアクセス(優先度:中)

ベースライン:

"AWSSupportAccess"というIAMポリシーが各IAMロールに追加されたIAMポリシーのリストを確認します。

説明:

管理ポリシーの"AWSSupportAccess"はIAMユーザーにアクセス権を付与し、AWSサポートセンターを管理します。

推奨:

許可のあるAWSアカウントのIAMユーザーが1つ以上作成されていてサポートケースを管理していることを確認します。

必要な権限:

"iam:ListEntitiesForPolicy"

12. AWSルートアカウントユーザー:アクセスキー(優先度:高)

ベースライン:

有効なアクセスキーのAWSアカウントルートユーザーを確認します。

説明:

アクセスキーはREST APIやHTTP要求を安全に行うために用いられています。このキーを用いることで、AWSルートアカウントのユーザーは請求に関するデータなどといった全てのリソースに制限なくアクセスできます。

推奨:

ルートユーザーのアクセスキーを削除するか、無効にしてください。

13. IAMパスワードポリシーに少なくとも1つの大文字、小文字、記号、数字が必須であるかを確認 (優先度:中)

ベースライン:

IAMパスワードポリシーに少なくとも1つの大文字、小文字、記号、数字が必須であるかを確認します。

説明:

管理者がカスタムパスワードポリシーを設定していない場合、IAMユーザーパスワードに少なくとも1つの大文字、小文字、記号、数字を含ませる必要があります。

推奨:

強固なIAMパスワードの作成と頻繁にそれを変更することでセキュリティを維持します。

14. グループやロールにのみIAMポリシーがアタッチされていることを確認 (優先度:低)

ベースライン:

IAMポリシーがグループやロールにのみアタッチされているかを確認します。

説明:

IAMユーザーレベルではなくIAMグループレベルの権限を定義することでAWSリソースへのユーザーベースアクセスを効率的に管理します。各ユーザーでポリシーを定義したりグループ間で既存ユーザーで切り替える必要がなくなるため、情報の重複を防ぎ、労力を削減できます。

推奨:

既存のIAMポリシーがグループやロールにのみアタッチされていて全ユーザーに効率的に権限を割り当てているかを確認します。

15. IAMパスワードポリシーに少なくとも1つの大文字、小文字、記号、数字が必須であるかを確認 (優先度:中)

リソースレベルの説明:

IAMパスワードポリシーに少なくとも1つの大文字、小文字、記号、数字が必須であるかを確認します。

ベースライン:

IAMパスワードポリシーに少なくとも1つの大文字、小文字、記号、数字が必須であるかを確認します。

説明:

管理者がカスタムパスワードポリシーを設定していない場合、IAMユーザーパスワードに少なくとも1つの大文字、小文字、記号、数字を含ませる必要があります。

推奨:

強固なIAMパスワードの作成と頻繁にそれを変更することでセキュリティを維持します。

16. グループやロールにのみIAMポリシーがアタッチされていることを確認 (優先度:低)

リソースレベルの説明:

AMポリシーがグループやロールにのみアタッチされているかを確認します。

ベースライン:

AMポリシーがグループやロールにのみアタッチされているかを確認します。

説明:

IAMユーザーレベルではなくIAMグループレベルの権限を定義することでAWSリソースへのユーザーベースアクセスを効率的に管理します。各ユーザーでポリシーを定義したりグループ間で既存ユーザーで切り替える必要がなくなるため、情報の重複を防ぎ、労力を削減できます。

推奨:

既存のIAMポリシーがグループやロールにのみアタッチされていて全ユーザーに効率的に権限を割り当てているかを確認します。

Simple Storage Service(S3)

1. パブリックS3バケット(優先度:中)

ベースライン:

監視しているS3バケットのバケットやユーザーポリシー(アクセスコントロールリストではありません)を確認し、パブリックにアクセスできるバケットを特定します。

説明:

パブリックにアクセスできるとは、保存、アップロード、削除されたリソースをリストにし、それを世界中の人が読み込めることを意味します。S3の場合、要求タイプや要求量、取得されたデータ量に応じて課金が発生します。

推奨:

特定のバケットに本当にパブリックアクセスが必要かを検討します。もし必要でなければ、アクセスを制限してリソースをプライベートにしてください。

必要な権限:

"s3:ListBucket"、"s3:GetBucketPolicyStatus"

2. Amazon S3:デフォルトの暗号化(優先度:中)

ベースライン:

Amazon S3バケットでデフォルトのS3暗号化が無効化されていることを確認します。

説明:

サーバー側の暗号化または保管時の暗号化において、リソースレベルでデータをAmazon S3が暗号化します。

推奨:

Amazon S3管理キー(SSE-S3)かAWS KMS管理キー(SSE-KMS)を用いて、サーバー側の暗号化を行ってください。

必要な権限:

s3:GetEncryptionConfiguration"、"s3:ListBucket"

3. Amazon S3:アクセスログ(優先度:中)

ベースライン:

Amazon S3バケットでサーバアクセスログが無効となっているかを確認します。

説明:

デフォルトでAmazon S3はサーバーアクセスログを収集しません。ログを有効化することで、アクセス者、バケット名、要求時間、応答ステータスなどといった選択された目的バケットのアクセス要求についての情報を保存できます。サーバーアクセスログの課金は発生しません。ただし、通常の保存課金は発生します。

推奨:

S3バケットのサーバーアクセスログを有効にし、セキュリティとアクセスの管理を行いやすくします。

必要な権限:

s3:GetBucketLogging"、"s3:ListBucket"

4. Amazon S3:MFA削除(優先度:中)

ベースライン:

Amazon S3バケットの設定を確認し、MFA削除が無効となっているバケットを特定します。

説明:

MFA削除はバージョンの変更や削除操作をバケットに行う際に、追加で認証を行うようにします。

推奨:

MFA削除を有効化することで、セキュリティ層をS3バケットに追加します。

必要な権限

"s3:ListBucket"、"s3:GetBucketVersioning"

5. Amazon S3:バケットポリシーでSSLを用いるリクエストのみを許可(優先度:中)

ベースライン:

S3バケットポリシーでSSLでのリクエストのみを許可しているかどうかを確認します。

説明:

S3バケットでSSL接続を行うように設定する必要があります。行っていない場合、ユーザー、アプリケーション、バケット間の接続が、盗聴や中間者(MITM)攻撃に脆弱になります。

推奨:

機密データを処理するときは、SSLを利用していないHTTPリクエストはすべて拒否し、SSL限定アクセスを実施してください。

6. Amazon S3:S3バケットでクロスリージョンレプリケーションを有効にする(優先度:中)

ベースライン:

S3バケットでクロスリージョンレプリケーションが有効となっているかどうかを確認します。

説明:

クロスリージョンレプリケーションを有効化すると、異なるAWSリージョンのS3バケットでデータの複製やオブジェクトのコピーを自動で行えます。障害時の復旧計画やパフォーマンスの最適化などにより、アプリケーションの可用性や信頼性を向上させます。

推奨:

すべてのS3バケットでクロスリージョンレプリケーションを有効化します。

7. S3バケット CloudTrailログがパブリックにアクセスできないことを確認 (優先度:高)

ベースライン:

S3バケットCloudTrailログがパブリックにアクセス可能かどうかを確認します。

説明:

Amazon S3バケットとオブジェクトはデフォルトでプライベート設定となっており、バケットを作成し、それが含むオブジェクトを作成したユーザーのみがアクセスできます。CloudTrailログにはアカウントのAPIアクティビティの詳細イベントが含まれているかもしれません。S3バケットのCloudTrailログに付与されている権限が安全でない場合、ログデータに悪意のあるユーザーがアクセスしてしまう可能性があり、未認証のアクセスのリスクが増加します。

推奨:

CloudTrailログに関連付けられているS3バケットがパブリックにアクセスできないことを確認し、ログデータを保護します。

8. バケットポリシー内のその他アカウントに付与されているS3権限が制限されているかを確認 (優先度:高)

ベースライン:

バケットポリシーで他のアカウントに付与されているAmazon S3権限が制限されているかどうかを確認します。

説明:

共有バケットを使用している場合は、他のアカウントの最小限の認証アクセスを付与します。他アカウントでの主要な拒否アクションは次のとおりです。

  • s3:DeleteBucketPolicy
  • s3:PutBucketAcl
  • s3:PutBucketPolicy
  • s3:PutEncryptionConfiguration
  • s3:PutObjectAcl

推奨:

エラーや悪意のある攻撃の影響を減らすために、共有Amazon S3バケットを使用している間は、他のAWSアカウントのプリンシパルがS3のリソースに対して拒否されたアクションを実行しないでください。

9. バケットポリシー内のその他アカウントに付与されているS3権限が制限されているかを確認 (優先度:高)

リソースレベルの説明:

バケットポリシーで他のアカウントに付与されているAmazon S3権限が制限されているかどうかを確認します。

ベースライン:

バケットポリシーで他のアカウントに付与されているAmazon S3権限が制限されているかどうかを確認します。

説明:

共有バケットを使用している場合は、他のアカウントの最小限の認証アクセスを付与します。他アカウントでの主要な拒否アクションは次のとおりです。

  • s3:DeleteBucketPolicy
  • s3:PutBucketAcl
  • s3:PutBucketPolicy
  • s3:PutEncryptionConfiguration
  • s3:PutObjectAcl

推奨:

エラーや悪意のある攻撃の影響を減らすために、共有Amazon S3バケットを使用している間は、他のAWSアカウントのプリンシパルがS3のリソースに対して拒否されたアクションを実行しないでください。

Relational Database Servic(RDS)

1. RDSセキュリティグループ:制限されていないインバウンドアクセス(優先度:中)

ベースライン:

CIDR表記0.0.0.0/0のIPをアドレスを持つインバウンドルールのRDS VPCセキュリティグループを確認します。

説明:

VPCセキュリティグループはDBインスタンスへのトラフィックアクセスを制御します。特定のIPレンジ、ポート、EC2セキュリティグループからのアクセスを許可するセキュリティグループのルールを追加します。

推奨:

特定のIPアドレスのアクセスを制限し、悪意のあるアクセスを防止します。

必要な権限

"rds:DescribeDBInstances"、"rds:DescribeDBSecurityGroups"

2. パブリックRDSインスタンス(優先度:高)

ベースライン:

アクセス可能な機能を確認し、パブリックにアクセスできるDBインスタンスを特定します。

説明:

パブリックに解決可能なDNSを持つインターネットに接続されたDBインスタンスは予期しないデータ転送などの恐れが発生しやすくなります。

推奨:

パブリックにアクセス可能のフラッグを無効にします。

必要な権限:

"rds:DescribeDBInstances"

3. RDSの自動バックアップ(優先度:高)

ベースライン:

設定を確認し、自動バックアップが無効となっているRDS DBインスタンスを特定します。

説明:

Amazonは一定期間で全てのDBインスタンスのストレージのバックアップを行い、ある日数の間、そのバックアップを保存してその時点での復旧に役立てます。

推奨:

スムーズなデータ復元のためにRDSインスタンスの自動バックアップを有効にします。

必要な権限:

"rds:DescribeDBInstances"

4. Amazon RDS:暗号化(優先度:高)

ベースライン:

暗号化が有効になっていないAmazon RDS DBインスタンスを確認します。

説明:

ストレージ、自動バックアップ、リードレプリカ、スナップショットといったRDSの保存データを暗号化し、保護のレイヤーを強化します。

推奨:

RDS DBインスタンス作成時に暗号化を有効化にするか、DBスナップショットのコピーを暗号化して、暗号化したスナップショットからインスタンスを復元してください。

必要な権限:

"rds:DescribeDBInstances"

5. RDS:複数のアベイラビリティゾーン(優先度:中)

ベースライン:

単一のアベイラビリティゾーンにDBインスタンスが配置されているかを確認します。

説明:

複数のアベイラビリティゾーンの配置で、Amazonは異なるアベイラビリティゾーンを提供し、データを同期して複製します。障害やメンテナンスの際は、Amazon RDSは手動作業不要で、自動的にフェイルオーバーを行います。

推奨:

複数のアベイラビリティゾーンにDBインスタンスを配置するか、既存のDBインスタンスを複数のアベイラビリティゾーンに配置します。

必要な権限:

"rds:DescribeDBInstances"

6. Amazon RDS:使用率上昇(優先度:高)

ベースライン:

Amazon RDSのCloudWatchのパフォーマンスカウンターを確認し、使用率の高くなっているDBインスタンスを特定します。

説明:

RDSインスタンスが次の条件に該当すると、使用率上昇と判定します。

  • 最新7日間のうちの最低4日で、1日の平均CPU使用率が90%を超えている場合。
  • 最新7日間のうちの最低4日で、ディスク消費量が85%を超えている場合。

推奨:

マスターデータベースをスケールアップするか、リードレプリカを使用してアプリケーションの要求に対応します。

7. Amazon RDS:アイドルDBインスタンス(優先度:高)

ベースライン:

Amazon RDSインスタンスのCloudWatchパフォーマンスカウンターを確認し、十分に利用されていないように見えるDBインスタンスを特定します。

説明:

RDSインスタンスは次の条件に該当するとアイドルとみなされます。

  • 最新7日間のうちの最低4日で、1日の平均CPU使用率が20%に満たない場合。
  • 最新7日間のうちの最低4日で、1日の平均データベース接続数が100回に満たない場合。

推奨:

Amazon RDSの場合、DBインスタンス稼働していた時間に応じて、コンピューター容量を支払います。DBインスタンスが少ない接続数受け取っていたり、少ないCPU量を消費している場合、スナップショットを作成して、インスタンスを削除してコストを削減します。

8. Amazon RDS:RDSスナップショットのパブリックアクセスを禁止(優先度:高)

ベースライン:

AWS RDSスナップショットがパブリックにアクセスできるかどうかを確認します。

説明:

RDSクラスタースナップショットは、単一のデータベースだけではなく、データベースクラスター全体のバックアップを取得します。機密データの漏洩や不正使用を防ぐために、スナップショットを非公開にして他のAWSユーザーが新しいボリュームにアクセス、コピー、作成できないようにしてください。

推奨:

データ漏洩を防ぐために、AWS RDSスナップショットが全てのAWSアカウントとユーザーに共有されているなど、パブリックアクセスができる状態にはなっていないことを確認してください。

9. Amazon RDS: RDSクラスターの削除保護を有効化(優先度:中)

ベースライン:

Amazon RDSクラスターで削除保護が有効となっているかを確認します。

説明:

Amazon RDSクラスターの削除保護が有効化されていると、クラスターが突然削除されることがなくなり、データ喪失を防止できます。Amazon Auroraデータベースを含めた全てのRDSデータベースエンジンでこの設定を有効にできます。

推奨:

全てのデータベースエンジンでRDSクラスター削除保護設定を有効にしてください。

Simple Notification Service (SNS)

1. SNS:トピック(全員)へのパブリックメッセージ(優先度:中)

ベースライン:

全員がパブリックに許可されているトピックで、Amazon SNSトピックのアクセスポリシーを確認します。

説明:

全てのAWSユーザーやリソースにパブリックメッセージを許可することは、予期しないSNSの課金額増加につながります。

推奨:

トピックオーナーや特定のユーザーのみにパブリックメッセージを許可します。

必要な権限:

sns:GetTopicAttributes"、"sns:ListTopics"

2. SNS:トピックへのサブスクリプション(全員)(優先度:中)

ベースライン:

匿名のサブスクリプションが許可されているトピックで、Amazon SNSトピックのアクセスポリシーを確認します。

説明:

全員にサブスクライブを許可することは、メッセージの機密性を損なうことにつながります。例えば、権限のないのエンティティがトピックにサブスクライブし、公開されているメッセージを受け取ることができます。

推奨:

トピックオーナーや特定のエンドポイントへのサブスクリプションを制限し、トピックのセキュリティを保ちます。

必要な権限:

sns:GetTopicAttributes"、"sns:ListTopics"

3. Amazon SNS:サブスクライバーとしてのHTTPエンドポイント(優先度:中)

ベースライン:

サブスクライバーとしてのHTTPエンドポイントのSNSトピックを確認します。

説明:

Amazon Simple Notification Service (SNS)は公開者とサブスクライバーの観点から働く非同期なメッセージ配信サービスです。HTTP/HTTPSエンドポイントをトピックにサブスクライブし、メッセージを公開する場合、SNSはメッセージのコンテンツを選択したエンドポイントへPOST要求を送信します。しかし、HTTP経由のメッセージ送信は盗聴に対して脆弱である可能性があります。

推奨:

URLを購読する場合は、HTTPSやHTTPを選択します。

DynamoDB

1. DynamoDB:オートスケール(優先度:高)

ベースライン:

手動で管理されているテーブルスループットのあるAmazon DynamoDBテーブルを確認します。

説明:

Amazon DynamoDBにテーブルを作成する場合、読み込みと書き込みの容量条件を入力します。適切な容量を推定する、またはプロビジョニングされた容量を手動で設定することは、周期的または予測不可能なDBワークロードを処理する場合に長期的には運用負担になる可能性があります。

推奨:

Dynamo DBのオートスケーリングを用いてトラフィックパターンを自動化することで、応答のテーブルスループットの容量を動的に調整します。

2. DynamoDB:オンデマンドのバックアップや保存(優先度:高)

ベースライン:

過去30日間でAmazon DynamoDBテーブルのバックアップがないことを確認します。

説明:

データのアーカイブは長期的なデータの保持と規制コンプライアンス要件に重要です。Amazon DynamoDBは秒単位でテーブルの全バックアップを作成し、アプリケーションパフォーマンスや可用性への衝撃なくデータを保存できます。

推奨:

バックアップを実行し、AWS管理コンソールやDynamo APIで用いられているDymanoDBテーブルの操作を保存します。

3. DynamoDB:サーバー側の暗号化(優先度:高)

ベースライン:

リセット時の暗号化が無効となっているAmazon DynamoDBテーブルを確認します。

説明:

テーブル、ローカルセカンダリインデックス、グローバルセカンダリインデックスといったデータのリセット時の暗号化をAES-256やAWSキー管理サービス(KMS)を用いて有効にし、重要な情報を保護し、コンプライアンス要件をアーカイブします。

推奨:

既存のテーブルではリセット時の暗号化を有効にできません。AWS管理コンソールやAPIを用いて新しく暗号化テーブルを作成します。

4. DynamoDB:使われていないテーブル(優先度:中)

ベースライン:

Amazon DynamoDBテーブルが稼働しているかを確認し、総アイテム数がない場合に警告します。

説明:

DynamoDBの場合、手動でプロビジョニングされるスループット、またはAmazonが目的の読み込みおよび書き込み容量を維持するためにプロビジョニングするリソースに対して支払いが発生します。そのため、設定されている全てのテーブルに課金が発生し続けます。データのないテーブルのある場合、それは効率的に用いられているとは言えません。

推奨:

使われていないテーブルを削除することを検討します。

5. Amazon DynamoDB - ポイントインタイムリカバリー(優先度:中)

Baseline:

Amazon DynamoDBテーブルでポイントインタイムリカバリー(PITR)が有効化されているか確認します。

説明:

バックアップはセキュリティインシデントの早期回復に役立ち、システムの回復を強化します。DynamoDB PITRはテーブルのバックアップを自動化し、意図しない削除や書き込み操作からの回復を早めます。PITRが有効化されているDynamoDBテーブルは、直近35日までリストア可能です。

推奨:

DynamoDBテーブルのPITRを有効化します。

必要な権限:

  • "dynamodb:DescribeContinuousBackups"

Simple Queue Service (SQS)

1. SQS:サーバー側暗号化 (SSE)(優先度:中)

ベースライン:

SQSのクエリー設定を確認し、サーバー側の暗号化が無効となっている場合に警告します。

説明:

サーバー側の暗号化はメッセージ本体を暗号化し、分配されたアプリケーションコンポーネントやマイクロサービス間の重要なデータのやり取りに信頼性を持たせます。

推奨:

既存のキューのサーバー側の暗号化を有効化するか、キュー作成の際にこの機能を有効化してください。

2. SQS - AWS管理CMKを用いたSSE(優先度:中)

ベースライン:

サーバー側の暗号化に用いたデフォルトのAWS管理CMKにあるSQSキューを確認します。

説明:

サーバー側の暗号化を有効にする場合、AWSキー管理サービス(KMS)より提供されているキーを選択し、標準およびFIF0キューに保存されているメッセージを暗号化します。デフォルトのAWS管理顧客マスターキー(CMK)を用いるか、アクセス制御、変更、削除をより柔軟に行える自身のキーを作成し管理してください。

推奨:

自身の顧客マスターキー(CMK)を作成します。(メモ:顧客管理のCMKは月額料金がかかります。)

3. SQSキューアクセスポリシー:ワイルドカード使用率(優先度:高)

ベースライン:

SQSキューアクセスポリシーの主要要素内のワイルドカード(*)使用率を確認します。

説明:

ポリシーの主要要素で、どのAWSアカウント、サービス、ユーザーがキューへのアクセス権を持つかを入力します。主要要素のワイルドカード(*)バリューはキューが全てのAWSアカウントを開くことを意味します。SQSへのオープンアクセスは認証されていないメッセージの配信を引き起こす可能性があります。

推奨:

AWSアカウントIDに基づいたAmazonSQSアクセスを許可します。

4. SQS:デッドレターキューなし(優先度:中)

ベースライン:

設定したデッドレターキューのない標準またはFIF0キューを確認します。

説明:

デッドレターキューは顧客がメッセージの送信に失敗した際に送られる未配信のメッセージです。ユーザーはこの保留キューを使用して、問題のあるメッセージの切り分けてトラブルシューティングをし、失敗した原因を把握できます。

推奨:

デッドレターキューは既存のキューに設定することができません。新しくSQSキューを設定し、第2のキューとしてデッドレターキューを作成してください。

5. SQS:停止したキュー (優先度:中)

ベースライン:

SQS CloudWatchメトリクスを確認し、表示されたメッセージの概数が3回連続のポーリングで100を超えた場合に警告します。

説明:

Amazon SQSはホストキュー全体をを管理するサービスを提供していて、分配されたアプリケーションコンポーネントを連携させるのに役立ちます。"表示されたメッセージの概数"はアクティブなキューのサイズやバックログについての分析に利用できます。メトリクスが増加し続けている場合、それはキューのスタックや低下を表しています。

推奨:

ユーザーのEC2インスタンス、Lambda関数、ECSインスタンスの使用率を確認し、問題の特定とトラブルシューティングを行います。

Simple Email Service (SES)

1. Amazon SES:ステータス確認(優先度:情報)

ベースライン:

保留中の確認ステータスでメールアドレスやドメインの両方のAmazon SES情報を確認します。

説明:

Amazon SESでは、メールを送信に使用するメールアドレスやドメインを用います。開始前に、送信元、送信者、リターンパスアドレスといった各情報を入力する必要があります。Amazon SES sandboxを使用する場合は、受信者のアドレスも入力する必要があります。

推奨:

確認過程の問題を直ちに解決します。

2. Amazon SES - DKIM署名(優先度:情報)

ベースライン:

SES情報(ドメインとメールアドレス)の設定でDKIM署名が使用されていないことを確認します。

説明:

Domain Keys Identified Mail (DKIM)はメールの認証プロトコルで、送信者はメールメッセージの特定の表現に暗号で署名できます。受信メールサーバーはメッセージ転送の際に第三者から修正を受けていないかを確認するのにこの署名を使用します。

推奨:

Amazon SESの簡単なDKIMを使用して送信されたメール全てに自動的にDKIMが追加されるようにするか、手動で自身のDKIM署名を追加してください。

Kinesis

1. Amazon Kinesis Streams - AWS管理CMKを用いたSSE(優先度:高)

ベースライン:

AWS管理のCMKによってサーバー側の暗号化(SSE)が有効化されているAmazon Kinesis Data Streamsを確認します。

説明:

CMK (顧客マスターキー)はデータの暗号化や複合化に用いられる主要なリソースです。顧客管理のCMK、AWS管理のCMK、AWS自身のCMKの3タイプがあり、AWS管理のCMKを用いてAmazon Kinesis Streamsでデータの暗号化を行うか、あるいは自身の顧客管理のCMKを作成します。顧客管理のCMKはより制御しやすく柔軟に使用することができます。

推奨:

顧客管理のCMKを用いて、Kinesis Data Streamサービス内にあるデータを暗号化します。

2. Amazon Kinesis Streams:サーバー側の暗号化(SSE)(優先度:高)

ベースライン:

サーバー側の暗号化(SSE)が無効となっているAmazon Kinesis Data Streamsを確認します。

説明:

保管時の暗号化はデータ管理において重要な役割を果たし、アプリケーションが厳格なコンプライアンスや規制要件を満たすのに役立てられます。サーバー側の暗号化を有効にすることで、データの入力によって自動的に暗号化され、ストリームサービスを出ると複合化されます。

推奨:

Amazon Key Management(KMS)のキーを使用して、ライブストリームのサーバー側の暗号化を有効にします。

Web Application Firewall (WAF)

1. AWS WAF:割り当てられていないWeb ACL(優先度:高)

ベースライン:

WAFの設定を確認し、割り当てられていないWeb ACLを特定します。

説明:

AWS WAFの場合、CloudFrontディストリビューションやアプリケーションロードバランサーといったリソースに関連付けられているかに関係なく、Webアクセスコントロールリストの数やWeb ACLごとに追加されているルールの数に基づいて計測されます。

推奨:

使われていないWeb ACLを削除することを検討します。(メモ:削除の前に、ルールの削除し、ACLと全てのCloudFrontディストリビューションやアプリケーションロードバランサーとの関連付けをやめる必要があります。)

RedShift

1. Amazon Redshift:十分に使用されていないクラスター(優先度:高)

ベースライン:

Amazon Redshiftのパフォーマンスカウンターを確認し、十分に活用されていないクラスターを特定してください。

説明:

稼働しているAmazon Redshiftクラスターのパフォーマンスカウンターを確認して、次の条件が適用されている場合はアイドルとマークされます。

  • データベースの平均接続数が過去7日間で10より低い場合。
  • クラスター全体のCPU使用率が過去7日間で5%より低い場合。
  • クラスターにわたった読み込みと書き込み操作数の平均が過去7日間である値より低い場合。

メモ:デフォルトのアラート条件はアドバンス設定から変更できます。

推奨:

Amazon Redshiftの場合、クラスター内のノードの種類と数に基づいて時間料金が発生します。クラスターの接続数が少ない場合やCPIの消費量が少ない場合、サイズを低くしたり削除することを検討します。(メモ:クラスターをシャットダウンする前に最新のスナップショットを取得してください。)

2. Amazon Redshift clusters:高いディスク使用率(優先度:高)

ベースライン:

Amazon Redshiftのパフォーマンスカウンターを確認し、ディスク使用率の高いデータウェアハウスクラスターを特定します。

説明:

クラスターのディスク使用領域のパーセンテージを確認し、過去7日間のうちの少なくとの4日で90%より高い値を示した場合は警告します。

推奨:

AWSコンソールやModifyCluster API経由でデータウェアハウスクラスター内のノード数を増やし、十分なデータストレージを確保します。

3. Amazon Redshiftパブリックなアクセス(優先度:高)

ベースライン:

Amazon Redshiftのネットワーク設定を確認し、バブリックにアクセスできるデータウェアハウスクラスターを特定します。

説明:

パブリックにアクセスできるクラスター(パブリックIP)は、インターネットから全てのマシンでアクセスすることができ、セキュリティリスクを高めます。

推奨:

VPC内からのクラスター接続に限定して制限します。

4. Amazon Redshift:データベース監査ログ(優先度:中)

ベースライン:

データウェアハウスクラスターにおけるAmazon Redshiftの設定を確認して、データベース監査ログが無効になっている場合は警告します。

説明:

監査ログが有効化されている場合、認証属性、接続、未接続、ユーザーアクティビティー、DBユーザー定義の変更などといった詳細な情報を取得しS3バケットにアップロードします。

推奨:

セキュリティの監査ログを有効にし、目的の問題をトラブルシューティングします。

5. Amazon Redshift - SSLを用いた接続(優先度:中)

ベースライン:

Amazon Redshiftのパラメーターグループを確認し、要求SSLパラメーターがfalseと設定されているクラスターを特定します。

説明:

デフォルトでクラスターデータベースはSSLを使用するかどうかにかかわらず、クライアント接続が可能です。しかし、クライアント間で暗号化されていない接続が行われ、データウェアハウスクラスターにセキュリティの脆弱性を及ぼします。

推奨:

カスタムパラメーターグループを作成し、要求SSLパラメーターをtrueと設定してクラスターに関連付けます。

Lambda

1. Lambda関数:パブリックなアクセス(優先度:高)

ベースライン:

AWS Lambdaの設定を確認し、関数にパブリックにアクセスできる場合は警告します。

説明:

Lambdaの場合、要求数に応じて課金が発生します。AWSはイベントの通知または呼び出しに応じて関数が実行されるたびに要求をカウントします。認証されていない実行を許可することはAWSの請求に対して予期しない課金を発生させるかもしれません。

推奨:

呼び出し許可を管理するためにLambda関数ポリシーを用います。

2. AWS Lambda;X-Rayトレースが無効(優先度:中)

ベースライン:

Lambda関数の設定を確認し、トレースが無効となっている場合には警告します。

説明:

CloudWatchはLambada関数の全ての実行に対してパフォーマンスカウンターを自動で提供します。しかし、これらのメトリクスではイベントソースからダウンストリームまでの各呼び出しの要求を全て表示するには不十分の可能性があります。

推奨:

Lambda関数のアクティブトレースを有効にします。

3. AWS Lambda関数のVPC設定(優先度:中)

ベースライン:

AWSリソースにプライベートアクセスができるよう、Lambda関数でVPC接続が有効になっているかを確認します。

説明:

Lamdaではデフォルトで、関数の実行をAWSサービスへのセキュアVPC接続やインターネットで行います。ただし、Lambda関数はカスタムVPCでリソースにアクセスするようにも設定可能です。カスタムVPCは、データベース、キャッシュインスタンス、内部サービスなどのリソースで、プライベートネットワークを定義します。これにより、インターネットにアクセスせずにVPC内でLambda関数に接続できます。この方法で、インターネットへの不正なアウトバウンドトラフィックをブロック可能です。AWSサービスには、VPCエンドポイントを低挙うしているものがあります。このVPCエンドポイントを使用して、インターネットにアクセスすることなくVPC内からAWSサービスに接続できます。

推奨:

Lambda関数でVPC設定を行い、AWSリソースにプライベートアクセスを実現してください。

4. Lambda関数の最近のランタイムの使用 (優先度:中)

ベースライン:

Lambda関数で使用されているランタイムが非推奨かどうかを確認します。

説明:

AWS Lambdaランタイム実行環境はLambda関数作成時に選択した設定に基づいてたてられるコンテナです。セキュリティアップデートでコンポーネントのサポートが無効となっている場合、ランタイムを非推奨としています。最近のランタイムを用いて新機能や機能強化を利用できることに加えて、セキュリティ、パフォーマンス、信頼性の向上も行えます。

推奨:

最近のランタイムを使用して、最良のセキュリティ強化を行い、Lambda関数のバグや脆弱性のリスクを削減します。

5. Lambda関数の最近のランタイムの使用 (優先度:中)

リソースレベルの説明:

Lambda関数をアップグレードして最近のランタイムの使用し、過去のランタイム環境を使用しないようにします。過去のものの仕様によりセキュリティアップデートの可用性低下を引き起こします。

ベースライン:

Lambda関数で使用しているランタイムが非推奨かどうかを確認します。

説明:

AWS Lambdaランタイム実行環境はLambda関数作成時に選択した設定に基づいてたてられるコンテナです。セキュリティアップデートでコンポーネントのサポートが無効となっている場合、ランタイムを非推奨としています。最近のランタイムを用いて新機能や機能強化を利用できることに加えて、セキュリティ、パフォーマンス、信頼性の向上も行えます。

推奨:

最近のランタイムを使用して、最良のセキュリティ強化を行い、Lambda関数のバグや脆弱性のリスクを削減します。

ElastiCache

1. Amazon ElastiCache:十分に活用されていないノード(優先度:高)

ベースライン:

Amazon ElastiCacheのホストレベルでのメトリクスを確認し、十分に活用されていないように見えるノードを特定します。

説明:

次の条件に適用される場合はキャッシュノードは十分に活用されていないとみなされます。

  • 過去7日間のうちの最低4日、1日のCPU使用率のパーセンテージが10%を下回った場合。
  • 過去7日間のうちの最低4日、1日のエンジンCPU使用率のパーセンテージが10%を下回った場合。

推奨:

クラスターからノードを削除するか、より小さいノードタイプに変更します。

2. Amazon ElastiCache for Redis:複数のアベイラビリティゾーン(優先度:中)

ベースライン:

ElastiCache Redisの設定を確認し、複数のアベイラビリティゾーンが有効となっていないクラスターを特定します。

説明:

計画されたメンテナンス中、あるいはノードやアベイラビリティゾーンで障害が発生した場合には新しい主要ノードを手動で作成しなおす必要があります。その代わり複数のアベイラビリティゾーンを有効にし、ElastiCasheが自動的にリードレプリカをプライマリとして昇格させ、直ちにフェイルオーバーを完了できるようにします。

推奨:

ElastiCashe管理コンソールまたはAPIを使用して、自動フェイルオーバーで複数のアベイラビリティゾーンを有効化します。

3. あまり使用していないElastiCache Memcachedインスタンス (優先度:高)

リソースレベルの説明:

ElastiCache Memcacheインスタンスがあまり使用していないと表示されているかを確認します。

ベースライン:

Memcached cache環境のAmazon ElastiCacheのリソース使用率を確認して、CPU使用率が過去48時間で2%未満であった場合にあまり使用していないとみなされます。

推奨:

Amazon ElastiCacheの場合、インスタンスタイプと利用時間を基に請求が発生します。あまり使用していないインスタンスを特定し停止することでこの請求を削減できます。

4. ElastiCache Memcached - 高いインスタンス使用率 (優先度:高)

ベースライン:

Memcached ElastiCacheのパフォーマンスカウンターを確認し、使用率が高いインスタンスがあるかを確認します。

説明:

Memcached ElastiCacheはCPU使用率が過去7日間で日次平均して90%をを超えている場合に過剰に使用されているとみなされます。

推奨:

インスタンスサイズの変更を検討します。

5. あまり使用していないElastiCache Redisインスタンス (優先度:高)

リソースレベルの説明:

ElastiCache Redisインスタンスがあまり使用されていないかを確認します。

ベースライン:

Amazon ElastiCache Redisのリソース使用率を確認して、CPU使用率が過去48時間で2%未満であった場合にあまり使用していないとみなされます。

推奨:

Amazon ElastiCacheの場合、インスタンスタイプと利用時間を基に請求が発生します。あまり使用していないインスタンスを特定し停止することでこの請求を削減できます。

6. ElastiCache Redis - 高いインスタンス使用率 (優先度:高)

ベースライン:

Redis ElastiCacheのパフォーマンスカウンターを確認し、使用率が高いインスタンスがあるかを確認します。

説明:

Redis ElastiCacheはCPU使用率が過去7日間で日次平均して90%をを超えている場合に過剰に使用されているとみなされます。

推奨:

インスタンスサイズの変更を検討します。

Amazon CloudFront

1. Amazon CloudFront – WAF連携(優先度:中)

ベースライン:

Amazon CloudFront WebディストリビューションがWebアプリケーションファイアウォール(AWS WAF)と連携されているか確認します。

説明:

AWS Cloudfront—WAF連携によって、WAF Webアクセス制御リスト(ACL)で定義された基準に基づいて、Cloudfrontコンテンツ配信ネットワークに対して行われた悪意のあるリクエストをブロックできます。これは、Webアプリケーションのセキュリティが危険にさらされたり、不必要な負荷をかけたりする可能性のあるセキュリティ層の攻撃から保護します。

推奨:

WAF ACLを作成してそれをWebディストリビューションと関連付け、CloudFrontとAWS WAFを連携させてください。

必要な権限:

"cloudfront:ListDistributions"

2. Amazon CloudFront – アクセスログ(優先度:中)

ベースライン:

Amazon Cloudfrontディストリビューションのアクセスログ機能が有効になっているかを確認してください。

説明:

CloudfrontアクセスログはWebコンテンツのに対して行われた各要求について、要求されたオブジェクト名、アクセス日時、クライアントIP、アクセスポイント、エラーコードなどといった詳細な情報を保持しています。その他にもセキュリティ―監査に役立つ情報、解析やレポートツールのデータが含まれます。

推奨:

CloudFront CDN ディストリビューションのアクセスログを有効にします。

必要な権限:

"cloudfront:ListDistributions"、"cloudfront:GetDistribution"

3. Amazon CloudFront – 暗号化の適用(優先度:中)

ベースライン:

Amazon CloudFront CDNディストリビューションとそのユーザー間の通信がHTTPを使って暗号化されているかどうかを確認します。

説明:

Establishing communication with HTTPS (SSL encryption) for your CloudFront CDNディストリビューションのHTTPS(SSL暗号化)を用いた通信を行うことは、エッジ(キャッシュ)サーバー間の暗号化トラフィックを保証することができ、また、また、悪意のあるユーザーがCDN配信ネットワークを介して送信されたパケットを傍受できる場合、アプリケーションビューアーを解読することはできません。

推奨:

Configure CloudFrontディストリビューションプロトコルポリシーを設定し、転送暗号化でデータにHTTPを適用します。してください。

必要な権限:

"cloudfront:ListDistributions"

4. Amazon CloudFront – フィールドレベルの暗号化(優先度:中)

ベースライン:

フィールドレベルの暗号化がAmazon CloudFront Webディストリビューションで有効となっているかを確認します。

説明:

CloudFrontのフィールドレベルの暗号化によって、SSLの暗号化(HTTPS)とともにセキュリティ層を追加します。システム処理全体で特定の機密データを保護し、環境内の特定のアプリケーションのみがそのデータを表示できるようにします。

推奨:

Amazon CloudFront Webディストリビューションのフィールドレベルの暗号化を有効にします。

必要な権限:

"cloudfront:ListDistributions"

5. Amazon CloudFront – 安全でないSSLプロトコル(優先度:中)

ベースライン:

AWS CloudFrontディストリビューションの設定で、安全でないSSLプロトコルが使われていないことを確認します。

説明:

Cloudfrontディストリビューションに安全でなく非推奨のSSLプロトコルを使用すると、CloudFront CDNとオリジンサーバーの間の接続がPOODLE(ダウングレードされたレガシー暗号化のパディングOracle)などのエクスプロイトに対して脆弱性が発生します。TLSv1.0より新しいバージョンを用いるか(オリジンがサポートしている場合はTLSv1.2のみを使うことを推奨します)、SSLv3プロトコルを使うのを避けてください。

推奨:

CloudFrontディストリビューションオリジンから非推奨であるSSLv3プロトコルを削除してください。

必要な権限:

"cloudfront:ListDistributions"

6. Amazon CloudFront – 暗号化されていないトラフィック(優先度:中)

ベースライン:

AWS CloudFrontディストリビューションとそれらカスタムオリジン間の通信でHTTPSを用いた暗号化が行われているかを確認します。

説明:

AWS CloudfrontディストリビューションにHTTPSにより、エッジサーバー間の暗号化トラフィックを保証することができます。そして、悪意のあるユーザーがCDNを介して送られたパケットを取得できるような場合、カスタムオリジンは暗号を解除することができません。これはWebコンテンツの安全な配信に役立てられ、転送の暗号化におけるデータのコンプライアンス要件を満たすことができます。

推奨:

CloudFrontディストリビューションのエッジロケーションとそれらオリジン間のトラフィック暗号化のためにHTTPSを有効にしてください。

必要な権限:

"cloudfront:ListDistributions"

API Gateway

1. API Gateway - SSLクライアント証明書の有効化(優先度:中)

ベースライン:

Amazon API GatewayのAPIにSSL証明書が使われていて、バックエンドのシステムに行われたHTTP要求がAPI Gatewayサービスからのものであるということを確認します。

説明:

バックエンドサービスへのHTTP要求がAmazon API GatewayのAPIからのものであることを確認し、その要求の認証のためにクライアント側のSSL証明書を使用することを強く勧めています。

推奨:

SSL証明書を作成し、それをAmazon API GatewayのAPIに関連付けてください。

必要な権限:

"apigateway:RestApis"、"apigateway:GetStages"

2. API Gateway - APIのCloudWatchログ(優先度:中)

ベースライン:

AWS CloudWatchのログがAmazon API Gatewayで作成されたAPIに有効であるかどうか確認します。

説明:

Amazon CloudWatchログはステージレベルでのAPI実行についての記録情報を収集します。この情報はAPIに関するあらゆる問題のトラブルシューティングにきわめて役立てられます。

推奨:

Amazon API GatewayのAPIでAWS CloudWatchログを有効化します。.

必要な権限:

"apigateway:RestApis"、"apigateway:GetStages"

3. API Gateway:コンテンツエンコード(優先度:中)

ベースライン:

コンテンツエンコード機能がAmazon API GatewayのAPIで有効となっているか確認します。

説明:

Amazon API Gatewayでクライアントはサポートされている圧縮タイプのいずれかを使用して圧縮されたペイロードでAPIを呼び出すことができます。コンテンツエンコードが有効となると、API Gatewayサービスで、クライアントのアクセプトエンコーディングヘッダーに基づいて、応答本文の圧縮を行うことができます。APIペイロードの圧縮を有効化すると、APIパフォーマンスの向上や領域の使用率を削減することに役立てられます。

推奨:

コンテンツエンコード機能を用いて、Amazon API GatewayのAPIペイロード圧縮を有効にします。

必要な権限:

"apigateway:RestApis"

4. API Gateway - APIのCloudWatchメトリクス(優先度:中)

ベースライン:

詳細なCloudWatchメトリクスがAWS API Gatewayで作成された全てのAPIで有効になっているか確認します。

説明:

APIステージのAWS CloudWatchメトリクスを使用すると、より詳細なデータを取得することができるため、これらメトリクスのアラートを通じて受け取れる情報に基づいて、迅速に対応し即座にアクションを実行できます。

推奨:

Amazon API GatewayのAPIステージで、詳細なCloudWatchメトリクスを有効にします。

必要な権限:

"apigateway:RestApis"、"apigateway:GetStages"

AWS EFS

1. AWS EFS:管理KMSキー(優先度:高)

ベースライン:

Amazon EFSファイルシステムがAWS管理キー(顧客キーが設定されていないときのEFSサービスによるデフォルトのキー)ではなくKMS顧客キーによって暗号化されているか確認します。

説明:

自身のKMS CMK顧客管理キーを設定し用いると、EFSファイルシステムのデータやメタデータを保護して、誰がこのキーを用いてデータ(システムメタデータも含む)にアクセスしているかといった情報を広く得ることができます。AWS KMSサービスでファイルシステムのCMK暗号化キーを作成、変更、無効化、監査することができ、保存データの暗号化または複合化プロセスをより詳細に制御できます。

推奨:

自身のAWS KMS CMK顧客管理キーを用いて既存のAWS EFSファイルシステムを暗号化してください。

必要な権限:

"elasticfilesystem:DescribeFileSystems"

2. AWS EFS:暗号化(優先度:高)

ベースライン:

Amazon EFSファイルシステムが暗号化されて保存データを保護しているかを確認します。

説明:

AWS KMSサービスで管理されている暗号化キーによって、安全なキー管理インフラストラクチャーの構築と維持が必要なくなります。暗号化はデータが書き込まれている間、複合化はファイルシステムから読み取られる間に起こるため、ユーザーやアプリケーションで何かアクションを起こす必要はありません。認証されていないアクセスからのデータやメタデータの保護や、組織内の保存データを暗号化でコンプライアンス要件を高めることができるため、EFSファイルシステムを暗号化することを強くお勧めします。

推奨:

AWS EFSファイルシステムの暗号化を有効にします。

必要な権限:

"elasticfilesystem:DescribeFileSystems"

Elastic MapReduce

1. AWS EMR:S3へのロギングを有効化

ベースライン:

S3バケットへのアップロードでAmazon EMRクラスターログファイルが有効になっているか確認します。

説明:

EMRのロギングを有効にすると、EMRクラスターの履歴データを保持できます。デフォルトでは、全てのログファイルはクラスターから自動削除されるようになっています。これらファイルは分析やEMRクラスターの問題のデバッグに役立ちます。

推奨:

ログファイルをS3に保存する設定を有効にしてください。

2. AWS EMR:VPCでのクラスター起動

ベースライン:

EC2クラシックではなく、EC2 VPCプラットフォームでAmazon EMRクラスターがプロビジョニングされているかを確認します。

説明:

Amazonではクラスターの起動に、EC2 VPCとEC2クラシックの2つの選択肢があります。EC2クラシックでは、インスタンスは単一のネットワークで実行されます。他方で、EC2 VPCを使用すると、AWS内の隔離エリアで実行でき、仮想ネットワークを構成してプライベートIPアドレスレンジ、サブネット、ルーティングテーブル、ネットワークゲートウェイなどを制御できます。

推奨:

セキュリティと可用性の向上のために、常にEC2 VPCでEMRクラスターを起動してください。

3. AWS EMR:暗号化

ベースライン:

Amazon EMRクラスターで転送中データと保存中データの暗号化が、有効になっているか確認します。

説明:

Amazon EMRで転送中と保存中の両方のデータを暗号化できます。暗号を有効にすれば、認可のないユーザーがEMRクラスターにある機密データを読み取るのを防止できます。

推奨:

EMRクラスター内の保存データの暗号化を有効にします。

4. Amazon EMRクラスターのマスターノードでパブリックIPアドレスが使用されていないことを確認 (優先度:高)

ベースライン:

Amazon EMRクラスターマスターノードでパブリックIPアドレスが使用されているかを確認します。

説明:

Amazon EMRは顧客のHadoopクラスターをプロビジョニングして管理し、MapReduceパターンを使用して膨大なデータセットを処理します。デフォルトで、管理と他クラスターとの通信を行う制御ロジックはパブリックIPを介して行われます。クラスターで重要なデータを処理している場合、追加のアクセス制御によりクラスターを起動したいと考えられます。

推奨:

EMRクラスターのマスターノードでパブリックIPアドレスが使用されていないことを確認します。

5. Amazon EMRクラスターのマスターノードでパブリックIPアドレスが使用されていないことを確認 (優先度:高)

リソースレベルの説明:

パブリックIPアドレスを使用しているAmazon EMRクラスターマスターノードはネットワークセキュリティに影響を及ぼします。

ベースライン:

Amazon EMRクラスターマスターノードでパブリックIPアドレスが使用されているかを確認します。

説明:

Amazon EMRは顧客のHadoopクラスターをプロビジョニングして管理し、MapReduceパターンを使用して膨大なデータセットを処理します。デフォルトで、管理と他クラスターとの通信を行う制御ロジックはパブリックIPを介して行われます。クラスターで重要なデータを処理している場合、追加のアクセス制御によりクラスターを起動したいと考えられます。

推奨:

EMRクラスターのマスターノードでパブリックIPアドレスが使用されていないことを確認します。

Route 53

1. AWS Route 53:自動更新

ベースライン:

登録ドメインの自動更新機能が有効化されているかを確認します。

説明:

自動更新機能を有効にすると、更新が遅れる前にドメインを更新し、ドメインの更新もれを防止できます。有効期限後にドメインを復元するコストは更新よりも高くなります。

推奨:

自動更新機能を有効化してドメインの期限切れを防止してください。

2. AWS Route 53:ドメイン失効

ベースライン:

登録ドメインが失効されているかを確認します。

説明:

ドメインの失効状況はコンソール上で把握できません。期間中に更新を行えなかった場合、有効期限が切れてしまい、トップレベルドメイン(TLD)の一部のレジストリで他のレジストリが登録できるようになる前にドメインを復元する必要があります。ドメインの復元費用は更新や新規登録よりも高いため、復元する前に、その料金を確認してください。

推奨:

ドメインを復元すると、期限切れのドメインへの完全なアクセスが可能になります。他のレジストリが登録できるようになる前に、ドメインを復元すると安全です。

3. AWS Route 53:移管ロックの有効化

ベースライン:

移管ロックが有効化されているかを確認し、ドメインのハイジャックを防止します。

説明:

AWS Route 53に登録されているすべてのトップレベルドメイン(TLD)のドメインレジストリで転送ロックを有効にすると、許可なしにドメインを別のレジストリに移管するのを防ぎます。この機能により、レジストリはすべての移管リクエストを自動的で拒否することができます。

推奨:

ドメインネームで移管ロック機能を有効にしてください。

4. AWS Route 53:未使用のDNS

ベースライン:

Route 53にホストしたゾーンで、NSサービスの可用性を確認します。

説明:

Amazon Route 53は可用性の高いクラウドDNSのWebサービスです。ユーザーのリクエストをAWS上で稼働するインフラストラクチャに効果的に接続します。コストも効率的でIAMで保護されており、AWSサービスに柔軟に対応できます。

推奨:

AWS Route 53にドメインのDNSサービスを設定します。

5. AWS Route 53:ダングリングDNSレコード

ベースライン:

セキュリティ維持のため、Route 53クラスター内のダングリングDNSレコードを確認します。

説明:

セキュリティを維持し悪意のあるアクセスを防ぐために、ドメインやサブドメインを示すダングリングDNSエントリが削除されているかどうかを確認します。ドメイン名が自社で管理するのではないIPをポイントしたままにしておくと、お客さまドメイン向けトラフィックを自分向けだと主張する攻撃のリスクが生じます。

推奨:

ドメイン内の全てのダングリングDNSレコードを削除してください。

6. AWS Route 53:プライベートDNSのパブリックホストゾーン

ベースライン:

AWS外への情報の流出を防止するためにプライベートDNSレコードでのパブリックなホストゾーンを確認します。

説明:

プライベートIP/リソースのDNSレコードを含め、AWS Route 53のパブリックなホストゾーンを確認します。Webサイトを公開するには、パブリックホストゾーンが必要です。プライベートホストゾーンは、関連付けられたVPC内からのクエリにのみ応答します。Amazon Route 53では、スプリットビューDNSを設定できます(別称スプリットホライズンDNS)。同じWebサイトで、アプリケーションの内部バージョンと外部バージョンを維持する場合は、パブリックホストゾーンとプライベートホストゾーンを設定して、同じドメイン名で別の内部IPアドレスと外部IPアドレスを返すようにします。

推奨:

Route 53のパブリックホストゾーンでプライベートDNSレコードを使用していないか確認ください。

7. AWS Route 53:ELBをポイントしたrootエイリアス

ベースライン:

トラフィック維持のため、rootドメインエイリアスがELBをポイントしているか確認します。

説明:

ELBへのrootドメインエイリアスレコードを確認します。rootドメインのAレコードを作成しELBにポイントすることができるAmazon DNSレコードタイプのことで、DNS機能にRoute 53特有の拡張機能を付与します。IPアドレスやドメイン名の代わりに、エイリアスレコードにELBへのポインターが含まれている必要があります。

推奨:

ELBにポイントするrootドメインエイリアスレコードを含むホストゾーンにRoute 53エイリアスを作成してください。

8. AWS Route 53:rootドメインのDNSエイリアス

ベースライン:

AWS Route 53のrootドメインのDNSエイリアスレコードを確認します。

説明:

Amazon Route 53のエイリアスレコードを作成し、CloudFrontディストリビューションやAmazon S3といったAWSリソースへのトラフィックをルーティングします。CNAMEレコードとは異なり、DNS名前空間のトップノードにエイリアスレコードを作成できます。例えば、DNS名「example.com」を登録した場合、そのゾーンのトップは「example.com」です。「example.com」のCNAMEレコードは作成できませんが、www.example.comにトラフィックをルーティングする「example.com」などのエイリアスレコードは作成できます。

推奨:

AWS Route 53ホストゾーン内のrootドメインのDNSエイリアスレコードを確認してください。

9. AWS Route 53:プライバシー保護の有効化

ベースライン:

機密情報保護のためにプライバシー保護が有効化されているかを確認します。

説明:

プライバシー保護の有効化によりWHOISクエリから連絡先情報を保護し、スパムの被害を削減できます。ドメイン登録の際、プライバシー保護はデフォルトで有効となっており、ドメインの各連絡先でプライバシー保護を無効化できます。プライバシー保護を無効にすると、WHOISクエリでドメインの登録や移管時に指定した名前、住所、電話番号、メールアドレスなど、連絡先情報を誰でも確認可能になります。

推奨:

Route 53で登録したドメインのプライバシー保護を有効にします。

Amazon Storage Gateway

1. Amazon Storage Gatewayボリューム:KMS管理キー

:ベースライン:

AWS管理キーの代わりにKMS顧客マスターキー(CMK)を用いてAmazon Storage Gatewayボリュームを暗号化されているかを確認します。

説明:

独自のKMSCMK顧客管理キーを定義してAmazonStorage Gatewayを保護することで、これらのキーを使用してボリューム(キャッシュまたは保存されたボリューム)にアクセスできるユーザーを完全に制御できます。AWS KMSサービスを使用すると、ファイルシステムのCMK暗号化キーを作成、ローテーション、無効化、および監査でき、保存データの暗号化/復号化プロセスをよりきめ細かく制御できます。

推奨:

Amazon Storage Gatewayボリュームを自身のAWS KMS CMKを用いて暗号化してください。

2. Amazon Storage Gatewayファイル共有:KMS管理キー

ベースライン:

Amazon Storage Gatewayファイル共有が、AWS管理キーの代わりにKSM CMKを使用して暗号化されているかを確認します。

説明:

独自のKMSCMKを定義して使用し、AmazonS3でバックアップされたAmazonStorage Gatewayファイル共有を保護すると、これらのキーを使用してボリューム(キャッシュまたは保存されたボリューム)にアクセスできるユーザーを完全に制御できます。AWS KMSサービスを使用すると、ファイルシステムのCMK暗号化キーを作成、ローテーション、無効化、および監査でき、保存データの暗号化/復号化プロセスをよりきめ細かく制御できます。

推奨:

Amazon Storage Gatewayファイル共有を自身のAWS KMS CMKを用いて暗号化します。

3. Amazon Storage Gatewayテープ:KMS管理キー

ベースライン:

Amazon Storage Gatewayテープが、AWS管理キーの代わりにKSM CMKを使用して暗号化されているかを確認します。

説明:

独自のKMSCMKを定義して使用し、Amazon Storage Gatewayテープで利用可能なデータを保護すると、これらのキーを使用してボリューム(キャッシュまたは保存されたボリューム)にアクセスできるユーザーを完全に制御できます。AWS KMSサービスを使用すると、ファイルシステムのCMK暗号化キーを作成、ローテーション、無効化、および監査でき、保存データの暗号化/復号化プロセスをよりきめ細かく制御できます。

推奨:

Amazon Storage Gatewayテープを自身のAWS KMS CMKを用いて暗号化します。

Amazon MQ

1. Amazon MQ:パブリックアクセス

ベースライン:

AWS MQブローカーで重要なデータへのパブリックなアクセス可能となっておらず、セキュリティリスクが最小化されているかを確認してください。

説明:

公開されているAmazonMQブローカーには、Amazon Virtual Private Cloud(Amazon VPC)の外部から直接アクセスできます。パブリックアクセスが可能だと、誰でもパブリックエンドポイントを介してMQブローカーにアクセスできます。これにより、クロスサイトスクリプティング(XSS)やクリックジャッキング攻撃などの悪意のあるアクティビティを受ける恐れが増える可能性があります。

推奨:

VPC内にAmazon MQを再作成し、パブリックアクセスを無効にしてください。

2. Amazon MQ:ブローカーのネットワーク

ベースライン:

本番環境のAWS MQブローカーが、単一インスタンスのネットワーク内で実行されているか、アクティブまたは待機中のブローカーで実行されているかを確認します。

説明:

ブローカーのネットワークにより、ブローカーの障害、アベイラビリティーゾーン(AZ)の中断、またはAWSリージョン全体との接続が失われる可能性のある災害が発生した場合でも、クラウドアプリケーションは引き続き動作できます。ブローカーのネットワークを展開すると、負荷が分散されてメッセージスループットが向上し、アプリケーション接続の数が増えて高可用性とスケーラビリティが実現します。

推奨:

単一インスタンスまたはアクティブ/待機中ブローカーのメッシュネットワークにMQブローカーを再作成します。

3. Amazon MQ:ログ出力

ベースライン:

ログ出力機能で、ブローカーログイベントをAWS CloudWatchログに公開できるようになっているかを確認します。

説明:

ログ出力機能が有効になると、Amazon MQの一般的なログや監査ログがAWS CloudWatchログに公開され、ブローカーのアクティビティを可視化して、監査に関してはコンプライアンス要件を満たします。

推奨:

既存のAmazon MQブローカーのログ出力機能を有効にします。

4. Amazon MQ:デプロイメントモード

ベースライン:

AWS MQブローカーが高可用性のために、アクティブまたはスタンドバイのデプロイメントモードを用いているかを確認します。

説明:

デプロイメントモードを有効化することで、シングルブローカーモード(デフォルトで有効)とは対照的に、サービスは自動フェイルオーバー機能を提供するため、AmazonMQブローカーの高可用性を実現できます。MQアクティブ/スタンバイデプロイメントモードには、1つのAZに単一のブローカーインスタンスを作成することによって構成された2つのブローカーインスタンスと、別のAZに別のスタンバイブローカーインスタンスが含まれます。

推奨:

既存Amazon MQブローカーのアクティブ/スタンドバイのデプロイメントモードを有効にし、それらに高可用性設定を再作成します。

5. Amazon MQ:自動低バージョンアップグレード

ベースライン:

Amazon MQブローカーで自動マイナーバージョンアップグレード機能を有効にし、自動アップグレードエンジンを行います。

説明:

自動バージョンマイナーアップグレード機能を有効にすると、バージョンアップグレードはメンテナンスウィンドウ中に自動的に行われます。このようにして、AWS MQブローカーは、新しいソフトウェア機能、バグ修正、およびセキュリティパッチを取得できます。

推奨:

自動マイナーバージョンアップグレード機能を有効にし、ブローカーを再作成します。

6. あまり使用していないMQインスタンス (優先度:高)

リソースレベルの説明:

あまり使用していないAmazon MQインスタンスがあるかを確認します。

Amazon MQメッセージブローカーサービスのリソース使用率を確認し、過去48時間のCPU使用率が2%未満の場合はあまり使用していないとみなされます。

推奨:

Amazon MQの場合、インスタンスタイプと使用時間に基づいて請求が発生します。あまり使用していないインスタンスを特定し停止します。

7. Amazon MQ - 高いインスタンス使用率 (優先度:高)

ベースライン:

Amazon MQのパフォーマンスカウンターを確認し過剰に使用されているインスタンスがあるかを特定します。

説明:

MQブローカが過去7日間でCPU使用率が日次平均90%を超えている場合に過剰に使用されているとみなされます。

推奨:

インスタンスサイズの変更を検討します。

AWS証明書管理 (ACM)

1. AWS証明書管理:証明書ワイルドカード使用率

ベースライン:

AWS証明書管理(ACM)の単一ドメイン名証明書がワイルドカード証明書の代わりにAWSアカウントで使用されているかを確認します。

説明:

ドメイン/サブドメインをハッキングするリスクを減らすために、ワイルドカード証明書の代わりに単一のドメイン名証明書を使用してください。ワイルドカード証明書を使用することにより、証明書の秘密鍵がハッキングされると、ドメインとサブドメインが影響を受ける可能性があります。

推奨:

単一ドメイン名証明書をACMの各ファーストレベルサブドメインで使用して、セキュリティを向上します。

2. AWS証明書管理:証明書有効性

ベースライン:

SSL / TLS証明書の発行または更新プロセス中に行われたすべての要求が、ACMによって管理されているときに検証されているかどうかを確認します。

説明:

ACM証明書が時間どおりに検証されない場合(要求が行われてから72時間以内)、これらは無効になり、新しいSSL / TLS証明書を要求する必要があり、アプリケーションまたはサービスの中断を引き起こす可能性があります。

推奨:

ACM証明書リクエストがAWSアカウントで有効となっているかを確認します。

3. AWS証明書管理:証明書更新

ベースライン:

有効期間が終了する前に、ACMによって管理されているSSL / TLS証明書を更新する必要があるかどうかを確認してください。

説明:

ACM証明書が有効期限までに更新されない場合、それらは無効になり、これらの証明書を実装するAWSリソース(CloudFrontディストリビューション)は安全ではなくなります。ACMサービスは、使用されていない(つまり、他のAWSリソースに関連付けられていない)証明書を自動的に更新しません。これらの証明書が無効になる前に、更新プロセスを手動で実行する必要があります。

推奨:

ACMサービスを用いて期限切れが起こりそうなSSL/TLS証明書を更新します。

4. AWS証明書管理:期限切れの証明書

ベースライン:

ACMで期限切れの全SSL/TLS証明書を削除します。

説明:

期限切れのACM証明書を削除すると、無効なSSL / TLS証明書がElasticLoad Balancing(ELB)などの別のリソースに誤って展開されるリスクが排除されます。

推奨:

ACMで期限切れのSSL/TLS証明書を削除します。

AWS Elastic Kubernetesサービス (EKS)

1. AWS EKS:パブリックアクセス

ベースライン:

Amazon Elastic Kubernetesサービス(EKS)クラスターのKubernetes APIサーバーエンドポイントがインターネットからパブリックにアクセスできないことを確認し、プライベートなデータの流出を防止します。

説明:

Amazon EKSは、新しく作成されたクラスターと通信するマネージドKubernetesAPIサーバーのエンドポイントを作成します。デフォルトでは、AWS EKSによって管理されるこのAPIサーバーエンドポイントは、VPCの外部から直接アクセスできます。したがって、インターネット上のすべてのマシンは、パブリックエンドポイントを介してEKSクラスターに到達できます。これにより、悪意のあるアクティビティや攻撃の機会が増える可能性があります。

推奨:

パブリックなアクセスを無効にし、EKSクラスターのAPIサーバーエンドポイントの可視性を再構成します。

2. AWS EKS:セキュリティグループ

ベースライン:

EKSクラスターにセキュリティグループが関連付けられているかを確認し、インバウンドなトラフィックをTCPポート 443 (HTTPS)のみで有効にします。

説明:

AmazonEKSセキュリティグループ内のすべてのタイプのポートを使用しないでください。総当たり攻撃などの悪意のあるアクティビティからクラスターを保護するために、HTTPSでのみインバウンドトラフィックを許可します。

推奨:

TCPポート 443からのアクセスのみ有効にし、Amazon EKSクラスターにセキュリティグループを再設定します。

3. AWS EKS:クラスターロギング

ベースライン:

Amazon EKSクラスターでログが有効になっており、AWS CloudWatchLogsにログを公開できるかを確認します。

説明:

EKS Control Plane Logging機能を有効にすることで、EKSは監査ログと診断ログをAWS CloudWatchLogsに直接送信します。これらのログは、EKSクラスターを保護して効率的に実行するのに役立ちます。必要なログタイプ(API、監査、コントローラーマネージャー、スケジューラー、または認証ログ)を選択できます。ロギングデータは、指定されたAmazonEKSクラスター用に作成されたAWSCloudWatchロググループに送信されます。

推奨:

AWS EKSクラスターでAPI、監査、コントローラー管理、スケジューラー、認証ログをAmazon CloudWatchに公開することを有効にします。

Amazon WorkSpaces

1. Amazon WorkSpaces:未使用のインスタンス

ベースライン:

未使用のAWS WorkSpacesインスタンスを確認し、AWSコストを削減します。

説明:

AWSアカウント内で実行されているWorkSpacesインスタンスは、使用していない場合でも料金が追加されます。未使用のWorkSpacesインスタンスを削除することを強くお勧めします。

推奨:

AWSアカウントで未使用のAmazon WorkSpacesインスタンスを削除します。

2. Amazon WorkSpaces:ストレージ暗号化

ベースライン:

セキュリティやコンプライアンス要求を満たすために、WorkSpacesストレージボリュームが暗号化されているかを確認します。

説明:

WorkSpacesストレージ暗号化を使用すると、データを暗号化して、権限のないユーザーが機密データを読み取れないようにすることができます。セキュリティとプライバシーのコンプライアンス要件を満たすには、WorkSpacesストレージボリュームを暗号化します。

推奨:

既存のAWS WorkSpacesデータを暗号化するために、WorkSpacesインスタンスでボリューム暗号化機能を有効にします。

3. Amazon WorkSpaces:正常なインスタンス

ベースライン:

全WorkSpacesインスタンスが正常に稼働しているかを確認し、稼働状態を維持します。

説明:

サービスヘルスチェックに応答しないWorkSpacesインスタンスは、異常と見なされます。WorkSpacesサービスは定期的にステータスリクエストをWorkSpacesインスタンスに送信し、HealthCheckリクエストへの応答が受信されない場合は異常であると判断されます。

推奨:

異常なWorkSpacesを再起動により頻繁にクリアにできます。

Amazon Neptune

1. Amazon Neptune - IAMデータベース認証

ベースライン:

データベースアクセスを管理するために、Amazon NeptuneデータベースクラスターでIDおよびアクセス管理(IAM)データベース認証機能が有効になっているかどうかを確認します。

説明:

NeptuneデータベースクラスターのIAMデータベース認証により、ユーザー認証情報を使用してAWSIAMにログインする必要がなくなります。さまざまなメリットがあります。これには、転送中の暗号化、SSLを使用して暗号化されたデータベースクラスターとの間のネットワークトラフィック、およびサインイン中の集中管理が含まれます。

推奨:

IAMデータベース認証をNeptuneクラスターで有効にし、ユーザーの認証情報をIAM経由で管理します。

2. Amazon Neptune:自動マイナーバージョンアップグレード

ベースライン:

Neptuneデータベースインスタンスで自動マイナーバージョンアップグレードを有効となっているかを確認し、マイナーエンジンアップグレードを行います。

説明:

Neptuneデータベースは定期的にアップグレードされ、新しいソフトウェア機能、バグ修正、セキュリティパッチ、およびパフォーマンスの改善が導入されます。自動アップグレードは、システムメンテナンスウィンドウ中にNeptuneインスタンスに適用されます。

推奨:

自動マイナーバージョンアップグレードを有効にし、Neptuneデータベースインスタンスを更新します。

3. Amazon Neptune:マルチAZ

ベースライン:

Neptuneグラフデータベースクラスターが少なくとも2つのAZ(アベイラビリティゾーン)にデプロイされているかを確認します。

説明:

複数のAZにNeptuneグラフデータベースクラスターがあり、これらが1つのNeptuneグラフデータベースクラスターを共有している場合、AZに障害が発生すると、Neptuneグラフデータベースクラスターが使用できなくなり、他のAZ内のリソースがインターネットにアクセスできなくなります。Neptuneグラフデータベースクラスターを少なくとも2つのAZにデプロイして、フォールトトレランスを作成します。

推奨:

少なくとも2つのAZにNeptuneグラフデータベースクラスターをデプロイすることにより、単一障害点を削除し、アプリケーションの可用性を高めます。

4. Amazon Neptune:暗号化

ベースライン:

Amazon Neptuneデータベースインスタンスが暗号化され、データが保護されているかを確認します。

説明:

暗号化キーはAWSKMSサービスによって管理されるため、安全なキー管理インフラストラクチャを構築して維持する必要がありません。データは、書き込み中に透過的に暗号化され、データベースから読み取られるときに透過的に復号化されます。暗号化プロセスでは、ユーザーまたはアプリケーションによる追加のアクションは必要ありません。Neptuneデータベースインスタンスを暗号化して、データとメタデータを不正アクセスから保護し、組織内の保存データ暗号化のコンプライアンス要件を適用することを強くお勧めします。

推奨:

AWS Neptuneデータベースインスタンスの暗号化を有効にします。

5. Amazon Neptune:管理KMSキー

ベースライン:

AmazonNeptuneデータベースインスタンスがAWSマネージドキー(カスタマーキーが定義されていない場合にサービスによって使用されるデフォルトの暗号化キー)の代わりにKMS CMKを使用して暗号化されているかどうかを確認します。

説明:

独自のKMSCMKを定義して使用してNeptuneデータベースインスタンスを保護すると、システムメタデータを含むデータにアクセスするためにこれらのキーを使用できるユーザーを完全に制御できます。AWS KMSサービスを使用すると、ファイルシステムのCMK暗号化キーを作成、ローテーション、無効化、および監査でき、保存データの暗号化/復号化プロセスをよりきめ細かく制御できます。

推奨:

暗号化設定を既存のAWS Neptuneデータベースインスタンスに再作成し、セキュアにします。

6. Amazon Neptune:バックアップ保持期間

ベースライン:

Amazon Neptuneグラフデータベースクラスターが自動スナップショットを保持するための最小バックアップ保持期間を設定しているかどうかを確認します。

説明:

Amazon Neptuneクラスターに設定された最小保持期間により、バックアップが継続的かつ増分的になるため、バックアップ保持期間内の任意の時点にすばやく復元できます。より長い時間のバックアップにより、障害が発生した場合のデータ復元プロセスを処理できます。

推奨:

Neptuneクラスター設定を更新し、重要なバックアップ保持期間を設定します。

7. あまり使用していないNeptuneインスタンス (優先度:高)

リソースレベルの説明:

あまり使用していないNeptuneインスタンスがあるかどうかを確認します。

Baseline:

Amazon Neptune管理のグラフデータベースサービスのリソース使用率を確認し、過去48時間でCPU使用率が2%未満の場合にあまり使用していないとみなされます。

推奨:

Amazon Neptuneの場合、インスタンスタイプと使用時間に基づいて請求が発生します。あまり使用していないインスタンスを特定し停止することでコストを削減します。

8. Neptune - 高いインスタンス使用率 (優先度:高)

ベースライン:

Amazon MQのパフォーマンスカウンターを確認し、過剰に使用されているインスタンスがあるかを特定します。

説明:

Neptuneインスタンスは過去7日間でCPU使用率が日次平均で90%を超えている場合に過剰に使用されているとみなされます。

推奨:

インスタンスサイズの変更を検討します。

Amazon Database Migration Service(DMS)

1. Amazon DMS:同一ネットワーク上でAWS DMSレプリケーションインスタンスを公開しない(優先度:高)

ベースライン:

同一ネットワーク内で複製元と複製先のデータベースが存在する際に、AWS DMSレプリケーションインスタンスが公開されているかを確認します。

説明:

インスタンスで複製元と複製先データベースとを接続するため、AWS DMSレプリケーションインスタンスはパブリックIPアドレスとプライベートIPアドレスのいずれかを使用します。両データベースが同一ネットワークにあり、VPNでインスタンスのVPCに接続している場合は、公開しないでください。

推奨:

AWS VPC内に送信元と宛先のデータベースがある場合、インスタンスはプライベートな環境に置いてください。セキュリティグループを作成してDMSレプリケーションインスタンスの公開を制限してください。

Amazon Elasticsearch Service(ES)

1. Amazon Elasticsearch ServiceのドメインがPVCにあるか判定(優先度:中)

ベースライン:

VPCネットワーク内にElasticsearch Serviceのドメインが存在するかを確認します。

説明:

ESドメインはパブリックとVPCのいずれかのアクセスでデプロイできます。ESクラスターをVPCにデプロイする場合、そのVPCにアクセスできるユーザーだけがクラスターに通信できます。パブリックリクエストをブロックすれば、リソースを脅威から守ることができ、攻撃リスクを減らせます。

推奨:

Amazon ESクラスターをAWS VPC内でき道すれば、ESクラスターとその他AWSサービスの間で、インターネットゲートウェイ、NAT機器、VPNなど不要で、安全に通信できます。

2. Elasticsearchドメインの保存時の暗号化を有効にする (優先度:高)

ベースライン:

Elasticsearch (ES)ドメインで保存時の暗号化が有効化されているかどうかを確認します。

説明:

保存データの暗号化は悪意のあるアクティビティといった未認証のアクセスを防ぐのに役立ち、ECドメインやストレージシステムの重要なデータを保護します。ESの保存時の暗号化はAWS KMSサービスでの暗号化キーの保存と管理をしやすくします。

推奨:

保存時のESドメインを暗号化し悪意のあるアクセスやコンプライアンスから保護します。

3. Elasticsearchドメインの保存時の暗号化を有効にする (優先度:高)

リソースレベルの説明:

セキュリティ攻撃からリソースを保護するために、保存時のESドメインを暗号化する必要があります。

ベースライン:

Elasticsearch (ES)ドメインの保存時の暗号化が有効化されているかを確認します。

説明:

保存データの暗号化は悪意のあるアクティビティといった未認証のアクセスを防ぐのに役立ち、ECドメインやストレージシステムの重要なデータを保護します。ESの保存時の暗号化はAWS KMSサービスでの暗号化キーの保存と管理をしやすくします。

推奨:

保存時のESドメインを暗号化し悪意のあるアクセスやコンプライアンスから保護します。

Amazon GuardDuty

1. GuardDutyの有効化(優先度:中)

ベースライン:

Amazon GuardDutyが有効か確認します。

説明:

AWS GuardDutyは、マネージド型の脅威検出サービスです。VPCフローログ、AWS CloudTrailイベントログ、DNSログを継続監視し、悪意の挙動や未認可の挙動を追跡します。GuardDutyの有効化で、未認可や通常とは異なるアクティビティを特定でき、是正措置に役立ちます。

推奨:

利用中のAWSリソースがある全てのリージョンで、GuardDutyを有効にし、セキュリティ上の脅威からインフラを防御してください。

Amazon CloudTrail

1. CloudTrailログファイル検証の有効化 (優先度:中)

ベースライン:

CloudTrailログファイル検証が有効化されているかを確認します。

説明:

CloudTrailログファイルの安全性を検証し、特定のS3バケットに配信された後にファイルが変更されているかを確認します。ログファイルは変更されないことが理想です。

推奨:

ファイル安全性検証機能を有効化して、ログファイルを確認しCloudTrailエージェントがそれらをS3バケットに配信後に修正や削除が行われているかを分析します。

2. CloudTrailグローバルサービスの有効化 (優先度:高)

ベースライン:

CloudTrailグローバルサービスが有効化されていることを確認します。

説明:

CloudTrailグローバルサービスを有効化してAWSアカウント内のAPIアクティビティをよりよく可視化します。これによりセキュリティを高めて、IAMイベントといった特定のリージョンにないアクティビティを取得することでアカウントの管理を簡単にします。 1ロケーションから全リージョンのトレイル設定を管理し、使われていないリージョンのAPI要求を記録して異常なアクティビティを検知します。

メモ:複数のトレイル内のグローバルサービスの有効化は複数エントリを作成します。これを防止するには、単一トレイルのみ有効化してその他トレイルは無効化します。

推奨:

CloudTrailグローバルサービスを有効化して、AWSアカウントをより良く管理してクラウドインフラのセキュリティを強化します。

3. CloudTrailログ保存時にAWS KMSキーを用いて暗号化しているかを確認 (優先度:中)

ベースライン:

CloudTrailログ保存時にAWSキー管理サービス (KMS)を使用して暗号化されているかを確認します。

説明:

CloudTrailログはKMSキーにサーバーサイドの暗号化が行われるように設定でき、ログを保護します。CloudTrailバケットのセキュリティを強化して組織のログファイルを読み取れるユーザーをよりよく制御できます。

推奨:

CloudTrailログ保存時にKMSキーを使用して暗号化を行うことでセキュリティを強化します。

4. ログメトリックフィルターとアラームが存在しているかを確認 (優先度:中)

ベースライン:

CloudTrail設定の変更を検知するためにCloudWatchメトリックフィルターとアラームが存在していることを確認します。

説明:

メトリックフィルターはCloudTrailからCloudWatchへのログデータから数値を作成するために使用されます。入力ログに基づいてアラームを設定でき、CloudWatch内でフィルターの統計を可視化できます。設定の変更がCloudTrailサービスレベルであるたびにCloudWatchアラームが発生します。CloudWatchアラームを使用してCloudTrailの設定変更検知してサービス設定の安全性を維持します。

推奨:

ログメトリックフィルターとアラームの両方を有効にします。

5. CloudTrailを有効化し少なくとも1つのマルチリージョントレイルを設定 (優先度:高)

ベースライン:

CloudTrailを有効化し、少なくとも1つのマルチリージョントレイルで設定されていることを確認します。

説明:

マルチリージョンCloudTrailを作成する際、全てのリージョン(組織トレイルの場合はすべてのアカウント)でトレイルが設定されます。共有S3バケットにデータを送信するトレイルは分離されています。そのため、マルチリージョントレイル作成によりデータが中心的に収集されます。

推奨:

CloudTrailを有効化して少なくとも1つのマルチリージョントレイルに設定します。

6. CloudTrailログファイル検証を有効化 (優先度:中)

リソースレベルの説明:

CloudTrailログファイル検証を有効化します。これを行わないとリソースの可用性が損なわれます。

ベースライン:

CloudTrailログファイル検証が有効化されているかを確認します。

説明:

CloudTrailログファイルの安全性を検証し、特定のS3バケットへの配信後にファイルに変更があったかを確認します。ログファイルが変更されないようにするのを推奨します。

推奨:

ファイル安全性の検証機能を有効化して、ログファイルを確認しS3バケットへの配信後に修正や削除が行われているかを確認します。

7. CloudTrailグローバルサービスの有効化 (優先度:高)

リソースレベルの説明:

CloudTrailグローバルサービスの有効化によりリージョナルおよびグローバルイベントが収集されるようになり、AWSアカウントのAPIアクティビティ全体をより良く可視化します。

ベースライン:

CloudTrailグローバルサービスが有効化されているかを確認します。

説明:

CloudTrailグローバルサービスを有効化してAWSアカウント内のAPIアクティビティをよりよく可視化します。これによりセキュリティを高めて、IAMイベントといった特定のリージョンにないアクティビティを取得することでアカウントの管理を簡単にします。 1ロケーションから全リージョンのトレイル設定を管理し、使われていないリージョンのAPI要求を記録して異常なアクティビティを検知します。

複数のトレイルのグローバルサービスを有効化すると複数のエントリが作成されるため、単一のトレイルのみを有効化してその他トレイルは無効化してください。

推奨:

Enable CloudTrailグローバルサービスを有効化してAWSアカウントの管理をより良くしクラウドインフラのセキュリティを強化します。

8. S3バケットCloudTrailログがパブリックにアクセスできないことを確認 (優先度:高)

リソースレベルの説明:

パブリックなS3バケットCloudTrailログはリソースのセキュリティに影響を及ぼします。

ベースライン:

S3バケットCloudTrailログがパブリックにアクセスできるかどうかを確認します。

説明:

Amazon S3バケットとオブジェクトはデフォルトでプライベートに設定されていて、バケットを作成したユーザーのみがそのバケットにアクセスできます。CloudTrailログにはアカウントのAPIアクティビティの詳細なイベントが含まれている可能性があります。CloudTrailログ用に付与した権限はS3バケットに保存されており安全ではありません。これはアカウントのログデータに悪意のあるユーザーがアクセスしてしまう可能性があり、未認証のアクセスのリスクが発生します。

推奨:

CloudTrailログに関連付けられているS3バケットがパブリックにアクセスできないことを確認し、アカウントのログデータを保護します。

9. CloudTrailログの保存時にAWS KMSキーを使用して暗号化していることを確認 (優先度:中)

リソースレベルの説明:

KMSキーを用いて保存時に暗号化されていないCloudTrailログはセキュリティの脆弱性が発生します。

ベースライン:

CloudTrail設定の変更を検知するためにCloudWatchメトリックフィルターとアラームが存在していることを確認します。

説明:

CloudTrailログはKMSキーにサーバーサイドの暗号化が行われるように設定でき、ログを保護します。CloudTrailバケットのセキュリティを強化して組織のログファイルを読み取れるユーザーをよりよく制御できます。

推奨:

KMSキーを用いてCloudTrailログ保存時に暗号化を行うことでセキュリティを強化します。

10. CloudTrailを有効化し少なくとも1つのマルチリージョントレイルを設定 (優先度:高)

リソースレベルの説明:

少なくとも1つのマルチリージョンを設定していないCloudTrailのトレイルはリソースの可用性を損ねます。

ベースライン:

CloudTrailログファイル検証が有効化されているかを確認します。

説明:

マルチリージョンCloudTrailを作成する際、全てのリージョン(組織トレイルの場合はすべてのアカウント)でトレイルが設定されます。共有S3バケットにデータを送信するトレイルは分離されています。そのため、マルチリージョントレイル作成によりデータが中心的に収集されます。

推奨:

CloudTrailを有効化し少なくとも1つのマルチリージョントレイルを設定します。

11. ログメトリックフィルターとアラームの両方が存在することを確認 (優先度:中)

リソースレベルの説明:

ログメトリックフィルターとアラームの両方が有効化されてリソースの高い可用性を確保します。

ベースライン:

CloudTrail設定の変更を検知するためにCloudWatchメトリックフィルターとアラームが存在することを確認します。

説明:

メトリックフィルターはCloudTrailからCloudWatchへのログデータから数値を作成するために使用されます。入力ログに基づいてアラームを設定でき、CloudWatch内でフィルターの統計を可視化できます。設定の変更がCloudTrailサービスレベルであるたびにCloudWatchアラームが発生します。CloudWatchアラームを使用してCloudTrailの設定変更検知してサービス設定の安全性を維持します。

推奨:

ログメトリックとアラームの両方が有効化されていることを確認します。

Amazon Key Management Service (KMS)

1. KMSキーのローテーションの有効化 (優先度:中)

ベースライン:

KMSキーがローテーションされているかどうかを確認します。

説明:

KMSキーのローテーションは新しいキーを使用して暗号化されたデータには、以前の公開されたキーを使用してアクセスできないため、キーの悪影響を減らすのに役立ちます。

推奨:

顧客作成KMSキーのローテーションを確認しキーに関連する問題を削減します。

2. KMSキーのローテーションの有効化 (優先度:中)

リソースレベルの説明:

顧客作成のKMSキーのローテーションを有効化してキーを保護します。

ベースライン:

KMSキーがローテーションされているかどうかを確認します。

説明:

KMSキーのローテーションは新しいキーを使用して暗号化されたデータには、以前の公開されたキーを使用してアクセスできないため、キーの悪影響を減らすのに役立ちます。

推奨:

顧客作成のKMSキーのローテーションを有効化してキーに関連する問題を削減します。

DocumentDB

1. あまり使用していないDocumentDBインスタンス (優先度:高)

リソースレベルの説明:

DocumentDBインスタンスがあまり使用されていないかを確認します。

ベースライン:

Amazon DocumentDBの管理データベースサービスのリソース使用率を確認し、過去48時間でCPU使用率が2%未満である場合にあまり使用されていないとみなされます。

推奨:

Amazon DocumentDBの場合、インスタンスタイプと使用時間に基づいて請求が発生します。あまり使用していないインスタンスを特定し停止することでコストを削減します。

2. Amazon DocumentDB - 高いなインスタンス使用率 (優先度:高)

ベースライン:

Amazon DocumentDBのパフォーマンスカウンターを確認し、過剰に使用されているインスタンスがあるかを確認します。

説明:

DocumentDBインスタンスは過去7日間のCPU使用率の日次平均が90%を超えている場合に過剰に使用されているとみなされます。

推奨:

インスタンスサイズの変更を検討します。

Amazon Elastic Container Service (ECS)

1. Amazon ECSタスク定義 - ネットワークモードとユーザー定義(優先度:高)

ベースライン:

ホストネットワークモードを持つECS監視対象タスク定義で、最新のACTIVEリビジョンに昇格された権限があり、ユーザーがコンテナー定義で非ルートユーザーとして指定されているかどうかを確認します。

説明:

タスク定義に昇格権限がある場合、ユーザーは特別に構成を適用できます。この制御は、タスク定義でホストネットワーキングが有効化されている際の予期しない権限昇格を確認しますが、顧客には昇格した権限を適用されません。

推奨:

昇格した権限を持たないタスク定義の更新を検討します。

タスク定義を更新する際、以前のタスク定義から発生した実行中のタスクは更新されません。実行中のタスクを更新するには、新規のタスク定義でタスクを再デプロイする必要があります。

必要な権限:

  • "ecs:DescribeClusters"
  • "ecs:ListTasks"
  • "ecs:DescribeTaskDefinition"

2. Amazon ECSサービス - パブリックIPの自動割り当て(優先度:高)

ベースライン:

監視ECSクラスターサービスが自動割り当てのパブリックIPを持つか確認します。

説明:

Amazon ECSインスタンスがパブリックIPを持つ場合、そのAmazon ECSインスタンスはインターネットからアクセスできます。Amazon ECSサービスはパブリックにアクセスできるように設定すべきではありません。アクセスできると、コンテナアプリケーションサーバーに意図しない通信を許可することになってしまいます。

推奨:

クラスターサービスの作成後、パブリックIPの自動割り当てを無効にするため、新規のクラスターサービスを作成します。

必要な権限:

  • "ecs:DescribeServices"

3. Amazon ECSタスク定義 - ホストプロセスネームスペース(優先度:高)

ベースライン:

監視しているタスク定義の直近のACTIVEリビジョンでホストのプロセスネームスペースが共有されているかを確認します。

説明:

プロセスID (PID)ネームスペースは、プロセス間の間隔を制御します。システムプロセスの可視化を防ぎ、PIDを再利用できるようにします。ホストのPIDネームスペースがコンテナと共有されていると、コンテナーで、ホストシステムのすべてのプロセスが表示されます。これにより、ホストとコンテナー間のプロセスレベル単離の利点が削減されます。その結果、未認証のアクセスにより、ホストが様々な操作を処理してしまいます。

推奨:

タスクにPIDモードを用いたタスク定義の更新を検討します。

タスク定義を更新する際、以前のタスク定義から発生した実行中のタスクは更新されません。実行中のタスクを更新するには、新規のタスク定義でタスクを再デプロイする必要があります。

Required Permissions:

  • "ecs:DescribeClusters"
  • "ecs:ListTasks"
  • "ecs:DescribeTaskDefinition"

4. Amazon ECSコンテナ定義 - 昇格権限(優先度:高)

ベースライン:

ECSタスク定義の直近のACTIVEリビジョン内のECSコンテナ定義で特権パラメーターが有効になっているかを確認します。

説明:

特権パラメーターが有効化されているコンテナ定義では、ホストコンテナインスタンスに昇格権限(rootユーザーと同じ)が与えられます。特権でのコンテナの実行は推奨されていません。

推奨:

昇格権限のないコンテナ定義でのタスク定義の更新を検討します。

タスク定義を更新する際、以前のタスク定義から発生した実行中のタスクは更新されません。実行中のタスクを更新するには、新規のタスク定義でタスクを再デプロイする必要があります。

必要な権限:

  • "ecs:DescribeClusters"
  • "ecs:ListTasks"
  • "ecs:DescribeTaskDefinition"

5. Amazon ECSコンテナ定義 - ルートファイルシステムの読み取り専用アクセス(優先度:中)

ベースライン:

ECSタスク定義の直近のACTIVEリビジョン内のECSコンテナ定義で、rootファイルシステムへの読み取り専用アクセスが有効化されていることを確認します。

説明:

このオプションを有効にすると、ECSコンテナインスタンスのファイルシステムは、そのファイルシステムフォルダとディレクトリに対する読み取り/書き込み権限がない限り、改ざんまたは書き込みができないため、セキュリティ攻撃が削減します。この制御は、最小特権の原則にも準拠しています。

推奨:

読み取り専用rootファイルシステムオプションが有効化されたコンテナ定義で、タスク定義の更新を検討します。

タスク定義を更新する際、以前のタスク定義から発生した実行中のタスクは更新されません。実行中のタスクを更新するには、新規のタスク定義でタスクを再デプロイする必要があります。コンテナ内で稼働しているOSソフトウェアは、適切な機能のルートファイルシステムに書き込む必要があります。コンテナ使用量を確認して、読み込み専用アクセスを付与するかどうかを判断します。

必要な権限:

  • "ecs:DescribeClusters"
  • "ecs:ListTasks"
  • "ecs:DescribeTaskDefinition"

6. Amazon ECSコンテナ定義 - 環境変数のシークレット(優先度:高)

ベースライン:

直近のACTIVE ECSタスク定義内で定義されている、ECSコンテナ定義の環境変数にシークレットが存在しているかを確認します。

説明:

環境変数はアプリケーションの挙動の設定や変更に役立てられます。コンテナ設定のための環境変数を取得に用いられるコマンド"docker inspect"には欠点があります。これを用いないことで、コンテナに重要な情報をパスしないようにします。

推奨:

AWS Systems Manager Parameter Storeで、組織のセキュリティ体制を向上できます。Parameter Storeを使用することで、コンテナインスタンスへの直接的なパスやハードなコーディングを行うことなく、シークレットと認証情報を保存できます。

必要な権限:

  • "ecs:DescribeClusters"
  • "ecs:ListTasks"
  • "ecs:DescribeTaskDefinition"

7. Amazon ECSクラスタ - コンテナ分析(優先度:中)

ベースライン:

クラスターで、コンテナ分析が有効化されているかを確認します。

説明:

監視は、Amazon ECSクラスターの信頼性、可用性、パフォーマンスを維持するために重要です。AWS CloudWatchコンテナ分析を使用して、アプリケーションとマイクロサービスからメトリックとログを収集、集約、要約を行います。CloudWatchは、CPU、メモリ、ディスク、ネットワークといった様々なリソースのメトリックを自動で収集します。コンテナ分析で、コンテナ再起動失敗といった診断情報を取得して、問題の特定と早期解決に役立てられます。

推奨:

コンテナ分析は、クラスターを作成した後には有効にできません。そのため、コンテナ分析を有効にしたクラスターの新規作成を検討します。

必要な権限:

  • "ecs:DescribeClusters"

Amazon Virtual Private Cloud (Amazon VPC)

1. Amazon EC2 VPCセキュリティグループ:膨大なルール(優先度:中)

ベースライン:

50を超えるインバウンドとアウトバウンドルールを持つAmazon EC2 VPCセキュリティグループを確認し識別します。

説明:

VPCでインスタンスを起動する場合、インスタンスに関連付けられているセキュリティグループを5つまで特定します。各セキュリティグループで、入力・出力トラフィックを制御するルールを追加することができます。セキュリティグループの数がルールよりも大きい場合、インスタンスのパフォーマンスに影響を及ぼします。

推奨:

必要のないルールや重複しているルールをEC2 VPCセキュリティグループから削除してください。

必要な権限:

"ec2:DescribeInstances"、"ec2:DescribeSecurityGroups"

2. 使用されていない仮想プライベートゲートウェイ(優先度:低)

ベースライン:

Amazon Virtual Private Gateways(VGW)の設定を確認し、VPN接続でVPC側に接続されていない未使用のVGWを識別します。

説明:

未使用の全VGWをAWSアカウントから削除し、管理を向上させたり、サービス上限への到達を回避したりできます。

推奨:

AWSアカウント内にある未使用のVGWを特定して削除し、サービスのアクセス制限を軽減します。デフォルトでは、AWSリージョン1つにつき、使用と未使用をふくめて5 VGWという制限があります。

必要な権限:

"ec2:DescribeVpcs"

3. Amazon VPNチャネル:アップ(優先度:高)

ベースライン:

AWSの仮想プライベートネットワーク(VPN)チャネルのステータスをアップに保つことで、VPNのネットワークトラフィックを確保します。

説明:

VPNチャネルを監視し続け、障害があった際に迅速なアクションを行えます。その結果、アップ時間の最大化を行うことができ、Amazon VPN接続のネットワークトラフィックを確保することができます。

推奨:

AWS VPN接続チャネルがオフラインの場合、ファイアーウォール条件でVPN接続が許可されていることを確認してください。

必要な権限:

"ec2:DescribeVpnConnections"

4. Amazon VPC:ピアリング接続設定(優先度:中)

ベースライン:

Amazon VPCピアリング接続設定が目的のルーティング条件に沿っているかを確認してください。

説明:

VPCピアリング接続のルーティングテーブルの設定により、目的のリソース間のトラフィックを制限します。こうすることで、これらルートにないAWSリソースがピアリングVPCにアクセスできなくなるため、セキュリティ障害の影響を最小限にする効果的な方法になり得ます。

推奨:

正しいルーティング条件が設定されているピアリングVPCにルーティングテーブルが関連付けられているかを確認してください。

必要な権限:

"ec2:DescribeVpcPeeringConnections"、"ec2:DescribeRouteTables"

5. Amazon VPC:フローログ(優先度:中)

ベースライン:

仮想プライベートクラウド(VPC)のフローログ機能が全てのAWS領域に有効化されているかどうかを確認してください。

説明:

有効にすると、VPCフローログがVPC間のネットワークトラフィックデータの収集を開始します。その結果、セキュリティの問題を検出しトラブルシューティングができ、ネットワークのアクセスルールの見直しにも役立ちます。また、接続要求の拒否や普段はないデータ転送などといった不自然な動きが引き起こされた場合にその通知を受け取ることができます。

推奨:

AWS VPCのフローログを有効にしてください.

必要な権限:

"ec2:DescribeVpcs"、"ec2:DescribeFlowLogs"

6. デフォルトVPC(優先度:中)

ベースライン:

セキュリティのベストプラクティスに従って、AWSアプリケーションがデフォルトのVPCに配置されていないことを確認します。

説明:

デフォルトVPCはすぐに使い始められて、ブログやWebサイトのようなパブリックなインスタンスを起動することに適しています。しかし、複雑なアプリケーションを配置したり多層なアーキテクチャを利用する場合には、その要件に合ったデフォルトではないVPCの作成が必要となることがあります。

推奨:

要件に合った自身の(デフォルトではない)VPCを作成し、カスタムAWSアプリケーションにそれを使用します。

必要な権限:

"ec2:DescribeVpcs"、"ec2:DescribeInstances"

7. 無効なネットワークACL denyルール(優先度:高)

ベースライン:

AmazonネットワークACL denyルールがVPC設定内で有効であるかを確認します。

説明:

AWSネットワークACLは仮想プライベートクラウド(VPC)に追加する防御層で、基本的には特定のポートやIPレンジへのアクセスの許可/拒否といったルールを設定することができるネットワークファイアーウォールです。AWS NACLには順番に評価されるルールの番号リストがあります。最も低い番号(例:100)のルールから開始され、関連付けられたVPCサブネットで、トラフィックか許可されているかどうかを判別します。ネットワークACL内のdenyルールの順番は重要です。これらはその順番に評価されるため、矛盾する可能性のあるより高い番号のルールを考慮することなく無効や不足のルールを適用できるためです。

推奨:

必要なポートへのトラフィックをサブネットレベルで止めるために、無効または誤って設定されているAWS NACLのdenyルール設定を見直してください。

必要な権限:

"ec2:DescribeNetworkAcls"

8. ネットワークACL:無制限な入力トラフィック(優先度:中)

ベースライン:

全てのポートから入力/出力トラフィックを許可しているAmazonネットワークACLがないことを確認します。

説明:

アプリケーションに必要なポートのみを開くことでサブネットの入力/出力トラフィックを調整すると、VPCのセキュリティ層が追加されて、DoS攻撃やDDoS攻撃といった悪意のある行為を防ぐことができます。AWS NACL入力ルールを管理して、最小特権の規則を設けてサブネットレベルで認証されていないアクセスを削減することができます。

推奨:

AWS NACL入力ルール設定を更新し、特定のポートやポート範囲での入力トラフィックを許可します。

必要な権限:

"ec2:DescribeNetworkAcls"

9. ネットワークACL:制限のない出力トラフィック(優先度:中)

ベースライン:

入力/出力トラフィックが全てのポートで許可されているAmazonネットワークACLがないことを確認します。

説明:

アプリケーションで必要なポートのみを開き、いくつかのサブネットの出力トラフィックを制御を行うことで、VPCのセキュリティ層(セキュリティグループの後の防御層)が追加されます。AWS NACL出力ルールを管理して、最小特権の規則を設けてサブネットレベルで認証されていないアクセスを削減することができます。

推奨:

AWS NACL入力ルール設定を更新し、特定のポートやポート範囲での入力トラフィックを許可します。

必要な権限:

"ec2:DescribeNetworkAcls"

10. プライベートサブネット:ルートテーブルの作成(優先度:中)

ベースライン:

サブネットのルートを制御するために、カスタムルートテーブルが作成されてプライベートサブネットに関連付けられているかを確認します。

説明:

プライベートサブネットのルーティングを制御するのにカスタムルートテーブルを作成する必要があります。そのVPCリソースが作成されると、Web、アプリケーション、データ層内の全てのプライベートサブネットは新しくルートテーブルに関連付けることができます。ルートテーブルにはこれまでネットワークトラフィックの判別に使用していたルートセットがあります。プライベートサブネットに関連付けられているカスタムルートテーブルにはデフォルトで、AWS NATゲートウェイへのルートポイント(0.0.0.0/0)のみが存在します。プライベートサブネットは一度に一つのルートテーブルのみ関連付けることができますが、同一のルートテーブルは複数のプライベートサブネットに関連付けられます。

推奨:

カスタムルートテーブルを作成し、それをプライベートサブネットに関連付けてください。

必要な権限:

"ec2:DescribeRouteTables"

11. Amazon VPC:露出したエンドポイント(優先度:中)

ベースライン:

Amazon VPCエンドポイントが全員にさらされてないことを確認します。

説明:

アクセスポリシーで、主成分値を"*"に設定している場合、VPCエンドポイントは全てのIAMユーザーやAWSアカウントの認証情報を用いたVPC内のサービスに完全にアクセスできます。こうしてアクセスを許可することは悪い習慣でありセキュリティ問題につながります。アクセスポリシーを更新することで、サポートしているサービスやリソースへの認証されていない全ての要求を止めることができます。

推奨:

アクセスポリシーを更新することで、Amazon VPCエンドポイントへのアクセスを制限します。

必要な権限:

"ec2:DescribeVpcEndpoints"

12. VPCエンドポイントの使用(優先度:中)

ベースライン:

VPCとAWSサービスの接続にAmazon仮想プライベートクラウド(VPC)エンドポイントが使われているかを確認します。

説明:

VPCエンドポイントを用いると、パブリックIPアドレスやインターネットへのトラフィックデータ転送の必要がなく、自身のAmazon仮想プライベートクラウドから特定のAWSサービスへプライベートなアクセスを行うことができます。

推奨:

VPCエンドポイントを有効にして、プライベートリンクを介してVPCネットワークの外部にある特定のAWSサービスに接続します。

必要な権限:

"ec2:DescribeVpcEndpoints"

13. 全VPCのデフォルトセキュリティグループを確認してトラフィックを制限 (優先度:低)

ベースライン:

トラフィックを制限しているVPCインタンスのデフォルトセキュリティグループを確認します。

説明:

AWSデフォルトセキュリティグループはインバウンドとアウトバウンドの全てのトラフィックを制限していません。デフォルトではインバウンドのトラフィックは全て拒否し、アウトバウンドは全て許可するようにするように設定されています。VPCのデフォルトセキュリティグループを設定してトラフィックを制限して、不本意なアウトバウンドトラフィックを制限します。

推奨:

EC2のデフォルトセキュリティグループはすべてのインバウンドトラフィックを制限しており、ユーザーは新規のセキュリティグループを使用する必要があります。

14. Amazon VPC - サブネット自動割り当てパブリックIP(優先度:中)

Baseline:

Amazon VPCサブネットでパブリックIPv4アドレス自動割り当てが有効化されているか確認します。

説明:

パブリックIPv4アドレスはインターネットからアクセスできるIPアドレスです。IPv4アドレスの自動割り当てが有効化されているサブネットで起動しているインスタンスはプライマリーネットワークインターフェースにパブリックIPが割り当てられます。

推奨:

VPCサブネットでパブリックIPv4アドレスの自動割り当てが必要かを確認し、必要でなければ無効化します。

必要な権限:

  • "ec2:DescribeSubnets"

15. Amazon VPC - 使用していないネットワークACL(優先度:低)

ベースライン:

サブネットに関連付いていないACLがあるか確認します。

説明:

ネットワークACLは入出トラフィックをサブネットレベルで制御するために使用されます。使用されていないリソースの存在はセキュリティリスクが生じます。使用していないACLを取り除き、AWSアカウントを安全に維持します。

推奨:

使用していないネットワークACLを削除します。

必要な権限:

  • "ec2:DescribeNetworkAcls"

16. Amazon VPC - トランジットゲートウェイVPCアタッチメント(優先度:高)

ベースライン:

VPCトランジットゲートウェイでVPCアタッチメントリクエストが許可されているか確認します。

説明:

[共有添付ファイルの自動承認] オプションをオンにすると、リクエストや添付ファイルの発信元のアカウントを確認せずに、クロスアカウントVPC添付ファイルを自動的に受け入れるようにトランジットゲートウェイが設定されます。承認と認証のベストプラクティスでは、この機能をオフにして、承認されたVPCアタッチメント要求のみが受け入れられるようにします。

推奨:

トランジットゲートウェイの共有アタッチメント自動許可の無効化を行います。

Amazon Network Address Translation (NAT)ゲートウェイ

1. NATゲートウェイへのElastic IPの割り当て(優先度:中)

ベースライン:

AWSアカウント内に配置したい各NATゲートウェイにElastic IPを割り当てていることを確認します。

説明:

NATゲートウェイにElastic IPを割り当てると、そのNATデバイスを用いてインターネットや他のAWSサービスに接続できるようになりますが、インスタンスがインターネットに接続されるのを防止します。VPCで起動した別のインスタンスにアドレスを再マッピングすることで、EC2の障害を防止できます。

推奨:

AWS Elastic IPをVPC内に配置したい各NATゲートウェイに割り当ててください。

必要な権限:

"ec2:DescribeVpcs"、"ec2:DescribeNatGateways"

2. Amazon VPC:管理NATゲートウェイ(優先度:中)

ベースライン:

NATゲートウェイサービスで管理されているAWS VPCが高可用性によって運用されていることを確認します。

説明:

AWSは2つのタイプのNATデバイスを提供しています。管理NATゲートウェイとNATインスタンスです。高可用性のために冗長化を行っているNATゲートウェイサービス管理AWS VPCを用いると、プライベートサブネット内にあるEC2インスタンスのインターネットやその他のAWSコンポーネントへの接続が可能となります。

推奨:

AWS VPCネットワークの管理NATゲートウェイサービスを有効化してください。

必要な権限:

"ec2:DescribeVpcs"、"ec2:DescribeNatGateways"

3. NATゲートウェイ:マルチA-Z(優先度:中)

ベースライン:

NATゲートウェイが少なくとも2つのアベイラビリティゾーン(AZ)に配置されていることを確認します。

説明:

複数のアベイラビリティゾーンやにEC2インスタンスがあり、これらを1つのNATゲートウェイで共有している場合、AZに障害が発生するとNATゲートウェイは使用できなくなり、その他のAZ内のリソースはインターネットアクセスができなくなります。少なくとも2つのAZでNATゲートウェイを配置することで障害耐性のあるシステムを作成してください。

推奨:

障害のあった箇所を削除し、少なくとも2つのアベイラビリティゾーンにNATゲートウェイを配置することで、アプリケーションの可用性を高めます。

必要な権限:

"ec2:DescribeVpcs"、"ec2:DescribeSubnets"

Amazon EC2オートスケーリング

1. Auto Scalingグループ(EC2):マルチA-Z (優先度:中)

ベースライン:

単一のアベイラビリティゾーン(AZ)でインスタンスが起動しているAuto Scalingグループを確認します。

説明:

すでに広く知られていますが、EC2インスタンスのAWSシステムは高い可用性のデータセンターにホストされていて、Auto Scalingは複数のアベイラビリティゾーンにAuto Scalingグループを分配することで、その高い可用性を提供しています。

推奨:

障害のあったところを取り除くことで、アプリケーションの可用性を高めます。

必要な権限:

"autoscaling:DescribeAutoScalingGroups"

2. 起動設定:存在しないセキュリティグループ(優先度:高)

ベースライン:

無効および削除されたセキュリティグループを含む起動設定を確認し、識別します。

説明:

Auto Scalingで作成されたEC2インスタンスのタイプ(AMI、インスタンスタイプ、ストレージ、タグなど)を起動設定で判定します。起動設定に存在しないセキュリティグループ名があった場合、インスタンスの起動は失敗します。

推奨:

起動設定を新規作成し、それをAuto Scalingグループに適用してください。

必要な権限:

"autoscaling:DescribeLaunchConfigurations"

3. ロードバランサーに関連付けられているオートスケーリンググループの正常性チェック (優先度:中)

リソースレベルの説明:

ロードバランサーに関連付けられているASGはロードバランサーの正常性を確認し、リソースの可用性を確保します。

ベースライン:

ロードバランサーに関連付けられているオートスケーリンググループ (ASG)はロードバランサーの正常性チェック設定を行います。

説明:

オートスケーリンググループのデフォルトの正常性チェックはEC2のステータスのみ確認し、ロードバランサーによる正常性チェックが失敗した場合にも、ASGはインスタンスを異常と判別しません。ロードバランサーの正常性チェックを使用するには、ASGを設定することでロードバランサーからのインスタンス正常性を判別できます。

推奨:

ロードバランサーの正常性チェックを追加して、ASGのインスタンスの正常性チェックをEC2ステータスとロードバランサーの正常性の両方をチェックするようにします。

4. Amazon EC2インスタンスオートスケーリング - 起動テンプレートメタデータ応答ホップ制限(優先度:高)

ベースライン:

Amazon EC2インスタンスオートスケーリンググループの起動テンプレート設定でメタデータ応答ホップ制限が2以上であるかを確認します。

説明:

Instance Metadata Service (IMDS)ではEC2インスタンスのメタデータ情報が提供され、アプリケーション設定に役立てられます。メタデータサービスのHTTP PUT応答をEC2インスタンスにのみ制限し、IMDSの未認可の使用を防止します。
IPパケットのThe Time To Live (TTL)項目が各ホップで削減されます。この削減は、パケットのEC2外への通信を防止します。メタデータの応答ホップ制限が2以上の場合、トークンはEC2インスタンスに維持されます。

推奨:

メタデータの応答ホップ制限を2以上に修正します。

起動テンプレートを修正すると、新規バージョンのテンプレートが作成されます。古いバージョンの起動テンプレートは削除します。

必要な権限:

  • "ec2:DescribeLaunchTemplates"
  • "ec2:describeLaunchTemplateVersions"

5. Amazon EC2インスタンスオートスケーリング - 起動テンプレートパブリックIP自動割り当て(優先度:中)

ベースライン:

EC2オートスケーリンググループに関連付いている起動テンプレートで、ネットワークインターフェースへのパブリックIP割り当てが設定されているか確認します。

説明:

オートスケーリンググループ起動設定におけるEC2インスタンスは、たいていの場合パブリックIPを関連付けるべきではありません。EC2インスタンスへはインターネットに公開するのではなく、ロードバランサーを経由してアクセスするよう構築します。

推奨:

オートスケーリング起動グループのパブリックIPアドレス自動割り当てを無効にします。

起動テンプレートを修正すると、新規バージョンのテンプレートが作成されます。古いバージョンの起動テンプレートは削除します。

必要な権限:

  • "ec2:DescribeLaunchTemplates"
  • "ec2:describeLaunchTemplateVersions"

6. Amazon EC2インスタンスオートスケーリンググループ (EC2) - 起動テンプレートの使用(優先度:中)

ベースライン:

EC2オートスケーリンググループがEC2起動テンプレートで作成されているか確認します。

説明:

EC2オートスケーリンググループは、EC2起動テンプレートまたは起動設定から作成できますが、起動テンプレートを使用してオートスケーリンググループを作成すると、最新の機能や環境にアクセスできます。

推奨:

EC2オートスケーリンググループの作成を起動テンプレートを使用して行います。

必要な権限:

  • "autoscaling:DescribeAutoScalingGroups"

Amazon Elastic IP

1. マップされていないElastic IPアドレス(優先度:中)

ベースライン:

EC2インスタンスやネットワークインターフェースに割り当て済みElastic IPアドレスが関連付いているか確認します。

説明:

Elastic IPは静的でパブリックなIPv4アドレスです。Elastic IPをEC2インスタンスやネットワークインターフェースに関連付けた場合、インスタンスの既存のパブリックIPアドレスは開放され、利用可能IPプールに戻ります。Elastic IPアドレスにおいて、IPアドレスとリソースの関連付けを解除し、同一アカウントの別のリソースに再度関連付けることで、インスタンスやリソースの障害を防止することができます。

推奨:

利用効率の向上のため、アマゾンウェブサービスはElastic IPをリージョンごとに5つまでと全てのアカウントで制限しています。また、未使用のアドレスには少額の時間料金がかかります。そこで、Elastic IPをアクティブなインスタンスやインターフェースに関連付けるか、またはElastic IPをプールに戻すかしてください。

必要な権限:

"ec2:DescribeInstances"

2. 未使用のEC2 Elastic IPアドレス(優先度:低)

ベースライン:

未使用のEC2 Elastic IPアドレスがないか確認します。

説明:

Elastic IP(EIP)の利用で、インスタンスやソフトウェアに障害があっても、同一アカウント内のインスタンス間でIPを素早くマッピングし直せば、障害を隠すことが可能です。AWSの毎時課金は、EIPアドレスがEC2インスタンスやElasticNetwork Interface(ENI)に関連付けられていない場合でも発生することも注意してください。

推奨:

使用していないEC2 EIPアドレスは削除して、不必要な課金を防止できます。

AWS Secrets Manager

1. AWS Secrets Manager - 自動ローテーション(優先度:中)

ベースライン:

AWS Secrets Managerシークレットで自動ローテーションが有効化されているか確認します。

説明:

AWS Secrets Managerは、組織のセキュリティを向上するのに役立ちます。シークレットローテーションは短い期間のシークレットを長い期間に置き換える際に使用されます。シークレットのローテーションにより未認可のユーザーがシークレットを使用する時間を削減できます。

推奨:

シークレットの自動ローテーションを有効にします。

必要な権限:

  • "secretsmanager:ListSecrets"

2. AWS Secrets Manager - ローテーション後の最大日数(優先度:中)

ベースライン:

シークレットが90日に一度ローテーションされているかを確認します。

説明:

シークレットローテーションは、そのシークレットの未認可な使用のリスクを削減します。その他にもデータベース認証情報、パスワード、サードパーティAPIキー、任意のテキストなどもこれに含まれます。そのため、シークレットを長い期間更新していない場合、未認可な使用のリスクが生じます。

推奨:

シークレットローテーション設定を行い、長くとも90日に1度ローテーションを行います。

必要な権限:

  • "secretsmanager:ListSecrets"

3. AWS Secrets Manager - 失敗したローテーション(優先度:中)

ベースライン:

設定しているローテーションスケジュールベースで、シークレットのローテーションが正常に行われているか確認します。

説明:

シークレットの自動ローテーションを設定するのに加えて、それらローテーションがスケジュール通りに行われている必要があります。自動ローテーションが失敗すると、AWS Secrets Managerに設定エラーが発生することがあります。

推奨:

失敗したシークレットローテーションのトラブルシュートを行います。

必要な権限:

  • "secretsmanager:ListSecrets"

4. AWS Secrets Manager - 使用していないシークレット(優先度:中)

ベースライン:

シークレットに直近90日間でアクセスがあるかを確認します。

説明:

使用していないシークレットを削除することは、シークレットのローテーションと同じくらい重要です。この削除により必要のないユーザーアクセスを削減し、またAWS Secrets Managerのコスト削減にもつながります。

推奨:

使用していないシークレットの削除を行います。

必要な権限:

  • "secretsmanager:ListSecrets"

5. AWS Secrets Manager - 顧客管理暗号化(優先度:低)

ベースライン:

シークレットが顧客管理キー(AWSキー管理サービス)で暗号化されているか確認します。

説明:

AWS-managed Key Management Service (KMS)キー(デフォルト)または顧客マスターキー (CMK)でシークレットは暗号化できます。デフォルトの暗号化が行われているシークレットは同じAWS管理キーで暗号化されており、サービスにより作成されているため編集できません。細かな設定と異なるKMSキーで暗号化するためにCMKの方式を使用します。

推奨:

AWS管理KMSではなく、AWS KMS CMKを使用してシークレットを暗号化します。

必要な権限:

  • "secretsmanager:ListSecrets"

ビデオ

AWS監視のベストプラクティスについてのビデオです。

 

コンプライアンスチェック

AWSガイダンスレポートで、ベストプラクティスのコンプライアンスチェックを行えます。脆弱性の可能性について確認でき、クラウド環境がグローバルなセキュリティやコンプライアンス標準に則っているかを分析します。

Site24x7では次のセキュリティ標準でコンプライアンスチェックを行います。

  • PCI DSS:The Payment Card Industry Data Security Standard (PCI DSS)に基づいて、クレジットカード情報を安全な環境に保持し、処理、保存、転送を行います。
  • GDPR:The General Data Protection Regulation (GDPR)は、企業が個人データの処理中に顧客の個人データとプライバシーを保護する欧州全域の規制です。
  • NIST:National Institute of Standards and Technology (NIST)でのコンプライアンスは、連邦機関が連邦情報セキュリティ管理法 (FISMA) の要件を満たしていることを保証します。
  • APRA:The Australian Prudential Regulatory Authority (APRA)により、金融および保険セクターの組織が、情報セキュリティフレームワークを強化する必要があります。
  • MAS:The Monetary Authority of Singapore (MAS)は、個人の説明責任と行為の根拠に関する金融機関向けのガイダンスを施行します。
  • HIPAA:The Health Insurance Portability and Accountability Act (HIPAA)は1996年の連邦法です。この法律は、患者の同意または認識なしに、機密性の高い患者の健康情報を開示することを禁止しています。
  • CIS:Center for Internet Security (CIS)は、ITシステムおよびサイバー攻撃の標的となるデータを保護するためのセキュリティ標準です。

コンプライアンスチェックの表示

AWSインスタンスのベストプラクティスとともにコンプライアンスデータを表示できます。

よくある質問 (FAQ)

1. Site24x7のAWSガイダンスレポートとは

ガイダンスレポートでAWS環境を検査することで、EC2インスタンスやEBSボリューム、ELBノードといったリソースをより効率的に使用することができます。

2. ガイダンスレポートは全ユーザーが利用可能か

はい。Site24x7のAWSガイダンスレポートは、有料版か評価版かにかかわらず、Site24x7のサブスクリプションホルダーであれば利用可能です。IAMユーザーを作成かIAM権限のクロスアカウントを通してアクセスを有効化し、AWSアカウントをSite24x7に接続する必要があります。

3. ガイダンスレポートの制限

  • 現在、このレポートはAWSサービスのEC"、EBS、ELB、SES、RDS、SNS、DynamoDB、S3でのみ推奨事項の確認を提供しています。
  • 監視しているリソースのコンプライアンスのみ調査されます。様々な自動検出フィルターを用いて除外されたリソースは考慮されません。

4. ガイダンスレポートへのアクセス方法

すでにAWSアカウントを監視している場合

  • Site24x7 Webコンソールにサインイン後、左側のからAWSを選択し、推奨事項を表示したいAWSアカウントを選択します。
  • メニューのドロップダウンから、ガイダンスレポートを選択します。

新しく連携させたAWSアカウントの場合

ガイダンスレポートを作成するには、(AWSアカウントを連携してから)1時間が必要です。作成が完了したら、Site24x7コンソールにサインイン後、監視しているAWSアカウントを選択しガイダンスレポートをクリックします。そうすると、推奨事項が表示されます。

5. レポート更新の頻度

ガイダンスレポートはAWSアカウントを連携させた時から一週間ごとに更新されます。

6. メール通知について

週次レポートのメール通知が、Site24x7サブスクリプションアカウントに関連付けられているスーパー管理者に対して送信されます。

7. レポートはスケジュール設定可能か

はい。日次、週次、月次といった頻度や、その日時を選択できます。その設定はスケジュールレポート機能を用いたユーザーグループ可能です。

8. 新しく監視に追加したリソースのガイダンスレポートは表示可能か

レポートは毎週更新されるため、新しくディスカバリーされたリソースがレポートに表示されます。

9. Site24x7がデータを収集し推奨事項を表示させる方法

Site24x7は様々なAWSサービスレベルのAPIを用いて、設定情報を集めています。リソース使用率のメトリクスはCloudWatch APIのポーリングによって収集されていて、そのデータによってアイドルまたは使用されていないリソースを特定しています。