翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Transfer Family、Amazon Cognito、GuardDuty を使用してファイル転送を保護する
Kurt Kumar、Amazon Web Services
概要
このソリューションは、 を使用して SFTP サーバーを介してファイルを安全に転送するのに役立ちます AWS Transfer Family。本ソリューションには、Amazon GuardDuty の機能である Malware Protection for S3 による自動マルウェアスキャン機能が含まれます。外部関係者とファイルを安全に交換し、処理前にすべての受信ファイルでマルウェアのスキャンが行われていることを確認する必要がある組織向けに設計されています。
このパターンで提供される Infrastructure as Code (IaC) テンプレートは、以下のデプロイに役立ちます。
を介した Amazon Cognito 認証を使用した安全な SFTP サーバー AWS Lambda
マルウェアをスキャンしたアップロードファイルおよび受信ファイル用の Amazon Simple Storage Service (Amazon S3) バケット
複数のアベイラビリティーゾーンにわたってパブリックサブネットとプライベートサブネットを持つ仮想プライベートクラウド (VPC) ベースのアーキテクチャ
イングレストラフィックとエグレストラフィックの両方に対する IP ベースのアクセス制御と、設定可能な許可リストと拒否リスト
GuardDuty によるマルウェアの自動スキャン
Amazon EventBridge と Lambda を介したスキャン結果に基づくインテリジェントなファイルルーティング
Amazon Simple Notification Service (Amazon SNS) によるセキュリティインシデントのリアルタイム通知
Amazon S3 バケットと Lambda 環境変数の暗号化 AWS Key Management Service (AWS KMS)
インターネットに公開しないアクセス用の Amazon Virtual Private Cloud (Amazon VPC) エンドポイント
Amazon CloudWatch 統合による包括的なログ記録
前提条件と制限事項
前提条件
アクティブな AWS アカウント
IAM ロールをプロビジョニングする AWS CloudFormation テンプレートのデプロイなど、このパターンで説明されているアクションを実行するための AWS Identity and Access Management (IAM) のアクセス許可
ターゲットアカウントで有効になっている GuardDuty
ターゲットアカウントで有効になっている Malware Protection for S3
Service Quotas を使用すると、ターゲットアカウントで以下を作成できます。
単一の VPC
1 つのプライベートサブネット
1 つのパブリックサブネット
3 つの Elastic IP アドレス
十分な Lambda の同時実行数の制限
セキュリティ関連の通知用の有効な E メールアドレス
(オプション) 許可または拒否する IP アドレスまたは CIDR 範囲のリスト
制限事項
Malware Protection for S3 には、最大ファイルサイズなどのクォータが適用されます。詳細については、GuardDuty ドキュメントの「Quotas in Malware Protection for S3」と「Supportability of Amazon S3 features」を参照してください。
このソリューションでは、Amazon Cognito のユーザー名とパスワード認証のみを使用します。このテンプレートでは、証明書ベースの認証方法やその他の認証方法はサポートされていません。デフォルトでは、このソリューションに多要素認証 (MFA) は設定されません。
このソリューションは、セキュリティグループのみを通じて IP ベースのアクセス制御を実装します。
アーキテクチャ
このパターンでデプロイされるリソースを次の図に示します。このソリューションは、ユーザーの認証と認可に Amazon Cognito を使用します。SFTP AWS Transfer Family サーバーはファイルのアップロードに使用されます。ファイルは Amazon S3 バケットに保存され、Amazon GuardDuty はファイルにマルウェアがないかスキャンします。マルウェアが検出されると、Amazon SNS は E メール通知を送信します。

