【アップデート】Amazon GuardDutyでAmazon S3のマルウェアスキャンができるようになりました!!
はじめに
こんにちは、Shunです!
AWS re:Inforce 2024にて、Amazon GuardDuty Malware Protection for Amazon S3が発表されました!
本記事では、実際にどのような手順で実装が可能なのかをご紹介します!
GuardDuty Malware Protection for S3とは
S3 のマルウェア保護は、選択した Amazon Simple Storage Service (Amazon S3) バケットに新しくアップロードされたオブジェクトをスキャンすることで、マルウェアの潜在的な存在を検出するのに役立ちます。選択したバケットに S3 オブジェクトまたは既存の S3 オブジェクトの新しいバージョンがアップロードされると、GuardDuty は自動的にマルウェア スキャンを開始します。
出典: GuardDuty Malware Protection for S3
やってみた
前提
- S3バケットは作成済み
1. IAMの作成
Amazon GuardDuty Malware Protection for Amazon S3を利用するためには、GuardDutyへ付与するIAMを作成する必要があります。
以下の値を適用したい環境へ合わせ、書き換えてください。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowManagedRuleToSendS3EventsToGuardDuty",
"Effect": "Allow",
"Action": [
"events:PutRule",
"events:DeleteRule",
"events:PutTargets",
"events:RemoveTargets"
],
"Resource": [
"arn:aws:events:[region]:[account_id]:rule/DO-NOT-DELETE-AmazonGuardDutyMalwareProtectionS3*"
],
"Condition": {
"StringLike": {
"events:ManagedBy": "malware-protection-plan.guardduty.amazonaws.com"
}
}
},
{
"Sid": "AllowGuardDutyToMonitorEventBridgeManagedRule",
"Effect": "Allow",
"Action": [
"events:DescribeRule",
"events:ListTargetsByRule"
],
"Resource": [
"arn:aws:events:[region]:[account_id]:rule/DO-NOT-DELETE-AmazonGuardDutyMalwareProtectionS3*"
]
},
{
"Sid": "AllowPostScanTag",
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging",
"s3:GetObjectTagging",
"s3:PutObjectVersionTagging",
"s3:GetObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::[bucket_name]/*"
]
},
{
"Sid": "AllowEnableS3EventBridgeEvents",
"Effect": "Allow",
"Action": [
"s3:PutBucketNotification",
"s3:GetBucketNotification"
],
"Resource": [
"arn:aws:s3:::[bucket_name]"
]
},
{
"Sid": "AllowPutValidationObject",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::[bucket_name]/malware-protection-resource-validation-object"
]
},
{
"Sid": "AllowCheckBucketOwnership",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::[bucket_name]"
]
},
{
"Sid": "AllowMalwareScan",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::[bucket_name]/*"
]
},
{
"Sid": "AllowDecryptForMalwareScan",
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "arn:aws:kms:[region]:[account_id]:key/*",
"Condition": {
"StringLike": {
"kms:ViaService": "s3.ap-northeast.amazonaws.com"
}
}
}
]
}
*94行目でカスタマー管理のキーを使用している方はカスタマー管理キーIDを[*]へ入力してください。
参考: IAMポリシー権限の追加
続いて、IAMロールを作成します。
以下の信頼関係ポリシーを付与し、先ほど作成したIAMポリシーと紐づけます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "malware-protection-plan.guardduty.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
参考: 信頼関係ポリシーの追加
これでIAMの作成は完了です。
2. Amazon GuardDuty Malware Protection for Amazon S3の有効化
GuardDutyのコンソールから「有効にする」をクリックします。

以下の設定を行います。
S3バケット: [IAMへ記載したS3バケット名]
スキャンされたオブジェクトにタグを付ける: [オブジェクトにタグを付ける*]
*マルウェア検出の有無はタグから判断します。
アクセス許可: [先ほど作成したIAMロール]

ステータスが「Active」になれば、設定完了です。

3. S3へマルウェア検出ファイルをアップロード
EICARファイルをS3へアップロードしてみます。
EICAR ウイルス対策テスト ファイルまたは EICAR テスト ファイルは、コンピュータ ウイルス対策プログラムの応答をテストするために、欧州コンピュータ ウイルス対策研究所 (EICAR) とコンピュータ ウイルス対策研究機構 (CARO) によって開発されたコンピュータ ファイルです。実際の損害を引き起こす可能性のある実際のマルウェアを使用する代わりに、このテスト ファイルを使用すると、実際のコンピュータ ウイルスを使用せずにウイルス対策ソフトウェアをテストできます。
出典: EICAR テスト ファイルとは何ですか?
しばらくすると、該当のオブジェクトへタグが付与され、「THREATS_FOUND」とのValueが付与されます。
これはマルウェアファイルが検出されたことを示しています。

ただ、これだけではマルウェアファイルが検出されただけで、ユーザー側からダウンロードができてしまいます。
そこで、S3のバケットポリシーへ「THREATS_FOUND」のValueが付与されたものはs3:GetObjectをDenyするポリシーを追記します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::[bucket_name]",
"arn:aws:s3:::[bucket_name]/*"
]
},
{
"Sid": "DenyGetObjectForTHREATSFOUND",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket_name]/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/GuardDutyMalwareScanStatus": "THREATS_FOUND"
}
}
}
]
}
これでS3バケットでマルウェアが検出されたファイルはダウンロードできなくなります。

さいごに
Amazon GuardDutyでAmazon S3のマルウェアスキャンが可能になったアップデートをご紹介しました!
今までは、C1FSSなどサードパーティー製品と組み合わせて実施していたことがAWSで完結できるようになったことは非常にありがたいです!
最後まで読んでいただきありがとうございます!
参考
関連記事
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterGoogle Cloud Partner Top Engineer 2025、2024 AWS All Cert、ビール検定1冠
Recommends
こちらもおすすめ
-
AWSとWordPressで企業Webサイトを構築する
2019.5.16
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28

AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16

