GuardDutyのランタイムモニタリングを全リージョンで有効にする(Pythonスクリプト)
少し前にAWS Security Hubで「GuardDuty.11 GuardDuty Runtime Monitoring should be enabled」の通知が発生しました。GuardDutyのランタイムモニタリングを有効にしなさいとのことです。
というわけで、全リージョンで有効にするスクリプトを作って実行してみました。なお、この通知に従うか否かは、各自の状況を踏まえて判断してください。
- Amazon ECS、Amaonz EKS、Amazon EC2が未使用なので、無効のままとする
- Amazon ECS、Amaonz EKS、Amazon EC2が未使用だが、将来利用する可能性を踏まえて有効にする
- Amazon ECS、Amaonz EKS、Amazon EC2を利用中なので、有効にする
- など
おすすめの方
- AWS Security Hubで「GuardDuty.11 GuardDuty Runtime Monitoring should be enabled」の通知が発生した方
- Amazon GuardDutyでランタイムモニタリングを有効にしたい方
- 上記について、全リージョンをスクリプトで実行したい方
Amazon GuardDuty ランタイムモニタリングの料金
下記の記載があります。
GuardDuty ランタイムモニタリングの料金は、仮想 CPU (vCPU) 単位で測定される、保護されているワークロードの数とサイズに基づいています。
Amazon GuardDuty ランタイムモニタリングを有効にする前
AWS Security Hubの様子
東京リージョンに集約しているため、17リージョンすべてが失敗になっています。
Amazon GuardDuty ランタイムモニタリングの様子
なお、本記事で利用したAWSアカウントのAmazon ECS、Amaonz EKS、Amazon EC2は、すべて未使用です。
Amazon GuardDuty ランタイムモニタリングを全リージョンで有効にするスクリプト
import boto3
from botocore.exceptions import ClientError
ec2 = boto3.client("ec2")
def main() -> None:
regions = ec2.describe_regions()["Regions"]
for region in regions:
region_name = region["RegionName"]
print(region_name)
update_guardduty_runtime_monitoring(region_name)
def update_guardduty_runtime_monitoring(region_name: str) -> None:
guardduty = boto3.client("guardduty", region_name=region_name)
try:
detector_id = guardduty.list_detectors()["DetectorIds"][0]
guardduty.update_detector(
DetectorId=detector_id,
Features=[
{
"Name": "RUNTIME_MONITORING",
"Status": "ENABLED",
# 下記は、必要に応じて有効にする
# "AdditionalConfiguration": [
# {"Name": "EKS_ADDON_MANAGEMENT", "Status": "ENABLED"},
# {"Name": "ECS_FARGATE_AGENT_MANAGEMENT", "Status": "ENABLED"},
# {"Name": "EC2_AGENT_MANAGEMENT", "Status": "ENABLED"},
# ],
},
],
)
except ClientError as e:
if e.response["Error"]["Code"] == "AccessDeniedException":
print(f" skip because AccessDeniedException")
else:
raise
if __name__ == "__main__":
main()
実行する
python app.py
Amazon GuardDuty ランタイムモニタリングを有効にしたあと
AWS Security Hubのステータスが更新されるまで、しばらく待ちます。
AWS Security Hubの様子
Amazon GuardDuty ランタイムモニタリングの様子
有効になりました。
さいごに
AWS Security Hubから通知が来たので、GuardDutyのランタイムモニタリングを全リージョンで有効にしてみました。参考になれば幸いです。