この図表は、次のワークフローを示しています:
ユーザーは で SFTP サーバーエンドポイントに接続します AWS Transfer Family。これにより、Amazon Cognito ユーザープールで認証プロセスが開始されます。
Lambda 関数は認証と認可プロセスを開始し、Amazon Cognito でユーザーの認証情報を検証します。
Lambda 関数は
UploadBucketAmazon S3 バケットをホームディレクトリとして返します。ユーザーは Transfer Family サーバーの IAM ロールを引き受け、Lambda 関数は正常に認証されたことをユーザーに通知します。ユーザーは Transfer Family SFTP サーバーにファイルをアップロードします。ファイルは、
UploadBucketAmazon S3 バケットに保存されます。GuardDuty は、マルウェアがないかファイルをスキャンします。スキャン結果には、
NO_THREATS_FOUND、THREATS_FOUND、UNSUPPORTED、ACCESS_DENIED、およびFAILEDがあります。結果サンプルについては、GuardDuty ドキュメントの「S3 object scan result」を参照してください。EventBridge ルールはスキャン結果イベントを検出します。
EventBridge はファイルルーティング Lambda 関数を開始します。
Lambda 関数はイベントを処理し、スキャン結果に基づいてファイルを次のようにフィルタリングします。
NO_THREATS_FOUNDスキャン結果のファイルは、CleanBucketAmazon S3 バケットに送信されます。THREATS_FOUNDスキャン結果のファイルは、MalwareBucketAmazon S3 バケットに送信されます。UNSUPPORTEDスキャン結果のファイルは、ErrorBucketAmazon S3 バケットに送信されます。ACCESS_DENIEDスキャン結果のファイルは、ErrorBucketAmazon S3 バケットに送信されます。FAILEDスキャン結果のファイルは、ErrorBucketAmazon S3 バケットに送信されます。
すべてのファイルは で暗号化されます AWS KMS key。
ファイルが
MalwareBucketAmazon S3 バケットに送信された場合、Lambda 関数は Amazon SNS トピックを開始します。Amazon SNS トピックは、お客様が設定した E メールアドレスに通知を送信します。
ツール
AWS のサービス
Amazon CloudWatch は、 AWS リソースと で実行するアプリケーションのメトリクスを AWS リアルタイムでモニタリングするのに役立ちます。
Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。
Amazon EventBridge は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。例えば、 AWS Lambda 関数、API 送信先を使用する HTTP 呼び出しエンドポイント、その他のイベントバスなどです AWS アカウント。
Amazon GuardDuty は、ログを分析して処理し、 AWS 環境内の予期しないアクティビティや不正なアクティビティの可能性を特定する継続的なセキュリティモニタリングサービスです。
AWS Key Management Service (AWS KMS) は、データの保護に役立つ暗号化キーの作成と制御に役立ちます。
AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
「Amazon Simple Notification Service (Amazon SNS)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。
Amazon Simple Storage Service (Amazon S3) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
AWS Transfer Family は、SFTP、FTPS、または FTP プロトコルを介して AWS ストレージサービスとの間でファイルを転送するのに役立ちます。
Amazon Virtual Private Cloud (Amazon VPC) は、定義した仮想ネットワークに AWS リソースを起動するのに役立ちます。この仮想ネットワークは、ユーザー自身のデータセンターで運用されていた従来のネットワークと似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるという利点があります。
コードリポジトリ
このパターンのコードは、GitHub の「AWS Transfer Family and GuardDuty Malware Scanning Solution
ベストプラクティス
提供されている CloudFormation テンプレートは、IAM ロールとポリシーの最小特権のアクセス許可、保管中と転送中の暗号化、自動キーローテーションなど、多くの AWS ベストプラクティスを組み込むように設計されています。本番環境では、次の追加の推奨事項を実装することを検討してください。
Amazon Cognito ユーザーの MFA を有効にする
分散型サービス拒否 (DDoS) の保護のために AWS Shield を実装する
継続的なコンプライアンスモニタリングのために AWS Config を設定する
包括的な API ログ記録のために AWS CloudTrail を実装する
マルウェアスキャン以外の脅威検出のために Amazon GuardDuty を設定する
一元化されたセキュリティ管理のために AWS Security Hub CSPM を実装する
認証情報管理のために AWS Secrets Manager を使用する
トラフィックミラーリングによるネットワークトラフィックモニタリングを実装する
Amazon S3 での機密データの検出と保護のために Amazon Macie を設定する
定期的なセキュリティ評価と侵入テストを実装する
正式なインシデント対応計画を立てる
すべてのコンポーネントに自動パッチ適用を実装する
管理者向けの定期的なセキュリティトレーニングを実施する
マルチアカウントセキュリティ管理のために AWS Organizations を設定する
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
リポジトリのクローン作成 | 次のコマンドを入力して、「AWS Transfer Family および GuardDuty マルウェアスキャンソリューション
| アプリ開発者、DevOps エンジニア |
CloudFormation スタックを更新する。 |
| クラウド管理者、DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
マルウェア保護をオンにします。 |
| クラウド管理者、AWS 管理者 |
ユーザーをユーザープールに追加します。 | Amazon Cognito ユーザープールに 1 人以上のユーザーを追加します。手順については、Amazon Cognito ドキュメントの「ユーザープール内のユーザーを管理する」を参照してください。 | クラウド管理者、AWS 管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
SFTP サーバーエンドポイントに接続します。 |
| アプリ開発者、クラウド管理者、クラウドアーキテクト、DevOps エンジニア |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
ユーザー認証が失敗する |
これらのトラブルシューティング手順の実行に役立つ AWS CLI コマンドのリストについては、「追加情報」セクションの「トラブルシューティングに役立つコマンド」を参照してください。 |
SFTP 認証が失敗する |
これらのトラブルシューティング手順の実行に役立つ AWS CLI コマンドのリストについては、「追加情報」セクションの「トラブルシューティングに役立つコマンド」を参照してください。 |
ファイルのアップロードアクセスが拒否される |
これらのトラブルシューティング手順の実行に役立つ AWS CLI コマンドのリストについては、「追加情報」セクションの「トラブルシューティングに役立つコマンド」を参照してください。 |
マルウェアのスキャンが行われない |
これらのトラブルシューティング手順の実行に役立つ AWS CLI コマンドのリストについては、「追加情報」セクションの「トラブルシューティングに役立つコマンド」を参照してください。 |
Lambda 関数エラー |
これらのトラブルシューティング手順の実行に役立つ AWS CLI コマンドのリストについては、「追加情報」セクションの「トラブルシューティングに役立つコマンド」を参照してください。 |
関連リソース
Transfer Family ウェブアプリ (Transfer Family ドキュメント)
追加情報
トラブルシューティングに役立つコマンド
CloudFormation スタックのステータスを確認する:
aws cloudformation describe-stacks \ --stack-name <STACK_NAME>
Amazon Cognito ユーザープール内のすべてのユーザーを一覧表示する:
aws cognito-idp list-users \ --user-pool-id <USER_POOL_ID>
Lambda 関数のログを表示する:
aws logs describe-log-groups \ --log-group-name-prefix /aws/lambda/
GuardDuty のステータスを確認する:
aws guardduty list-detectors
セキュリティグループルールを調べる:
aws ec2 describe-security-groups \ --group-ids <SECURITY_GROUP_ID> \ --output table
AWS Transfer Family サーバーのステータスを確認します。
aws transfer describe-server \ --server-id <SERVER_ID>
Amazon S3 バケットのすべてのファイルを一覧表示する:
aws s3 ls s3://<BUCKET_NAME>/ \ --recursive
EventBridge ルールのステータスを確認する:
aws events describe-rule \ --name <RULE_NAME>