Object Storage向けの低コストのウイルス対策

Oracle Cloud Infrastructure Object Storageで作成されたファイル・オブジェクトをスキャンする低コストのウィルス・スキャナを構築することで、セキュリティを向上させ、コンプライアンスを維持します。このアーキテクチャでは、単一のOracle Cloud Infrastructure Computeインスタンスと、オープン・ソースのアンチウイルス・エンジンであるClamAVを使用します。

アーキテクチャ

このアーキテクチャは、オブジェクト・ストレージ内のファイルに対してスキャン操作を実行する2つの方法を示しています。

一方のメソッドは、Oracle Cloud Infrastructureイベント・サービスとOracle Cloud Infrastructureストリーミング・サービスを利用して、1つ以上の新しいファイルがファイル・バケットに追加されたことをスキャナ上のスクリプトまたはプログラムに通知します。もう1つの方法では、設定したスケジュールでファイルバケットをスキャンします。

次の図は、この参照アーキテクチャを示しています。

architecture-antivirus.pngの説明が続きます
図architecture-antivirus.pngの説明

アーキテクチャには、次のコンポーネントがあります。

  • リージョン

    Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。地域は他の地域から独立しており、広大な距離で(国または大陸間で)分離できます。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンに設定するカスタマイズ可能なソフトウェア定義ネットワークです。従来のデータ・センター・ネットワークと同様に、VCNではネットワーク環境を完全に制御できます。VCNには、VCNの作成後に変更できる複数の重複しないCIDRブロックを含めることができます。VCNは、リージョンまたは可用性ドメインにスコープ指定できるサブネットにセグメント化できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレス範囲で構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。

  • コンパートメント

    コンパートメントは、関連リソースのコレクションです。コンパートメントは、クラウド・リソースを編成および分離するためのOracle Cloud Infrastructureの基本コンポーネントです。コンパートメントはテナンシ全体で、すべてのリージョンを横断します。

    サブネットごとに、サブネット内外で許可されるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

  • インスタンス・プリンシパル

    インスタンス・プリンシパルは、インスタンスを認可されたアクター(またはプリンシパル)にしてサービス・リソースに対するアクションを実行できるようにするIAMサービス機能です。各コンピュート・インスタンスには独自のアイデンティティがあり、追加された証明書を使用して認証されます。

  • 動的グループ

    動的グループを使用すると、ユーザー・グループと同様に、Oracle Cloud Infrastructureコンピュータ・インスタンスをプリンシパルのアクターとしてグループ化できます。その後、インスタンスがOracle Cloud Infrastructureサービスに対してAPIコールを実行することを許可するポリシーを作成できます。

  • POLICY

    ポリシーは、会社が持っているOracle Cloud Infrastructureリソースに誰がアクセスできるか、およびその方法を指定するドキュメントです。ポリシーを使用すると、グループは特定のコンパートメントまたはテナンシ内の特定のタイプのリソースを特定の方法で操作できます。

  • Object Storageサービス

    Oracle Cloud Infrastructure Object Storageサービスは、信頼性とコスト効率に優れたデータ永続性を提供する、インターネット規模の高性能なストレージ・プラットフォームです。任意のコンテンツ・タイプの非構造化データを無制限に格納できます。データベース・バックアップ、分析データ、およびイメージやビデオなどの豊富なコンテンツが含まれます。

  • コンピュート・インスタンス

    Oracle Cloud Infrastructure Computeでは、コンピュート・ホストをプロビジョニングおよび管理できます。リソース要件(CPU、メモリー、ネットワーク帯域幅およびストレージ)を満たすシェイプでコンピュート・インスタンスを起動できます。コンピュート・インスタンスを作成したら、安全にアクセスし、再起動し、ボリュームをアタッチおよびデタッチして、不要になったときに終了できます。

    アーキテクチャには1つのコンピュート・インスタンスがあります。スキャン・プロセスを管理するためのClamAVアンチウイルス・エンジンおよびその他のツールをホストします。

  • EVENTS

    Oracle Cloud Infrastructureサービスは、リソースの変更を記述する構造化メッセージであるイベントを発行します。イベントは、クラウド・リソースに影響する作成、読取り、更新または削除(CRUD)操作、リソース・ライフサイクル状態の変更およびシステム・イベントに対して発行されます。

    このアーキテクチャでは、イベント・サービスを使用して、オブジェクト・ストレージ・バケットでのオブジェクトの作成を追跡します。

  • Streaming

    Oracle Cloud Infrastructure Streamingは、リアルタイムで消費および処理できる連続した大量のデータを収集するための、完全に管理されたスケーラブルで耐久性のあるストレージ・ソリューションを提供します。ストリーミングを使用して、アプリケーション・ログ、操作テレメトリ、Webクリックストリーム・データなどの大量のデータを収集したり、パブリッシュ・サブスクライブ・メッセージング・モデルでデータが連続的かつ順次生成および処理される他のユースケースに使用できます。

