Malware Protection for S3 によるタグベースのアクセスコントロール (TBAC) の使用 - Amazon GuardDuty

Malware Protection for S3 によるタグベースのアクセスコントロール (TBAC) の使用

バケットに対して Malware Protection for S3 を有効にするときに、必要に応じてタグ付けを有効にできます。選択されているバケットに新規にアップロードされた S3 オブジェクトをスキャンしようとすると、マルウェアスキャンのステータスを確認できるように、スキャンされたオブジェクトにタグが追加されます。タグ付けを有効にすると、すぐに使用コストが発生します。詳細については、「Malware Protection for S3 の料金と使用コスト」を参照してください。

GuardDuty は、キー付きの事前定義タグに GuardDutyMalwareScanStatus を使用し、値にマルウェアスキャンのステータスのいずれかを使用します。これらの値については、「取りうる S3 オブジェクトスキャンステータスと結果ステータス」を参照してください。

GuardDuty による S3 オブジェクトへのタグの追加に関する考慮事項:

  • デフォルトでは、1 つのオブジェクトに最大 10 個のタグを関連付けることができます。詳細については、「Amazon S3 ユーザーガイド」の「タグを使用してストレージを分類する」を参照してください。

    10 個すべてのタグが既に使用されている場合、GuardDuty はスキャンされたオブジェクトに事前定義されたタグを追加できません。GuardDuty はまた、スキャン結果をデフォルトの EventBridge イベントバスにも発行します。詳細については、「Amazon EventBridge による S3 オブジェクトスキャンのモニタリング」を参照してください。

  • 選択した IAM ロールに GuardDuty が S3 オブジェクトにタグ付けするアクセス許可が含まれていない場合は、保護されたバケットに対してタグ付けが有効になっていても、GuardDuty はこのスキャンされた S3 オブジェクトにタグを追加できません。タグ付けに必要な IAM ロールのアクセス許可の詳細については、「IAM ロールポリシーの作成または更新」を参照してください。

    GuardDuty はまた、スキャン結果をデフォルトの EventBridge イベントバスにも発行します。詳細については、「Amazon EventBridge による S3 オブジェクトスキャンのモニタリング」を参照してください。

S3 バケットリソースへの TBAC の追加

S3 バケットリソースポリシーを使用すると、S3 オブジェクトに対するタグベースのアクセスコントロール (TBAC) を管理できます。S3 オブジェクトにアクセスして読み取るためのアクセス権を特定のユーザーに提供できます。AWS Organizations を使用して組織が作成されていた場合は、GuardDuty が追加したタグを誰も変更できないようにする必要があります。詳細については、「AWS Organizations ユーザーガイド」の「Preventing tags from being modified except by authorized principals」を参照してください。このリンク先のトピックで使用されている例では、ec2 について触れています。この例を使用するときは、ec2s3 に置き換えてください。

次に、TBAC を使用して何ができるかを示します。

  • Malware Protection for S3 サービスプリンシパルを除くいずれのユーザーも、次のタグキーと値のペアでまだタグ付けされていない S3 オブジェクトを読み取れないようにします。

    GuardDutyMalwareScanStatus:Potential key value

  • GuardDuty のみが、タグキーを GuardDutyMalwareScanStatus、値をスキャン結果としてスキャンされた S3 オブジェクトに追加できます。次のポリシーテンプレートを使用すると、アクセス権を持つ特定のユーザーにタグキーと値のペアの上書きを許可できます。

S3 バケットリソースポリシーの例:

サンプルポリシー内の次のプレースホルダ値を置き換えます。

  • IAM-role-name は、バケットに Malware Protection for S3 を設定するために使用した IAM ロールを指定します。

  • 555555555555 - 保護されたバケットに関連付けられた AWS アカウント を指定します。

  • amzn-s3-demo-bucket - 保護されたバケット名を指定します。

JSON
{ "Version":"2012-10-17", "Statement": [{ "Sid": "NoReadUnlessClean", "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:sts::555555555555:assumed-role/IAM-role-name/GuardDutyMalwareProtection", "arn:aws:iam::555555555555:role/IAM-role-name" ] }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringNotEquals": { "s3:ExistingObjectTag/GuardDutyMalwareScanStatus": "NO_THREATS_FOUND" } } }, { "Sid": "OnlyGuardDutyCanTagScanStatus", "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:sts::555555555555:assumed-role/IAM-role-name/GuardDutyMalwareProtection", "arn:aws:iam::555555555555:role/IAM-role-name" ] }, "Action": "s3:PutObjectTagging", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "ForAnyValue:StringEquals": { "s3:RequestObjectTagKeys": "GuardDutyMalwareScanStatus" } } } ] }

S3 リソースのタグ付けの詳細については、「タグ付けとアクセスコントロールポリシー」を参照してください。