推奨事項

実際の要件は、ここで説明するアーキテクチャとは異なる場合があります。次の推奨事項を開始ポイントとして使用します。

  • VCNおよびサブネット

    VCNを作成する場合、VCNのサブネットにアタッチする予定のリソースの数に基づいて、必要なCIDRブロックの数と各ブロックのサイズを決定します。標準のプライベートIPアドレス空間内にあるCIDRブロックを使用します。

    プライベート接続を設定する他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ内)と重複しないCIDRブロックを選択します。

    VCNを作成した後、CIDRブロックを変更、追加および削除できます。

    サブネットを設計する際には、トラフィック・フローとセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能する同じサブネットにアタッチします。

  • コンパートメント

    デフォルトでは、Oracle Cloudテナンシには、テナンシ自体にちなんで名付けられたデフォルトのルート・コンパートメントがあります。テナンシ管理者(デフォルトのルート・コンパートメント管理者)は、デフォルトの管理者グループのメンバーである任意のユーザーです。

    このアーキテクチャでは、すべてのリソースを含むコンパートメントを作成して分離し、セキュリティを向上させます。

  • インスタンス・プリンシパル

    VMがオブジェクト・ストレージ・バケットをパブリックにせずにアクセスできるようにする動的グループおよびポリシーを作成します。

  • Oracleイメージ

    OCI - CLI、PythonおよびGitがインストールされ、すぐに使用できる状態になっているOracle Cloud Developer Imageを使用してVMを作成します。

注意事項

この参照アーキテクチャをデプロイする場合は、次の点を考慮してください。

  • 頻度

    スキャンを実行する頻度は、受信オブジェクトのボリュームおよび頻度によって異なります。一般的なガイドラインは週次スキャンから始まり、バケット内のすべてのオブジェクトの処理にかかる時間に基づいて調整します。

  • パフォーマンス

    いくつかの要因がパフォーマンスに影響しますが、最も重要なのは、処理する必要があるファイルの数とインスタンス・シェイプです。

  • SECURITY

    インスタンス・プリンシパルおよび動的グループを使用して、オブジェクト・ストレージ・バケットへのアクセスを制限します。Oracle Cloud Infrastructure Identity and Access Management (IAM)ポリシーを使用して、特定の動的グループに権限を割り当て、バケットを公開しないようにします。

    暗号化はOracle Cloud Infrastructure Object Storageに対してデフォルトで有効になっており、無効にできません。

  • コスト

    Oracle Cloud Infrastructureインスタンスとそのブロック・ストレージは使用ごとに支払われるため、バケットでウィルス対策を実行する場合にのみ支払います。受信オブジェクトをスキャンするには、24x7を実行し続けるインスタンスを保持し、オブジェクト・ボリュームに応じて、空き層の使用、他のサービスとのインスタンスの共有または専用サービスの起動を行うことができます。アウトバウンド・データ転送およびオープン・ソースのアンチウイルスに対して支払う必要はありません。

デプロイ

この参照アーキテクチャのTerraformコードは、Oracle Cloud Infrastructure Resource Managerのサンプル・スタックとして使用できます。GitHubからコードをダウンロードし、特定の要件にあわせてカスタマイズすることもできます。

  • Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします。
    1. Oracle Cloudへのデプロイに移動します。

      まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

    2. スタックをデプロイするリージョンを選択します。
    3. 画面に表示されるプロンプトと指示に従って、スタックを作成します。
    4. スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
    5. ジョブが完了するまで待機し、計画を確認します。

      変更を加えるには、「Stack Details」ページに戻り、「Edit Stack」をクリックして、必要な変更を行います。次に、プラン処理を再度実行します。

    6. 追加の変更が必要ない場合は、「Stack Details」ページに戻り、「Terraform Actions」をクリックして、「Apply」を選択します。
  • GitHubのTerraformコードを使用してデプロイします。
    1. GitHubに移動します。
    2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
    3. READMEドキュメントの手順に従います。