TECH PLAY

SCSKクラウドソリューション

SCSKクラウドソリューション の技術ブログ

1268

本記事は、SCSKの運営する本エンジニアブログ「TechHarmony」の Catoクラウドのまとめ記事 になります。 ※ Catoクラウドの記事がかなり増えて来たので、適宜まとめ記事を作成する予定です。まとめ記事については、定期的に内容を更新する予定です。 SCSKでは、2019年よりCato Networks社のCatoクラウド(Cato Cloud/Cato SASE Cloud)の取り扱いを開始しており、すでに30社以上のお客様にご契約、ご利用をいただいております。 一方で、Catoクラウドは、日本語の情報が非常に少ないため、2022年7月から FAQサイト の運営を開始し、2023年8月から、本エンジニアブログ「 TechHarmony 」にて、 Catoクラウド、ゼロトラスト/SASE/SSEに関するニュースや最新動向・技術トレンド、Catoクラウドで新たにリリースされた機能の検証結果などを記事 にしています。 FAQやTechHarmonyで、Catoクラウドの日本語でのお役立ちサイトを目指し、CatoクラウドやSASEの知名度向上に少しでも寄与できればと考えています。 Catoクラウドの概要 Catoクラウドについて サービス体系について(2024年最新版) 旧サービス体系について(2024年1月末まで) 2024年2月の価格体系変更について   Catoクラウドの各機能概要 Catoクラウドの管理ポータル Cato管理アプリケーション(CMA)について SD-WAN、ZTNAについて QoSについて FWaaS、SWGについて Firewall機能について LAN Firewall機能について IPS、NGAMについて DNS Security、RBIについて RBI機能について CASB、DLPについて CASB機能について CASBでのアプリケーション制御について アプリケーション数ではなくカバレッジが重要 DLP機能について EPP、XDRについて 世界初SASEベースのXDRについて   Catoクラウドのご利用 はじめの一歩 ログの確認方法 Cato Statusページ   よくご質問いただく事項(Top5) 1. 送信元IPの固定化 2. Socketなしですべてモバイルユーザにする場合の注意点 3. 拠点接続の冗長化構成 4. 既存WANからの移行方法 5. クライアント常時接続機能(Always-On)   トラブルシューティング 拠点接続の不具合時 クライアント接続の不具合時   Deep Dive TLS Inspection機能で躓く証明書の仕組み TCP Acceleration の仕組みと効果測定 CASBでQUIC プロトコルをブロックすべき理由   その他関連サイト Catoクラウドサービス紹介ページ Catoクラウド FAQサイト Catoクラウド導入・運用の悩みは“パートナー選び”で解決 SASE実態調査(2023年度版) SASEとSSEの違いについて 2023年ゼロトラストネットワーキング10大ニュース   まとめ Catoクラウドに少しでも興味をお持ちになられた方は、ご遠慮なくSCSKまで お問い合わせ ください。 SASE、Cato Networks、Catoクラウド(Cato Cloud/Cato SASE Cloud)自体の知名度がまだまだ低い状況です。 SCSKでは、2021年からSASEの主要ソリューションを一同に紹介を行うオンラインセミナー「SCSK SASE Solution Summit(通称S4 エスフォー)」を定期的に開催しております。 これまで14回開催し、1,800名以上の方にご参加いただいております。 S4については、2024年2月に開催済みで、次回は2024年4月以降に開催予定ですので、改めてご案内します。 来月(2024年3月14日)に、Catoクラウドの主要機能を2時間・デモ形式でご覧いただけるセミナーを開催しますので、ご興味のある方は是非ご参加ください。 Catoクラウドデモセミナー~Catoクラウドの主要機能を2時間で網羅~ 本セミナーでは、世界初のSASEである「Catoクラウド」の概要をたっぷり2時間、デモ形式でご覧いただきます。 また、ご希望の方(先着10名様)は、デモ環境に対して、お手元の環境からハンズオン形式でCatoクラウドに触れて頂くことが可能な参加型セミナーです。 www.scsk.jp SASE、Catoクラウドセミナー以外に、Catoクラウドのお客様導入事例の制作、FAQサイト運営、この TechHarmony(技術ブログ)で、皆様のお役に立て、Catoクラウドの知名度アップに少しでも貢献できればと考えておりますので、よろしくお願いします。
本記事の内容は、Cato Networks社の以下の記事を元に日本語へ意訳、再構成したものとなります。 Cato Management Application Catoクラウドでは、管理ポータルである Cato管理アプリケーション ( Cato Management Application 、以下、 CMA )は、お客様のCatoクラウドのすべての環境を完全に可視化し、コントロールすることが可能です。 管理者は、CMAでセキュリティとネットワーキングのポリシーを定義し、サイトとユーザー接続を管理し、インシデントを調査することができます。 CMAは、Catoプラットフォームのネイティブな部分であり、ソフトウェアのインストールやハードウェアの導入は不要で、Webブラウザで利用することができます。 ※CMAは、URLが “cc.catonetworks.com” だったことから、以前はCC2(シーシーツー)と言われていました。 どこでも一貫したポリシー Catoのすべての機能は、CMAと連携して開発されており、Catoクラウドのデプロイメントを管理するための真のシングルペイン(一つの画面で必要な情報が全て閲覧できること)を保証します。FWaaS、Threat Prevention、CASB、DLP、RBI、および今後リリースされるすべてのセキュリティエンジンのポリシーは、CMAにすべて一元管理され、Catoクラウドプラットフォーム全体で一貫して適用されます。しばしばセキュリティポスチャにギャップを生じさせ、攻撃対象領域を拡大するような、バラバラのセキュリティアプライアンス製品に設定をプッシュするような必要はありません。Catoクラウドを使用することで、管理者は、組織全体・全世界でわずか数分で変更が反映される包括的なグローバルセキュリティの適用範囲を保証することができます。 ワンストップのネットワーク管理 Catoクラウドは、すべてのネットワーキングとセキュリティ機能を単一のソフトウェアスタックから提供し、真に統合された管理アプリケーションを実現します。ネットワークの設定、監視、トラブルシューティングは、CMAで一元管理することができます。お客様は、CatoのSD-WANエッジ(Socket/vSocket)、IPsecまたはCross Connectを介した物理ネットワークとクラウドネットワークの接続性、およびCatoのグローバルプライベートバックボーンを介した企業のルーティング、DNS、DHCP、QoS、ネットワーク最適化を完全に可視化し、制御することができます。ネットワークチームとセキュリティチームは、1つのプラットフォームを使用してインシデントの解決に協力できるため、効率性と生産性が向上します。 実用的な情報を瞬時に可視化 CMAは、ハイレベルなトポロジービューから、サマリーダッシュボード、特定のサイト、ユーザー、イベントまで、企業環境全体を全て可視化します。トポロジービューは、すべてのサイトとユーザーの位置、接続性、主要統計に関する情報をリアルタイムで表示します。ダッシュボードは、脅威、クラウドおよびアプリケーションの使用状況、ネットワークパフォーマンス、リモートアクセスなどの主要な次元にわたって要約された情報を提供します。イベントディスカバリーエンジンにより、アカウント内のすべてのイベント(セキュリティ、ネットワーク、アクセス、デバイス)をカスタマイズして検索することができます。リアルタイム表示から履歴ダッシュボード、そして数回のクリックでイベントのフィルタリングされたリストに移動できる機能により、CMAは管理者にとって非常に効率的なモニタリングおよびトラブルシューティングツールとなります。 セキュリティインシデントの合理化された調査 Catoクラウドは、セキュリティチームがネットワークとセキュリティ管理を提供する同じプラットフォーム内でインシデントに対処することを可能にします。侵害の指標は、Cato XDRによって「ストーリー」としてグループ化され、専用のCMA XDRワークベンチでセキュリティチームに提示されます。ストーリーをワンクリックすると、調査ツールのフルセットとともにインシデントの詳細が表示されます。情報の構文、オブジェクト、イベントとポリシーへの参照は一貫しており、非常に理解しやすくなっています。CMAを通じて修復ステップを簡単に開始できるため、企業の攻撃への対応能力がタイムリーに向上します。 ※Catoの「ストーリー」は、1つまたは複数のセンサーによって生成されたイベントの相関関係。 きめ細かなRBACによる管理者のプロビジョニングと管理 管理者のCMAアクセスを保護および制御することは、組織の強固なセキュリティ体制を確保する上で最も重要です。CMAは、SSOおよびMFAプロバイダとポリシーのサポートにより、IT組織構造にシームレスに適合するように設計されています。きめ細かな役割ベースアクセス制御( Role-based Access Controls:RBAC )を定義することで、特定の管理者やチームが特定の地域や担当ドメインを制御できるようになります。すべての管理者の活動は、包括的な監査証跡に記録され、SASE環境の完全な管理責任を保証します。 ライセンスとSD-WANエッジを一元管理 CMAは、ライセンスとSD-WANエッジのハードウェアであるSocketの可視性を提供します。管理者は、サイト、ユーザー、およびサービスのライセンス割り当てを一目で確認できるため、現在の展開と将来の成長に対して適切なカバレッジを確保できます。Cato Socketのステータスは、出荷追跡、展開ステータス、ソフトウェアアップデート、および 故障修理対応( Return Merchandise Authorization : RMA )に至るまで、デバイスのライフサイクル全体を通じて追跡できます。ライセンスとハードウェアのインベントリ管理を CMA に取り込むことで、管理者は Cato 環境の全範囲を包括的かつシンプルに管理できるようになります。 まとめ Catoクラウドの管理ポータルであるCato管理アプリケーション(CMA)について解説をしました。 Catoクラウドに少しでも興味をお持ちになられた方は、遠慮なくSCSKまでお問い合わせください。 SASE、Cato Networks社、Catoクラウド(Cato Cloud/Cato SASE Cloud)自体の知名度もまだまだ低い状況です。 SCSKでは、2021年からSASEの主要ソリューションを一同に紹介を行うオンラインセミナー「SCSK SASE Solution Summit(通称S4 エスフォー)」を定期的に開催しております。これまで14回開催し、1,800名以上の方にご参加いただいております。 S4については、次回2024年4月以降に開催する予定ですので、改めてご案内いたします。 来月、2024年3月14日には、Catoクラウドの主要機能を2時間・デモ形式でご覧いただけるセミナーを開催しますので、ご興味のある方は是非ご参加ください。 Catoクラウドデモセミナー~Catoクラウドの主要機能を2時間で網羅~ 本セミナーでは、世界初のSASEである「Catoクラウド」の概要をたっぷり2時間、デモ形式でご覧いただきます。 また、ご希望の方(先着10名様)は、デモ環境に対して、お手元の環境からハンズオン形式でCatoクラウドに触れて頂くことが可能な参加型セミナーです。 www.scsk.jp SASE、Catoクラウドセミナー以外に、Catoクラウドのお客様導入事例の制作、FAQサイト運営、この TechHarmony(技術ブログ)で、皆様のお役に立て、Catoクラウドの知名度アップに少しでも貢献できればと考えております。
こんにちは、広野です。 AWS AppSync を使用したアプリケーションを開発する機会があり、リゾルバ、主に VTL の書き方に関してまとまった知識が得られたので紹介します。前回からの続きもので、UpdateItem の書き方を紹介します。 本記事では、VTL の書き方にフォーカスしています。ご了承ください。 AWS AppSync、リゾルバ、VTL の説明については以下の記事をご覧下さい。 AWS AppSync リゾルバ (VTL) の書き方サンプル No.1 - Amazon DynamoDB GetItem Amazon DynamoDB に VTL で GetItem をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.01.09 AWS AppSync リゾルバ (VTL) の書き方サンプル No.2 – Amazon DynamoDB BatchGetItem Amazon DynamoDB に VTL で BatchGetItem をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.01.19 AWS AppSync リゾルバ (VTL) の書き方サンプル No.3 – Amazon DynamoDB Query Amazon DynamoDB に VTL で Query をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.02.26 AWS AppSync リゾルバ (VTL) の書き方サンプル No.4 - Amazon DynamoDB PutItem Amazon DynamoDB に VTL で PutItem をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.02.26 AWS AppSync を使って React アプリからキックした非同期ジョブの結果をプッシュ通知で受け取る 非同期ジョブを実行した後、結果をどう受け取るか?というのは開発者として作り込み甲斐のあるテーマです。今回は React アプリが非同期ジョブを実行した後に、AWS AppSync 経由でジョブ完了のプッシュ通知を受け取る仕組みを紹介します。 blog.usize-tech.com 2022.12.01 Amazon DynamoDB に UpdateItem する VTL 例えば、AWS AppSync から以下のリクエストを受けたとします。Amazon DynamoDB には適切なデータがある想定です。テーブル名はリゾルバの別の設定 (Data Source) で行います。 引数となるパラメータ: input の中にパーティションキー pkey、ソートキー skey、任意の属性データ 今回は受け取ったパーティションキーとソートキーのパラメータをそのまま UpdateItem の条件に当てはめて、input の中に格納されている属性をそのまま使用してデータを更新します。 リクエストマッピングテンプレート { "version": "2018-05-29", "operation": "UpdateItem", "key": { "pkey": $util.dynamodb.toDynamoDBJson($ctx.args.input.pkey), "skey": $util.dynamodb.toDynamoDBJson($ctx.args.input.skey) }, #set( $expNames = {} ) #set( $expValues = {} ) #set( $expSet = {} ) #set( $expAdd = {} ) #set( $expRemove = [] ) #foreach( $entry in $util.map.copyAndRemoveAllKeys($ctx.args.input, ["pkey", "skey"]).entrySet() ) #if( $util.isNull($entry.value) ) #set( $discard = ${expRemove.add("#${entry.key}")} ) $!{expNames.put("#${entry.key}", "${entry.key}")} #else $!{expSet.put("#${entry.key}", ":${entry.key}")} $!{expNames.put("#${entry.key}", "${entry.key}")} $!{expValues.put(":${entry.key}", $util.dynamodb.toDynamoDB($entry.value))} #end #end #set( $expression = "" ) #if( !${expSet.isEmpty()} ) #set( $expression = "SET" ) #foreach( $entry in $expSet.entrySet() ) #set( $expression = "${expression} ${entry.key} = ${entry.value}" ) #if ( $foreach.hasNext ) #set( $expression = "${expression}," ) #end #end #end #if( !${expAdd.isEmpty()} ) #set( $expression = "${expression} ADD" ) #foreach( $entry in $expAdd.entrySet() ) #set( $expression = "${expression} ${entry.key} ${entry.value}" ) #if ( $foreach.hasNext ) #set( $expression = "${expression}," ) #end #end #end #if( !${expRemove.isEmpty()} ) #set( $expression = "${expression} REMOVE" ) #foreach( $entry in $expRemove ) #set( $expression = "${expression} ${entry}" ) #if ( $foreach.hasNext ) #set( $expression = "${expression}," ) #end #end #end "update": { "expression": "${expression}", #if( !${expNames.isEmpty()} ) "expressionNames": $utils.toJson($expNames), #end #if( !${expValues.isEmpty()} ) "expressionValues": $utils.toJson($expValues), #end }, "condition": { "expression": "attribute_exists(#pkey) AND attribute_exists(#skey)", "expressionNames": { "#pkey": "pkey", "#skey": "skey" } } } operation には、UpdateItem を書きます。これは Amazon DynamoDB に UpdateItem するぞ、という意思表示です。 アプリから受け取った引数はマッピングテンプレート内では $ctx.args 内に格納されます。今回は input の中に必要なキーや属性をまとめて格納しています。そうすることで、パーティションキー、ソートキー以外は任意のデータを可変で入れ込むことができます。 このコードは以下の AWS 公式サイトのドキュメントを参考にしました。正直、これを独力で書くのは難しいです。コード内、pkey と skey の部分だけ書き換えれば使えます。 DynamoDB のリゾルバーのマッピングテンプレートリファレンス - AWS AppSync AWS AppSync の DynamoDB のリゾルバーのマッピングテンプレートリファレンス docs.aws.amazon.com レスポンスマッピングテンプレート 結果は配列に格納されます。戻ってきたデータをそのままアプリ側に戻す書き方です。 $utils.toJson($context.result) VTL に関しては以下の AWS 公式ドキュメントも必要に応じてご確認ください。 Resolver mapping template reference for DynamoDB - AWS AppSync Resolver Mapping Template Reference for DynamoDB for AWS AppSync. docs.aws.amazon.com まとめ いかがでしたでしょうか。 UpdateItem も AWS AppSync のサブスクリプションで使用することがあります。他のオペレーションと比べて難解なコードになっていますが、AWS 公式ドキュメントのコードが非常に良くできているので、ほぼそのまま使えます。 本記事が皆様のお役に立てれば幸いです。
こんにちは、広野です。 AWS AppSync を使用したアプリケーションを開発する機会があり、リゾルバ、主に VTL の書き方に関してまとまった知識が得られたので紹介します。前回からの続きもので、PutItem の書き方を紹介します。 本記事では、VTL の書き方にフォーカスしています。ご了承ください。 AWS AppSync、リゾルバ、VTL の説明については以下の記事をご覧下さい。 AWS AppSync リゾルバ (VTL) の書き方サンプル No.1 - Amazon DynamoDB GetItem Amazon DynamoDB に VTL で GetItem をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.01.09 AWS AppSync リゾルバ (VTL) の書き方サンプル No.2 – Amazon DynamoDB BatchGetItem Amazon DynamoDB に VTL で BatchGetItem をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.01.19 AWS AppSync リゾルバ (VTL) の書き方サンプル No.3 – Amazon DynamoDB Query Amazon DynamoDB に VTL で Query をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.02.26 AWS AppSync を使って React アプリからキックした非同期ジョブの結果をプッシュ通知で受け取る 非同期ジョブを実行した後、結果をどう受け取るか?というのは開発者として作り込み甲斐のあるテーマです。今回は React アプリが非同期ジョブを実行した後に、AWS AppSync 経由でジョブ完了のプッシュ通知を受け取る仕組みを紹介します。 blog.usize-tech.com 2022.12.01 Amazon DynamoDB に PutItem する VTL 例えば、AWS AppSync から以下のリクエストを受けたとします。Amazon DynamoDB には適切なパーティションキー、ソートキーがある想定です。テーブル名はリゾルバの別の設定 (Data Source) で行います。 引数となるパラメータ: input の中にパーティションキー pkey、ソートキー skey, 任意の属性データ 今回は受け取ったパーティションキーとソートキーのパラメータをそのまま PutItem の条件に当てはめて、input の中に格納されている属性を全てそのまま書き込みます。 リクエストマッピングテンプレート { "version": "2018-05-29", "operation": "PutItem", "key": { "pkey": $util.dynamodb.toDynamoDBJson($ctx.args.input.pkey), "skey": $util.dynamodb.toDynamoDBJson($ctx.args.input.skey) }, "attributeValues": $util.dynamodb.toMapValuesJson($ctx.args.input), "condition": { "expression": "attribute_not_exists(#pkey) AND attribute_not_exists(#skey)", "expressionNames": { "#pkey": "pkey", "#skey": "skey" } } } operation には、PutItem を書きます。これは Amazon DynamoDB に PutItem するぞ、という意思表示です。 アプリから受け取った引数はマッピングテンプレート内では $ctx.args 内に格納されます。今回は input の中に必要なキーや属性をまとめて格納しています。 これで Amazon DynamoDB に PutItem をかけることができます。 レスポンスマッピングテンプレート 結果は配列に格納されます。戻ってきたデータをそのままアプリ側に戻す書き方です。 $utils.toJson($context.result) VTL に関しては以下の AWS 公式ドキュメントも必要に応じてご確認ください。 Resolver mapping template reference for DynamoDB - AWS AppSync Resolver Mapping Template Reference for DynamoDB for AWS AppSync. docs.aws.amazon.com まとめ いかがでしたでしょうか。 PutItem は AWS AppSync のサブスクリプションを使用したいときに必ず使用します。あえて紹介するまでもないと思いましたが、一応紹介させて頂きました。 本記事が皆様のお役に立てれば幸いです。
本記事の内容は、以下のCato Networks社の記事を元に日本語へ意訳、再構成したものとなります。 Cato Software Defined WAN (SD-WAN) Cato Universal Zero Trust Network Access (ZTNA) Catoクラウドの標準サービス機能であるSD-WAN、およびモバイルユーザ(リモートアクセス)のZTNA機能について解説します。 Catoクラウドでは、モバイルユーザ(リモートアクセス)は、ZTNAではなくSDPと言います。 ※SDP・・・Software Defined Perimeter(ソフトウェア定義境界)は、ZTNAの別名で、従来型のリモートアクセスとは異なり、ゼロトラストの原則に則ったセキュアなリモートアクセスです。Catoクラウドのリモート(モバイル)アクセスを意味します。 それでは、SD-WANとZTNA(SDP)について解説します。 Cato SD-WANについて Cato SD-WANは、オンプレミスやクラウド上の拠点やデータセンターに安全で弾力性のある接続性を提供し、これまでの通信キャリアが提供する高価な閉域網を置き換えることができます。ゼロタッチの導入モデルにより、拠点へのロールアウトも迅速かつシンプルに行うことができます。管理者は、アプリケーショントラフィックのパフォーマンスと優先順位付けを包括的に可視化、制御することができます。 あらゆるトランスポート上で最適化された信頼性の高いサイト接続性 CatoのSD-WANエッジデバイスであるCato Socketは、ケーブル、ファイバー、ブロードバンド、セルラーなど複数のインターネット接続を単一の論理トンネルへ集約します。Catoは、アプリケーションプロファイル、優先度、リンクステータスに基づいて、利用可能なリンク上にアプリケーショントラフィックをインテリジェントに誘導します。CatoのSD-WANソフトウェアと複数の冗長トランスポートの組み合わせにより、リンクブラックアウトやブラウンアウトを克服し、これまでは閉域網でしか実現できなかった可用性の高いネットワークサービスを提供することができます。 最も重要なアプリケーションパフォーマンス保証 Cato SD-WANでは、割り当てられた QoSポリシー に基づいてアプリケーションのトラフィックがルーティングされ、優先順位付けされます。Catoは、カスタマイズ可能なアプリケーションの優先順位付けポリシーを提供し、音声、ビデオ、リモートデスクトップなどの遅延の影響を受けやすいアプリケーションが、バックアップなどの帯域幅を必要とするバックグラウンドアプリケーションよりも常に優先的にネットワークにアクセスできるようにします。アプリケーションのパフォーマンスをさらに向上させるため、Catoはラストマイルのインターネット接続とミドルマイルでのパケットロスを克服します。 TCPアクセラレーション は、ネットワークの効率と速度を向上させ、データ転送時間を短縮します。リンク回復力、アプリケーションの優先順位付けと高速化、パケットロスの軽減により、Catoはビジネスクリティカルなアプリケーションを使用する際のユーザーエクスペリエンスを向上させ、生産性を最大化します。 ラストマイルのモニタリングとトラブルシューティング ラストマイル接続の状態を監視することは、パフォーマンスと接続性の問題をトラブルシューティングするために重要です。Cato Socketは、SD-WANトンネルの外側のパフォーマンスを継続的に測定することで、接続されたインターネット回線の品質を自動的に監視します。パケットロス、ラウンドトリップタイム、ホップ数などの詳細なオーバータイム分析が提供され、特定のインターネットサービス回線のパフォーマンス低下を迅速に特定します。インターネット接続の持続的な劣化は、顧客にラストマイルプロバイダーの切り替えや接続設定のアップグレードを促すことができます。 SD-WAN パフォーマンスと使用状況のリアルタイム分析 過去のデータやレポートを使用してリアルタイムのネットワーク劣化をトラブルシューティングすることは困難です。Cato を使用すると、管理者は特定の場所やアプリケーションのジッター、パケットロス、スループット、距離を含むさまざまなメトリクスをリアルタイムで表示できます。リアルタイムの表示により、誤ったアプリケーションの識別や優先順位付け、高帯域幅の消費、定期的な輻輳など、考えられる根本原因を迅速に特定できます。 SLA保証された高速なグローバルプライベートバックボーン グローバル企業は信頼性の高い長距離トランスポートに依存しており、多くの場合、SD-WANと並行してグローバルMPLS契約を維持することを余儀なくされています。 Cato SD-WANは、世界中のCatoのPoPを相互接続する複数のSLA( 99.999% )に裏付けされたTier1プロバイダを使用して構築されたCatoのグローバルプライベートバックボーンにネイティブ接続されています。Catoは、MPLSの数分の一のコストで、公衆インターネットよりも優れた予測可能なミドルマイルを構築します。Catoを利用することで、お客様の組織はグローバルプライベートネットワークに即座にアクセスできるようになり、中国を含む世界中のあらゆる場所で、最新のアプリケーションに必要な弾力性とパフォーマンスで、本社、支店、クラウド、さらにはモバイルユーザーを接続することができます。 ゼロタッチデプロイメントによる迅速なインストール Cato Socketのインストールは簡単で、デバイスの事前設定を必要としないため、真のゼロタッチデプロイメントが可能です。Socketは遠隔地にある支店に配送され、専門的な知識がなくても、現地スタッフが数分で配備することができます。電源とインターネットに接続されると、Socketは自動的にCato管理アプリケーションに表示され、サイトに割り当てる準備ができます。Cato Socketはクラウドから完全に管理され、適用されるすべてのポリシーが自動的にダウンロードされます。ゼロタッチモデルは高可用性セットアップに拡張され、2つのCato Socketが同じサイトに割り当てられると、自動的にHAが構成されます。 あらゆる拠点・DCと接続するSD-WANアプライアンス Cato Socketは、小規模な拠点から大規模なオフィス・データセンターまで、様々なユースケースに対応する3つのモデル(X1500/X1600/X1700)があり、単一のトンネルで最大10Gbpsのスループットを提供します。ブランチモデルにはオプションでWi-Fiとセルラー機能が統合されており、ブランチのハードウェアフットプリントを削減し、導入を簡素化します。データセンターモデルはファイバー・ハンドオフをサポートし、デュアル電源を搭載しています。すべてのモデルは、2台のデバイスを使用した高可用性(HA)構成をサポートしています。Cato Socketは、低コストのサブスクリプションベースで提供されるため、時間とコストのかかるハードウェアの更新サイクルが不要で、設備投資も不要です。   Cato ZTNAについて Universal Zero Trust Network Access(ZTNA)により、企業はリスクと最小権限の原則に基づいて企業リソースへの単一のアクセスポリシーを作成し、オフィス、自宅、リモートなど場所に関係なくすべてのユーザーに適用することができます。 どこでも単一のZTNAポリシーを適用 CatoのUniversal ZTNAは、単一のリスクベースのポリシーを使用して、アイデンティティと、デバイスセキュリティポスチャ(Device Security Posture)、ユーザーの地域、アプリケーションのリスク、コンプライアンス評価などのさまざまなアクセスコンテキスト属性を使用して、機密データへのユーザーアクセスを制御します。Catoは、グローバルなクラウドサービスと、オフィス、自宅、遠隔地などの場所に関係なく、すべてのユーザーに一貫してZTNAポリシーを適用します。 継続的なデバイスポスチャ評価 Catoは、接続時およびセッションを通して、オペレーティングシステムとパッチ、アンチウイルス、ディスク暗号化、デバイスファイアウォール、地理的位置、デバイス証明書を含む接続 デバイスポスチャ(Device Posture) を評価します。デバイスポスチャのチェックに失敗した場合、Catoはユーザーの接続を完全に終了させたり、デバイスが準拠するまで特定のリソースへのアクセスをブロックしたりすることができます。継続的なデバイスポスチャ評価により、デバイスが最低限の要件を満たしていることを確認することで、組織のセキュリティポスチャを強化し、侵害されたエンドポイントからのデータ漏えいのリスクを低減します。 一貫したユーザーエクスペリエンスのためのアプリケーション最適化 リモートユーザーから、アプリケーションのパフォーマンスが低下し、生産性に影響が出るという苦情が寄せられることがよくあります。これは通常、信頼性の低いインターネット接続と、セキュリティ検査のために中央ロケーションにトラフィックをバックホールすることが原因です。 Catoクラウドには、堅牢な最適化とQoS機能を備えたグローバルプライベートバックボーンが含まれており、どこからでもクラウドとオンプレミスのリソースに最適化されたアクセスを提供することを目標としています。Catoを利用すれば、Catoクラウドに接続されたリモートユーザーは、オフィスのユーザーと同じように最適化されたアプリケーションアクセスを利用できます。 サードパーティとBYOD向けクライアントレスアクセス Catoは、Catoクライアントをインストールできないユーザのために、 プライベートアプリケーションへのWebブラウザベースのクライアントレスアクセスをサポート しています。管理者は、アプリケーションをWebポータルに簡単に公開し、アクセスポリシーを作成し、どのユーザーに対しても瞬時に安全なアプリケーションアクセスを可能にすることができます。Catoのクライアントレスアクセスは、最小限のセットアップで済み、選択した外部のSSOおよびMFAプロバイダからのセキュアな認証、またはCatoのユーザデータベースを使用して展開できます。 完全なリモートアクセスの可視化と制御 Catoは、リモートユーザーの接続とアクティビティを監視するための専用ダッシュボードを管理者と監査者に提供します。ダッシュボードには、現在接続しているユーザー、その場所、接続元デバイスと接続姿勢、アプリケーションの使用状況分析が表示されます。ワンクリックのフィルタリングにより、関連するネットワーキング、アクセス、セキュリティイベントをユーザーごとに分析し、新しいアクセスポリシーの作成をサポートします。 あらゆるユースケースに対応(社給・BYOD、全OSのサポート) Cato Universal ZTNAクライアントは、 Windows、MacOS、iOS、Android、Linuxをサポート しており、デバイスが企業所有であるかBYODであるかに関係なく、最大限のカバレッジを提供します。管理者がレガシーVPNからCato Universal ZTNAにシームレスに移行できるように、一般的なモバイルデバイス管理(MDM)を介した中央展開がサポートされています。MDMを使用しない外部の請負業者や企業には、ユーザープロビジョニング用のセルフサービスポータルが用意されています。 継続的な脅威防御とデータ保護 Catoは、脅威防御とデータ保護のために、すべてのユーザートラフィックを継続的に評価します。Catoのシングルパスクラウドエンジン(SPACE)は、FWaaS、SWG、IPS、NGAM、CASB、DLP、RBIなどを含む複数のセキュリティエンジンを使用して、ユーザーのセッショントラフィックを検査します。悪意のあるトラフィックや機密データへの不正アクセスは、特定、監査、ブロックされます。Catoは、企業が単一のプラットフォームを使用してリモートアクセス、脅威防御、データ保護の要件に対処できるよう支援し、リモートアクセスのケースをサポートするためにしばしば必要となる複雑なルーティングや統合プロジェクトを回避します。   まとめ Catoクラウドの標準サービス機能であるSD-WANとリモートアクセス ZTNAの記事をご紹介させていただきました。 Catoクラウドに少しでも興味をお持ちになられた方は、遠慮なくSCSKまでお問い合わせください。 SASE、Cato Networks社、Catoクラウド(Cato Cloud/Cato SASE Cloud)自体の知名度もまだまだ低い状況です。 SCSKでは、2021年からSASEの主要ソリューションを一同に紹介を行うオンラインセミナー「SCSK SASE Solution Summit(通称S4 エスフォー)」を定期的に開催しております。これまで14回開催し、1,800名以上の方にご参加いただいております。 S4については、次回は2024年4月以降に開催する予定ですので、改めてご案内します。 来月、2024年3月14日に、Catoクラウドの主要機能を2時間・デモ形式でご覧いただけるセミナーを開催しますので、ご興味のある方は是非ご参加ください。 Catoクラウドデモセミナー~Catoクラウドの主要機能を2時間で網羅~ 本セミナーでは、世界初のSASEである「Catoクラウド」の概要をたっぷり2時間、デモ形式でご覧いただきます。 また、ご希望の方(先着10名様)は、デモ環境に対して、お手元の環境からハンズオン形式でCatoクラウドに触れて頂くことが可能な参加型セミナーです。 www.scsk.jp SASE、Catoクラウドセミナー以外に、Catoクラウドのお客様導入事例の制作、FAQサイト運営、この TechHarmony(技術ブログ)で、皆様のお役に立て、Catoクラウドの知名度アップに少しでも貢献できればと考えております。
Cato クラウドには TCP Acceleration という機能があり、この機能は Cato クラウド経由で行う TCP 通信を高速化するための機能です。この機能にどの程度効果があるのか気になりましたので、実際に測定を行ってみました。 TCP 通信が遅くなる原因 インターネット回線を敷設して十分な帯域を契約しているのに、期待するほどスループットが出ないといった経験をお持ちではないでしょうか? 利用しているネットワーク機器や通信相手の帯域・混雑が原因でスループットが出ないことがありますが、それ以外の原因でスループットが出ないこともあります。特に、海外との間で大きなデータを送受信する際に数 Mbps のスループットになってしまうようなケースがあり、これは TCP の通信特性が原因であることが多いです。 TCP は信頼性のある通信プロトコルであり、受信確認 (ACK) と再送の仕組みによりパケットロスが発生しても確実にデータを届けることができるようになっています。このとき、1つのパケットを送信して受信確認が返ってきてから次のパケットを送信するというのでは通信効率が非常に悪いため、受信ウィンドウ (Window) というパラメータを受信者が指定することで一定量のパケットをまとめて送信・受信確認する仕組みも用意されています。 さらに、TCP の実装 (Windows、macOS、Linux などの OS) はネットワーク上での輻輳発生を防ぐために輻輳ウィンドウ (Congestion Window) を動的に変更して送信量を制御する仕組みを持っており、輻輳が発生しない範囲で効率的な通信を行えるようにもなっています。各ウィンドウのサイズがどのように変動して定まるかについては複雑なのでここでは説明せず一部後述するに留めますが、メモリサイズの上限、パケットロスの発生、レイテンシの変動などによって定まるものと理解ください。 TCP のスループットはパケットロスや輻輳が無ければ「ウィンドウサイズ ÷ RTT」という式で概ね近似できます。例えば、ウィンドウサイズが 64KB で RTT が 5ms の場合、102.4Mbps (64 / 1000 * 8 / 0.005) となります。通信を行う2点間の距離が遠いほど RTT が大きくなりますので、スループットは反比例して低くなっていきます。ウィンドウサイズを大きくすればスループットは高くなりますが、輻輳が発生するとパケットロスやレイテンシの悪化によって輻輳ウィンドウサイズが小さくなるため、制限なく大きくできるということはありません。 こういった TCP の通信特性により、海外との通信ではスループットが期待するほど高まらないという結果に繋がります。 TCP Acceleration 機能が通信を速くする仕組み Cato クラウドの TCP Acceleration 機能は、2点間の TCP 通信を複数の TCP 通信に分割することで実現されています。Knowledge Base の次のページにも仕組みが記載されていますので、そちらもご参照ください。 Explaining the Cato TCP Acceleration and Best Practices Accelerating and Optimizing Traffic ここでは例として、アメリカ東海岸に出張した社員が Cato クライアントで Ashburn_DC2 PoP に接続し、Tokyo_DC2 PoP に接続された日本国内の拠点にある社内サーバにアクセスするケースで説明します。 通常は出張した社員の PC と社内サーバとの間で1つの TCP 通信が行われますが、TCP Acceleration 機能が有効だと次の3つの TCP 通信に分割されます。 出張した社員の PC と Ashburn_DC2 PoP の間の TCP 通信 社内サーバと Tokyo_DC2 PoP の間の TCP 通信 Ashburn_DC2 PoP と Tokyo_DC2 PoP の間の TCP 通信 1と2の通信は比較的近距離で行われ、RTT は数ミリ秒程度なので高速な通信を行えます。 3の通信は日本とアメリカ東海岸の間で行われる遠距離通信で、インターネット経由だと RTT は 150ms 以上あります。この通信は Cato のプライベートバックボーン上で行われ、インターネットで通信するよりも低レイテンシで信頼性の高いネットワークとなっているようです。 TCP Acceleration 機能を利用するとスループットに影響を与える RTT は3の TCP 通信の値になって小さくなりますので、全体としてスループットの高速化が実現されています。 効果測定 TCP Acceleration 機能が実際にどの程度効果があるのか測定してみました。 測定環境 効果測定にあたり Amazon EC2 の東京リージョンとバージニア北部リージョン (アメリカ東海岸) にそれぞれ1台ずつ Linux マシンを用意し、バージニアから東京に向けてトラフィックを流すような測定を行いました。ここでは便宜上、東京のマシンをサーバ、バージニアのマシンをクライアントと呼ぶことにします。 また、測定のために、スループットやレイテンシの測定によく利用されるツールである iperf2  を利用しました。 測定パターン 測定パターンは次の5つです。 インターネットだけを用いた通信 Cato クラウドの WAN 通信 (TCP Acceleration 機能あり) Cato クラウドの WAN 通信 (TCP Acceleration 機能なし) クライアントマシンは Ashburn_DC2 PoP に接続し、その PoP からインターネット経由でサーバマシンに通信 (TCP Acceleration 機能あり) クライアントマシンは Ashburn_DC2 PoP に接続し、Tokyo_DC2 PoP からインターネット経由でサーバマシンに通信 (TCP Acceleration 機能あり) TCP Acceleration 機能を有効にするかどうかは CMA (Cato 管理画面) の [Network] – [Network Rules] の設定画面で変更でき、”Voip Voice” カテゴリ (Zoom や SIP など音声通信系のアプリケーション) 以外の通信では TCP Acceleration 機能がデフォルトで有効となっています。 これに加えて、3の測定を行う前には TCP Acceleration 機能を無効にする次のような Network Rule を追加しました。 また、Cato クラウド経由でインターネットアクセスを行う場合、通常は接続した PoP からインターネットに通信が行われますが、5の測定を行う前に Tokyo_DC2 PoP からインターネットに通信が行われるようにする Network Rule も追加しました。 測定指標 測定した指標は次の4つです。 ping を用いた RTT トラフィック無制限時の平均スループットと、そのときの最大レイテンシ 少量トラフィック (2Mbps) を流したときの最大レイテンシ 測定結果 各測定パターンについて1度ずつ測定した結果は次の通りとなりました。 測定パターン ping による RTT 無制限時の平均スループット 無制限時の最大レイテンシ 少量スループット時の最大レイテンシ 1 165ms 68.6Mbps 246ms 83.6ms 2 159ms 153Mbps 1900ms 132ms 3 同上 9.61 Mbps 296ms 763ms 4 163ms 75.2Mbps 1619ms 131ms 5 161ms 183Mbps 1796ms 136ms 今回の環境では、インターネットだけを用いたとき (測定パターン1) は開始から10秒後にスループットが 80Mbps 程度まで上昇し、その後はその速度で安定して通信できていました。上記の測定とは別で UDP を用いてさらにトラフィックを流してみたところ、1Gbps のトラフィックも問題なく流せましたので、それと比べると TCP のスループットは低いです。インターネット回線で長距離通信なので高トラフィックを流すとパケットロスが発生しやすく、1Gbps の UDP トラフィックでは 1.5% 程度、100Mbps だと 0.011% 程度発生しましたので、パケットロスも影響して TCP のスループットが低くなっているものと考えられます。 TCP Acceleration 機能を有効にした WAN 通信 (測定パターン2) やインターネット通信 (測定パターン5) を見ると、スループットは2倍以上に上昇しています。時間的な変動があり安定した速度ではありませんでしたが、有意に速くなっています。ただし、TCP 通信が3つに分割されたことや Cato クラウドによるトラフィック検査などの影響もあり、レイテンシが増えてしまっています。無制限時の最大レイテンシは見かけ上かなり大きくなっているだけなので特に気にしなくても良いですが、少量スループット時のレイテンシが 83.6ms から 50ms 程度大きくなっている点は利用者の体感にもいくらか影響を与えるものかもしれません。 測定パターン2と3を比較すると、TCP Acceleration 機能を無効にしたパターンは非常に悪い値となってしまっています。測定パターン3は1と同程度の値となると予想していたため、予想外の結果でもあります。通常は無効化することはない設定を無効化したためにこのような結果になったのかもしれません。 測定パターン4と5は日本とアメリカ東海岸の間でインターネットを経由するか Cato クラウドのバックボーンを経由するかの違いですが、バックボーン経由のほうが有意に良い結果となっています。ただし、パターン1と4を比較するとわずかにスループットが上昇しており、TCP Acceleration 機能というよりも Cato クラウドを利用することで通信が高速化したと言えるかもしれません。 Cato クラウドの輻輳制御に関して 前項の効果測定において、Cato クラウドのプライベートバックボーンを通るパターン (2,5) はそうでないパターン (1,4) に比べてスループットが2倍以上になっています。しかし、RTT は日米間の物理的な距離の影響が大きいため、わずかに減少しているだけです。そこで「ウィンドウサイズ ÷ RTT」というスループットの近似式を改めて見つめなおすと、RTT の減少ではなくウィンドウサイズの増加によってスループットが上昇したものと考えられます。 ウィンドウのうち、輻輳ウィンドウは TCP 通信で用いる輻輳制御アルゴリズムの種類によって異なる変動をします。Windows、macOS、Linux の現在主流のバージョンでは、デフォルトの輻輳制御アルゴリズムとして CUBIC が採用されています。このアルゴリズムはパケットロスが発生しない間はウィンドウを増加させ、パケットロスが発生するとウィンドウを減少させることで、輻輳が発生しない状態を維持しつつ極力多くのデータを送信するというものです。 一方、Cato クラウドでは輻輳制御アルゴリズムとして BBR の利用が推奨されており、各テナントの CMA の [Administration] – [Advanced Configuration] の中で BBR を利用するようデフォルト設定されています。 BBR はパケットロスではなくレイテンシを指標とし、レイテンシが悪化しない程度までウィンドウを増加させるアルゴリズムです。ただし、ネットワーク状況によってレイテンシが悪化することがあるため、定期的にウィンドウを最小に戻すという操作も行われます。 効果測定の結果や輻輳制御アルゴリズムの違いを踏まえると、Cato クラウドのプライベートバックボーン中では大きなトラフィックを流してもレイテンシが悪化しにくくなるような何らかのトラフィック制御が行われているものと推測されます。 まとめ 測定結果から、TCP Acceleration 機能に効果があることが確認できました。特に、物理的に距離が離れた通信で Cato クラウドのネットワークを経由するような形で TCP Acceleration を有効にすると、スループットが2倍以上に上昇するのは期待以上の効果でした。 インターネットとの通信において TCP Acceleration を適切に機能させるには、通信先のサーバと近い PoP からインターネットに出ていくように Network Rule を設定する必要がありましたので、この点は要注意です。 日本国内の TCP 通信については TCP Acceleration の仕組みや TCP 通信の特性上あまり効果は期待できず、測定により Cato クラウドのネットワークに負荷をかけることになってしまうため、今回は測定しませんでした。逆に、日本国内の通信における TCP Acceleration 機能を無効化することでパフォーマンスをチューニングできるのかどうかについては気になるところではありますので、機会があれば試すかもしれません。 Skeed 高速ファイル転送ソリューションのご紹介 今回のように日本と海外との間の通信を高速化するソリューションとして、弊社のグループ会社である Skeed 社もご紹介します。 Skeed高速ファイル転送ソリューション | 株式会社Skeed 日米欧で特許取得した独自技術をベースに、遠距離間での大容量ファイル転送を高速かつ安全・確実、簡単に実現するSkeedの高速ファイル転送ソリューション。転送シミュレーションや比較優位性をご紹介します。 skeed.jp このソリューションは大容量ファイルの転送に特化したものであり、TCP 通信の課題を UDP 通信によって乗り越えるというものです。一般的な通信に向けたものではありませんが、日本と海外との間で大容量ファイル(映像データ、ビッグデータ、データベースのバックアップデータなど)をやり取りしたいという際には、このソリューションもご検討いただければ幸いです。
こんにちは、広野です。 AWS AppSync を使用したアプリケーションを開発する機会があり、リゾルバ、主に VTL の書き方に関してまとまった知識が得られたので紹介します。前回からの続きもので、Query の書き方を紹介します。 本記事では、VTL の書き方にフォーカスしています。ご了承ください。 AWS AppSync、リゾルバ、VTL の説明については以下の記事をご覧下さい。 AWS AppSync リゾルバ (VTL) の書き方サンプル No.1 - Amazon DynamoDB GetItem Amazon DynamoDB に VTL で GetItem をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.01.09 AWS AppSync リゾルバ (VTL) の書き方サンプル No.2 – Amazon DynamoDB BatchGetItem Amazon DynamoDB に VTL で BatchGetItem をかけるときの基本的な書き方を紹介します。 blog.usize-tech.com 2024.01.19 AWS AppSync を使って React アプリからキックした非同期ジョブの結果をプッシュ通知で受け取る 非同期ジョブを実行した後、結果をどう受け取るか?というのは開発者として作り込み甲斐のあるテーマです。今回は React アプリが非同期ジョブを実行した後に、AWS AppSync 経由でジョブ完了のプッシュ通知を受け取る仕組みを紹介します。 blog.usize-tech.com 2022.12.01 Amazon DynamoDB に Query する VTL 例えば、AWS AppSync から以下のリクエストを受けたとします。Amazon DynamoDB には適切なデータがある想定です。テーブル名はリゾルバの別の設定 (Data Source) で行います。 引数となるパラメータ: パーティションキー pkey、ソートキー skey 必要なレスポンス: パーティションキーにマッチし、ソートキーのパラメータとして渡された文字列から始まるデータ全て 今回は受け取ったパーティションキーとソートキーのパラメータをもとに、Query の条件に当てはめます。ソートキーは begins_with のキー条件式を使用します。このサンプルでは、最大 30 件のデータのみ取得するようにしています。 リクエストマッピングテンプレート { "version": "2018-05-29", "operation": "Query", "query": { "expression": "#pkey = :pkey AND begins_with (#skey, :skey)", "expressionNames": { "#pkey": "pkey", "#skey": "skey" }, "expressionValues": { ":pkey": $util.dynamodb.toDynamoDBJson($context.arguments.pkey), ":skey": $util.dynamodb.toDynamoDBJson($context.arguments.skey) } }, "limit": $util.defaultIfNull($context.arguments.first, 30), "nextToken": $util.toJson($util.defaultIfNullOrEmpty($context.arguments.after, null)), "consistentRead": false, "select": "ALL_ATTRIBUTES" } operation には、Query を書きます。これは Amazon DynamoDB に Query するぞ、という意思表示です。 アプリから受け取った引数はマッピングテンプレート内では $context.arguments 内に格納されます。 pkey や skey というアイテム名であれば問題はないのですが、DynamoDB の予約語がアイテム名になっている場合は必ず # や : を使用してエスケープのような処理をしないとクエリが動作しません。おまじない的に、このように書くことをお勧めします。 これで Amazon DynamoDB に Query をかけることができます。 レスポンスマッピングテンプレート 結果は配列に格納されます。戻ってきたデータをそのままアプリ側に戻す書き方です。 $utils.toJson($context.result) VTL に関しては以下の AWS 公式ドキュメントも必要に応じてご確認ください。 Resolver mapping template reference for DynamoDB - AWS AppSync Resolver Mapping Template Reference for DynamoDB for AWS AppSync. docs.aws.amazon.com まとめ いかがでしたでしょうか。 Query は非常によくオペレーションで、キー条件式をいろいろ変えて使うことが多いと思います。あえて紹介するまでもないと思いましたが、一応紹介させて頂きました。 本記事が皆様のお役に立てれば幸いです。
こんにちは、広野です。 本記事は、以前公開した記事の続編です。つくった RAG の概要は以下の記事をご覧下さい。 React アプリに Agents for Amazon Bedrock への問い合わせ画面を組み込む [RAG・レスポンスストリーミング対応] Agents for Amazon Bedrock を使用して簡単な RAG をつくってみましたので、問い合わせ画面コードの一部を紹介します。 blog.usize-tech.com 2024.02.15 本記事では、Agents for Amazon Bedrock から Amazon Bedrock の Anthropic Claude Foundation Model に問い合わせる構成をメインに紹介します。 アーキテクチャ RAG 用の Knowledge Base (ベクトルデータ) には、Agents for Amazon Bedrock が自動作成してくれる Amazon OpenSearch Service Serverless を使用しています。別途 Amazon S3 バケットを作成し、そこに当社公式ホームページの情報を PDF 化したファイルを格納し、OpenSearch に Sync させます。 一般的な回答をするために使用する生成系 AI の基盤モデルには、Amazon Bedrock の Anthropic Claude 2.1 を使用しています。 ユーザからの問い合わせ内容が当社 (SCSK 株式会社) に関連するものであれば Agents for Amazon Bedrock が自動的に OpenSearch 内の情報を取得します。それ以外の内容であれば AWS Lambda 関数経由で Claude 2.1 モデルに問い合わせます。 この 分岐を司る部分を中心に 設定情報など紹介していきます。 つくったもの RAG 検索用 Knowledge Base Agents for Amazon Bedrock により RAG 用の Knowledge Base を作成する方法については、以下の記事を参考にしました。 生成AI初心者がAmazon BedrockのKnowledge baseを使ってRAGを試してみた AWS re:Invent2023にて、Amazon BedrockのKnowledge baseとAgentsがGAされたと発表がありました。今回はこのうちKnowledge baseを利用して、RAG(Retrieval Augment Generation)を試してみたいと思います。 blog.usize-tech.com 2023.12.07 一般検索用 AWS Lambda 関数 以下の関数コードを書きました。 Amazon Bedrock の Claude モデルに問い合わせるコードは既に世の中に溢れているコードサンプルと同じです。ただし、今回の構成ではこの AWS Lambda 関数の呼び出し元が Agents for Amazon Bedrock なので、その仕様に基づき event[‘inputText’] をプロンプトに入れています。 また、Agents for Amazon Bedrock に戻すレスポンスも所定のフォーマットにしないといけないので、その仕様に合わせています。 import boto3 import json bedrock = boto3.client('bedrock-runtime') def lambda_handler(event, context): enclosed_prompt = "\n\nHuman: " + "以下の質問文に対して適切な回答をしてください。\n" + event['inputText'] + "\n\nAssistant:"; body = { "prompt": enclosed_prompt, "max_tokens_to_sample": 3000, "temperature": 0.5, "top_k": 250, "top_p": 1, "stop_sequences": ["\n\nHuman:"], "anthropic_version": "bedrock-2023-05-31" }; res = bedrock.invoke_model( body=json.dumps(body), contentType='application/json', accept='application/json', modelId='anthropic.claude-v2:1' ) responsebody = json.loads(res['body'].read()).get('completion', '適切な回答が見つかりませんでした。') return { "messageVersion": "1.0", "response": { "actionGroup": event["actionGroup"], "apiPath": event["apiPath"], "httpMethod": event["httpMethod"], "httpStatusCode": 200, "responseBody": { "application/json": { "body": responsebody } } }, "sessionAttributes": event["sessionAttributes"], "promptSessionAttributes": event["promptSessionAttributes"] } Agents for Amazon Bedrock の設定 RAG 検索用 Knowledge Base および 一般検索用 AWS Lambda 関数が完成したら、それらをオーケストレートする Agents for Amazon Bedrock の設定をします。順に AWS マネジメントコンソールの画面スクリーンショットを追って説明します。 アクショングループには、一般検索用 AWS Lambda 関数を登録します。複数登録可能なので、決まった用途ごとに作成した Lambda 関数があれば登録し、それぞれに適切な説明を記入します。その説明内容をもとに、Agents for Amazon Bedrock が使用するアクショングループを選択することになるので説明は重要です。今回のケースでは、SCSK に関する問い合わせ以外には Claude に問い合わせるということを記載しています。たまたま英語で書きましたが、日本語でも大丈夫と思います。 ナレッジベースには、RAG 検索用ナレッジベースを登録します。複数登録可能です。こちらも同様に、用途ごとに説明を書きます。今回のケースでは、SCSK に関する情報が必要な場合はナレッジベースからデータを取得するよう指示しています。 モデルの詳細欄では、Agents for Amazon Bedrock 全体に指示する内容を書きます。1つは言語モデルで、執筆時点では Claude しか選択できませんでしたのでそれを選択しています。最重要なのはエージェントへの指示で、ここで RAG 検索と一般検索の使い分けルールを自然言語で記述します。プログラマティックな記法ではありません。今回のケースでは、日本語で回答することと、SCSK に関する情報はナレッジベースから、それ以外はアクショングループから情報を取得するよう指示しています。分岐の設定はこれだけで OK です。 アクショングループ設定時の注意点 アクショングループを設定するときには、以下 2 つの注意点があります。 AWS Lambda 関数を実行するための権限 OpenAPI の設定 AWS Lambda 関数を実行するための権限 Agents for Amazon Bedrock から AWS Lambda 関数を呼び出すには、一般的な Lambda 関数実行時と同様、呼び出し側に呼び出す権限を与える必要があります。なじみのない方もいらっしゃるかもしれませんが、Lambda 関数にリソースベースのポリシーを設定します。 AWS 公式ドキュメントのまま設定すれば OK です。 Permissions to create and manage an agent - Amazon Bedrock To use a custom service role for agents instead of the one Amazon Bedrock automatically creates, create an IAM role with the prefix AmazonBedrockExecutionRoleFo... docs.aws.amazon.com OpenAPI の設定 アクショングループを登録するときに、1 アクショングループにつき 1 つの OpenAPI スキーマを登録する必要があります。 上記スクリーンショットは途中で切れていますので、実際に使ったスキーマを以下に貼り付けます。 openapi: 3.0.0 info: title: LambdaBedrockAgentAgClaude version: 1.0.0 description: Lambda Function to invoke Bedrock Claude foundation model triggered from Bedrock Agent paths: "/": get: summary: Invoke Claude foundation model description: Invoke the Claude foundation model to answer for a general query except for the related to SCSK. responses: "200": description: response content: application/json: schema: type: object properties: body: type: string decription はおそらく Agents for Amazon Bedrock がこのアクショングループを使用するか否かを判断するのに重要だと思うので、目的を書いておきます。 paths の部分ですが、正直ここの記述は Lambda 関数を実行する上では使用しないので、適当に書いておきました。get とか書いてありますが、全く使用しません。一応定義はしないといけないので書いている感じです。これで動きました。 まとめ いかがでしたでしょうか。 Agents for Amazon Bedrock の設定は AWS マネジメントコンソールでノーコードでできます。分岐が増えた場合でも、応用してつくれると思います。 本記事が皆様のお役に立てれば幸いです。
こんにちは。SCSKのひるたんぬです。 2月も中頃となり、段々と過ごしやすい気候になってきましたね。ここ数日は気温差がすごく、服装に悩みます。 と同時に始まるのが花粉シーズン… 日本気象協会の発表 によると、今年の花粉飛散量は「例年並みか例年よりやや多い」そうです。 目鼻が悲惨なことにならないよう今から対策をしていきたいと思います。 話がそれますが、この文章を書きながら、ふと「花粉飛散量ってどうやって予測しているんだろう?」と思ったので調べました。 日本気象協会の花粉飛散予測は前シーズンの花粉飛散結果や今後の気温予測などの気象データをもとに、全国各地の花粉研究会や協力機関からの情報、花芽の現地調査の結果などをふまえて予測しています。( 詳しい計算方法などは企業秘密です…すみません! ) 引用元:日本気象協会 JWAニュース「 日本気象協会 2024年 春の花粉飛散予測(第3報)~まもなくスギ花粉シーズンスタート ピークは2月下旬から~ 」 …肝心なところはやはり秘密なのですね。一方気象庁では、 (前略)花粉の飛散に影響を与える気温や風、降水等の予測データを提供しており、 今後、スーパーコンピュータやAIを活用し飛散予測を行う際の基礎情報 となる詳細な三次元の気象情報も提供して、民間事業者が実施する花粉の飛散予測をさらに支援していく計画です。 引用元:気象庁 知識・解説「 花粉飛散予測について 」 と記載があるので、これからはこのような分野にもAIが活用¹ されるのかもしれませんね! ¹ 一部事例 もありましたが、現在はサービスの提供を行っていないようです。 話を戻します。今回は、私が配属され引き継いだ課内業務の中で、自動化できたら嬉しいなぁ…というものを、 PowerAutomateの無料枠を駆使して 実装したので、その工夫点についてご紹介いたします。 やりたいこと 今回は、 SharePoint(Microsoft Lists)に登録されたセキュリティパッチ適用に関する 発信文書をトリガーに、セキュリティパッチ適用の依頼メールを送付 する 期限日が近づいたら、 社内システムからパッチ未適用者を抽出し、リマインドメールを送付 する という2つの機能を構築しました。全体的な処理の流れを下図に示します。 今回はPower Automateのクラウドフロー(上図左・青)に加え、社内システムを利用する必要があったため、社内ネットワーク内のPCで動作するデスクトップフロー(同右・緑)を組み合わせております。 目的 現状の業務フローでは、 担当者が、セキュリティパッチ配布の発信文書の確認・メール送付、未適用者のリマインドを 手作業で行っており、担当者の人的・時間的負担 となっている という課題点がありました。私が配属後にこの担当業務を引き受けた際、「定型作業の塊だな…」と思ったので、勉強の意味合いを含めてこのフローを自動化することにしました。 これにより、フローに人間が関与することがなくなるので、 担当者の 人的・時間的負担の削減 業務の 正確・確実な遂行 が期待されます。 処理の流れ ここでは実装した処理につきまして、処理の流れに沿って概要を説明します。 太字 は、無料版で利用するために工夫した点なので、次の章にて詳しく説明いたします。 【クラウド】発信文書の登録 ▶ メール通知・カレンダー登録 このフローは、SharePointに発信文書が登録されたことにより起動します。発信文書にはセキュリティパッチの適用依頼の他にも日々多くの文書が登録されます。そのため、発信文書のタイトルにより絞り込みを行い、セキュリティパッチの適用依頼に関する発信文書のときにのみ処理を行うように設定します。下図にこのフローの大まかな流れを示します。   メールによる通知を行う前に、自分自身への事前確認を挿入しています。これにより、フローが発信文書を誤検知し誤ったメールを送付することを防ぎます。 【クラウド】カレンダーからリマインド日を検知 このフローは、毎日決まった時間に起動します。起動したらまず、その日のカレンダーを参照し、セキュリティパッチのリマインド日であるかを確認します。リマインド日であった場合は、次の デスクトップフローを実行するために自分宛てにメールを送信 します。   【デスクトップ】社内システムからパッチ未適用者を抽出 このフローは、 タスクスケジューラを用いて毎日決まった時間に起動 します。起動したら、自身のメールフォルダを確認し、リマインド日に関するメールを確認します。メールがあった場合は、社内システムにアクセスし、セキュリティパッチを適用していない方のメールアドレスを抽出します。そして、その アドレスを自分宛てに、特定の件名をつけた上で送信 します。   【クラウド】未適用者へリマインドメールを送付 このフローは、デスクトップフローで送信されたメールをトリガーとして起動します。デスクトップフローで送信されたメールかは、件名を用いて判別します。メールが存在した場合は、そのメールからメールアドレスを抽出し、 各自にリマインドメールを送信 します。   Power Automate 無料版の制約 今回の機能実装において無料版が原因で直面した主な制約は次の3点です。 「クラウドフロー」と「デスクトップフロー」間の連携は有料版のみ 無料版では、クラウドフローから他のフローの呼び出しができません。そのため、クラウドフローでカレンダーでリマインド日を検知した場合、それをデスクトップフローに通知する仕組みを一から構築する必要があります。 今回はこの仕組みをメールのやり取りによって実現しました。メールを利用したやり取りの流れを下図に示します。 これにより、デスクトップフローはクラウドフローから送信されたメール[TRIGGER]を確認することで、フローを実行するべきか判断をすることができます。また、デスクトップフローでの実行結果(抽出結果)をメール[RESPONSE]で送信することで、クラウドフローがそのメールをトリガーとして後段の処理を実行することを可能にしています。 【デスクトップ版】 トリガーも有料版のみの機能 先ほどの対処法により、クラウドフローとデスクトップフロー間での連携をすることが可能になりました。 しかし、無料版のPower Automate Desktopでは通常、フローは画面上の再生ボタン ▷(下図)をクリックし手動で実行する必要があります。 この状態ですと、先程ご紹介したクラウドフローからのメールが送られてきたとしても、手動でデスクトップフローを開始させなければなりません。これでは自動化できたとは言え無いですね… そこで、これに対処するために、Windowsに標準で搭載されているタスクスケジューラーを活用して一日一回、フローを自動実行するような処理を追加しました。 こちらにつきましては、以下の2つのサイトが非常に参考になりました。 【DX】PowerAutomate Desktop無料版を自動定期実行してみた!|株式会社エアリー:技術ブログ みなさんこんにちは!エアリー社員のSです! 今回はPower Automate Desktopの無償版で、 タスクスケジューラーを活用してフローの自動定期実行を実現します!! なぜタスクスケジューラーを利用するのか Power Automate Desktopの無償版では定期実行を行うことができません。 なので、タスク... note.com [Power Automate Desktop]名前を指定してフローを実行するPowerShellスクリプト | 初心者備忘録 ここ数日、話題のPower Automate Desktop(PAD)を触っています。 多数のアクションが用意 www.ka-net.org これを参考にすることで、「デスクトップフローを毎日実行し、[TRIGGER]メールが来ていたら処理を実行する」というフローを作成することができました。 便利なアクションの多くは有料版でのみ提供 Power Automateの有料版では提供されている多くの機能、特に外部サービスとの連携について、無料版では多くが制限されています。その一例を以下に示します。 デスクトップ版… Teams・Outlookカレンダー・SharePoint など → フローをデスクトップ版に集約することができない → クラウドフロー・デスクトップフローを分けて実装 クラウド版… AWSサービス・Azure・その他外部サービス など → 今回のサービス構築には影響小 一方で、パッチ未適用者へのメール送付につきましてはデスクトップフローで行うことも可能ですが、今回はあえてメール送付のフローをクラウドフローにて実行しています。これは、無料版のクラウドフローでは、メール送付の他にもTeamsのチャットへの投稿にも対応しており、連絡方法が変更になった際にも柔軟に対応できるためです。   まとめ 今回はMicrosoftが提供するPower Automateを用いて、定型業務の自動化に取り組みました。普段はAWSに触れていますが、今回の取組を通して目的や用途に応じてサービスを使い分けることの大切さを実感しました。特定のサービスではなく、幅広いサービスを活用できるようになりたいですね! 私の環境でもPower Automateの有料版が利用可能になる日が来ることを願って、この記事を締めくくりたいと思います。 最後までご覧いただき、ありがとうございました!
こんにちは!SCSKの江木です。 Dialogflow CXでチャットボットを作っていて、外部のAPIを利用することでチャットボットの機能を拡張したいと思うことがありました。 そのようなときに役立つのがWebhookです! 今回はチャットボットに翻訳機能を追加するために、WebhookでTranslation APIを叩いてみようと思います! Webhookとは? Webhookの説明をする前に、Dialogflow CXについて触れておきます。 Dialogflow CXは、Google Cloudが提供する、自然言語理解と会話型AIの機能を備えたサービスです。一言で言うと、チャットボットを作ることが出来るサービスになります。 WebhookはこのDialogflow CXの会話セッション中に、ビジネスロジックをホストしたり、他のサービスを呼び出したりするために使います。 WebhookはCloud Functionsで実装します。また、Webhookの実行時の挙動は以下の通りです。 Webhookを使うことで外部からデータを受け取ることが出来るようになるので、ただ決まりきったことを返すだけのチャットボットに「今日の天気を返す」、「翻訳」、「外部のデータベースを検索する」などの機能を追加することができるようになるのです。   Webhook作成 Webhook作成の前にDialogflow CXのフローを作成します。また、作成する際は以下の点に留意してください。 APIキーの取り扱いには注意してください。 今回はGoogle Cloudのtranslation APIを使うので、Google Cloudに課金されますが、他のAPIを使う際はどこに課金されるのか把握しておいてください。 Dialogflow CXのフロー作成 翻訳機能をつけたいので、以下のようなフローを「asia-northeast1」リージョンで作成しました。 フローの流れは以下の通りです。 Start Pageで「こんにちは」と入力すると、「翻訳しましょう」と表示するRouteが選択され、Translateページに遷移する Translateページにて、翻訳したい言語と文章を入力すると、翻訳された文章を返す End Sessionページに遷移する   Translateページの設定は以下の通りです。   翻訳言語のパラメータであるlangのentity typeを設定しました。 Entityの値は以下のTranslation APIのドキュメントを参考にしました。 言語サポート  |  Cloud Translation  |  Google Cloud cloud.google.com Webhook作成 Translation APIに使用するAPIキーを作成 コンソールから[APIとサービス]→[認証情報]→[+認証情報を作成]→[APIキー]を押下し、APIキーをコピーします。 Cloud Functionsでwebhookを作成 1.Cloud Functionsのコンソールの[+ファンクションを作成]を押下します。   2.関数名を入力後、「asia-northeast1」リージョンを選択し、[次へ]を押下します。   webhookをコーディング 今回はpythonを使いたいので、ランタイムはPython 3.12としました。エントリーポイントはコードの関数名と同じく、webhookとしました。 以下、main.pyのコードになります。 import functions_framework import requests @functions_framework.http def webhook(request):     response = request.get_json()   #Dialogflow CXからパラメータの取得   lang = response["sessionInfo"]["parameters"]["lang"]   text = response["sessionInfo"]["parameters"]["sentence"]     tag = response["fulfillmentInfo"]["tag"]   #$$$$$$$$$$$にはコピーしたAPIキーを入力してください。   url = "https://translation.googleapis.com/language/translate/v2?key=$$$$$$$$$$$"   params = {     "q": [text],     "target": lang,     "source": "ja"     }   #APIを叩く   output = requests.post(url, json=params)   if tag == "APITest":     #結果を格納     output_text = output.json()["data"]["translations"][0]["translatedText"]   else:       output_text = tag   response["fulfillmentResponse"] = {           "messages": [               {                   "text": {                       "text": [                           output_text                       ],                       "allowPlaybackInterruption": False                   }               }           ]       }     return response 続いて、requirement.txtは以下の通りです。こちらはmain.pyの実行に必要なpythonモジュールをインストールするために使用します。 functions-framework==3.* requests Webhookをデプロイ 1.コードが書けたら、[デプロイ]を押下します。   2.作成したWebhookのURLをコピーします。 権限設定 Cloud Functionsの第2世代はCloud Runで動作しています。それゆえに、Cloud Runの起動元の権限をDialogflowのサービスアカウントに付与する必要があります。 Dialogflow CXのサービスアカウントを確認 1.Dialogflow CXコンソールの右側にある[Agent settings]を押下します。   2.[Share]タブを選択し、Dialogflow CXのサービスアカウントをコピーします。 Cloud Runの起動元の権限をDialogflowのサービスアカウントに付与 Cloud Functionsコンソールで作成したwebhookを開き、[Powered by Cloud Run]を押下します。 画面上部の[サービスの詳細]を押下します。 作成したwebhookのCloud Runの左側ボックスにチャックを入れます。画面右の[権限]タブの中の[プリンシパルを追加]を押下します。 新しいプリンシパルにコピーしたDialogflow CXのサービスアカウントを入力し、ロールで[Cloud Run 起動元]を選択した後、[保存]を押下します。 Webhook設定 翻訳したい言語・文章をAPIに投げたいので、$page.params.status = “FINAL”ルートにWebhookを設定します。 ルートの[Webhook settings]→[Enable webhook]にチェックを入れます。 Webhookと書かれた枠内を押下し、[+Create Webhook]を選択します。 [Display name]と、webhook作成の際にコピーした[Webhook URL]を設定し、[Save]を押下します。 tagを設定し、[Save]を押下します。 実装結果 作成したAgentでテストし、翻訳機能が実装できているか確認します。 うまく翻訳機能を実装することができました。これらの他にもlangのentity typeに登録した言語であれば、翻訳することができます。 終わりに 今回はDialogflow CXのチャットボットにTranslation APIを利用して、翻訳機能をつけました。 多言語対応の翻訳機能なので、チャットボットの機能をかなり拡張できたと思います。 Translation APIの以外のAPIを利用することで様々な機能をチャットボットに搭載することが出来ます!!! 最後まで読んでいただき、ありがとうございました。
どうも、Catoクラウドを担当している佐々木です。 Catoを使っていると、業務でアクセスするドメインが、CatoのSWG(Secure Web Gateway)機能でブロックしているカテゴリに 誤って分類され、通信できない!ということが時々ありますよね。 今回は、そんな問題が発生した場合の新しい回避策 カテゴリの手動修正  を紹介します。   ※画⾯は2024年2⽉時点のものです。機能アップデート等で変わる場合がありますので、あらかじめご了承ください。   CatoのSWG(Secure Web Gateway)について CatoのSWGでは、フィッシング、マルウェア、その他のインターネット経由の脅威からユーザーを保護します。 具体的には以下のような機能を提供しています。 70個以上の組み込みカテゴリと事前定義されたセキュリティポリシーによる即時保護 フィッシングサイトやマルウェア配信サイトに対する防御 検索エンジンによるポリシー回避の防止 カスタマイズ可能な通知によるエンドユーザーエクスペリエンスの最適化 SWGイベントのロギングとレポートによる完全な可視性   次世代L7Firewallと同じで、CMA上の 「Security」>「Internet Firewall」 で設定できます。   なにが問題か CatoのSWGでは、特定のアプリケーションやドメインをジャンルごとに分類した「カテゴリ」で通信制御できます。 ※危なさそうなサイトやアプリケーションをまとめた「カテゴリ」でまとめて通信をブロックするなどが可能です。 ※どのアプリケーションがどのカテゴリに分類されるかは、Assets>App Catalogで確認できます。   デフォルトでいくつかのカテゴリをブロックするルールが設定されており、また、個別に特定のアプリケーションカテゴリの ブロックルールを作成している場合もあるかと思います。   この時、 ブロックしたくない通信が誤ってブロックするカテゴリに分類されてしまい、 通信ができないという事象が発生することがありました。   これまでの対策 これまでは、こういう問題が発覚すると都度Catoに申告し、カテゴリの修正を依頼していました。 (xxxx.comは○○というカテゴリではありません。△△に修正してください、など)   だいたい3営業日程度で対応してくれましたが、それでも修正までタイムラグがあること、英語での依頼になることから、 運用担当者からすると修正までの一時対応含め、面倒な対応だったかもしれません。   これからの対策~カテゴリの手動修正~ 2024年1月29日に以下機能がリリースされました。 「Manually Override Default Domain Categorization(デフォルトのカテゴリ分類を手動で上書きする機能)」 この機能を利用すると 自身のテナント限定で特定のドメインを任意のカテゴリに 登録 する ことができます。   設定方法 「Assets」>「App Catalog」 から 「Domain Lookup」 タブをクリックください。 検索ウィンドウでカテゴリを変更したいドメイン or URLを入力されると、ドメインが属するカテゴリが表示されます。   ▼scsk.jpで検索した結果   「Categories」 の右横にある 「Edit」 をクリックすると、任意のカテゴリに変更できます。 最後に 「Save Changes」 をクリックして完了です。   ちなみに、変更すると以下のような Audit Trail ログが残ります。   動作確認 今回は「scsk.jp」のカテゴリを「 BusinessInformation」から「Beauty」に変更してみました。 そして、Internet Firewallでアプリケーションカテゴリ「 Beauty」をブロックしてみます。   結果、以下のように「 Beauty」に分類され、 ブロックされました。   カテゴリを元に戻す方法 手動でカテゴリを変更したものの、元に戻したい場合は以下の方法で対応可能です。   Assets>App Catalog から 「Domain Lookup」 タブをクリックください。 右端に表示されている 「 Show Account Overridden Domains」 をクリックすると、上書きしたドメイン一覧が表示されます。   削除したいドメインの右端にある 「ゴミ箱 アイコン」 をクリックすると、上書き設定が削除されます。 ※該当ドメインのカテゴリは初期設定に戻ります。 注意点 2024年2月時点ですべてのカテゴリが編集可能なわけではないようです。 <<KBより抜粋>> Only categories based on URL filtering services are editable. System categories defined by the Cato Security Research team can’t be edited.         “Catoセキュリティリサーチチームが定義したシステムカテゴリは編集できません”   実際何が変更できないかCatoにも確認してみましたが、現時点ではリストのようなものを提示することができないようで、 自分で設定変更しようとしてできないものがあれば、Catoに変更を依頼する必要があるとのことです。   まとめ 今回のポイントです。   ・ドメインのカテゴリを手動で変更できるようになった (Assets>App Catalog > Domain Lookupから) ・カテゴリ誤分類による通信トラブルが発生してもすぐに修正できるようになった ・ただし、仕様としてカテゴリ修正できない場合もある(この場合はCatoに変更依頼が必要) ・Catoの運用がちょっと楽になったかも!?   上記以外の情報についても弊社の 「Catoに関するFAQサイト」 に多数情報ございますのでご参考にください。 よくあるご質問 | Cato Cloud ケイトクラウド - SCSK Cato SASE Cloud Platform. powered by SCSK cato-scsk.dga.jp   最後に、SCSKではPoCから導入、運用まで幅広くCatoに関する支援を行っております。 本番構成への移行を見据えたPoC構成や、PoCでつまづきやすい点のサポートなど、豊富な導入実績を基にご支援いたします。 ぜひお声がけください!
こんにちは、SCSKでAWSの内製化支援『 テクニカルエスコートサービス 』を担当している貝塚です。 もっとNetwork Firewallの勉強がしたいのです 最近、AWS Network Firewallを触る機会が増えています。 インターネットを検索すれば、 Transit Gatewayと併用して、複数のVPC間通信やオンプレミスとの通信、インターネットとの通信など、Transit Gatewayを通るすべての通信をNetwork Firewallで検査するInspection VPCの構築方法を説明したAWSの記事 を読むことができます。ClassmethodさんやサーバーワークスさんなどのブログでもNetwork Firewallに関する記事を見つけることができます。もちろんAWS公式のマニュアルもあり、眺めていると日々項目が充実していくのが分かります。 それでも!! Network Firewallに関するノウハウを知ることのできる記事が圧倒的に足りません[1]。設定項目の説明は公式マニュアルを見れば書いてあるかもしれませんが、こういうユースケースの時はこの設定を選ぶのがよい、こういう設定をするとこういうことができるのでおすすめです、などの情報が 分かりやすく (重要)説明された記事は、実際にNetwork Firewallを構築して運用してみようという人にとって十分なものとは言い難いと感じます。 [1] Network FirewallはSuricataというオープンソースのIDS/IPSソフトウェアをベースに作られているので、Suricataの情報を探して読めば必要なことの多くは知ることができるのかもしれませんが、そちらへはあまり足を踏み出せていません……。   というわけでそれでも何か情報が落ちていないかと探していると…… AWS re:Inforce 2023 でそれなりの数のNetwork Firewallに関するセッションがあったことが分かりました。 早速、動画を視聴してみる、のです、が……私、英語、聞き取れないんですよね。最近のYouTube動画は英語字幕もついていますが、スピーカーの速度に合わせて字幕を読みつつスライドも読むとなるとまったく追いつきません。これを丁寧に繰り返し観ていたら、時間がいくらあっても足りない…… やりたいこと そこで、考えました。生成AIを使って効率よくAWS Network Firewallの勉強できないか、と。生成AIにはハルシネーションと呼ばれる、事実に基づかない嘘情報を返す現象があることはよく知られていますので、生成AIにただ質問するだけではろくな成果が得られないであろうことは火を見るよりも明らかです。 しかし幸いにもAWSでは昨年11月にKnowledge Base for Amazon BedrockというRAG(Retrieval-Augmented Generation/検索拡張生成)のサービスが一般提供を開始していますので、動画の字幕情報やプレゼンテーションのスライドを登録してやれば、内容を要約してもらったり、要約からさらに知りたい部分を詳しく説明してもらったりすることが可能なのではないでしょうか……? データの準備 先ほどの、AWS re:Inforce 2023のNetwork and Infrastructure Security関連の動画一覧 からNetwork Firewallに関係ありそうな動画を見繕い、字幕をダウンロードします。字幕のダウンロードにはこちらのサイト( DownSub.com )を利用しました。(特におすすめサイトというわけでもないので、ご利用は自己責任でお願いします)。字幕に表示時刻を併記したsrtという形式のファイルもダウンロードできますが、あまりメリットを得られなさそうだったのでtxt形式でダウンロードしています。 ついでに動画に対応するプレゼン資料(PDF)もダウンロードし、他にもSecurity JAWSの日本語のプレゼン資料なども加えました。Knowledge Base for Amazon Bedrockに登録した動画字幕およびプレゼン資料は下記一覧の通りです。この一覧も念のためテキストファイルにしてKnowledge Baseに登録しています。 Title: Security-JAWS DAYS - AWS Network Firewall && DNS Firewallで解決できること YouTube URL: PDF URL: https://speakerdeck.com/tsumita/20230826-securityjaws-nwfw-dnsfw Title: AWS re:Inforce 2022 - Deploying AWS Network Firewall at scale: athenahealth's journey (NIS308) YouTube URL: https://www.youtube.com/watch?v=VMVeTvX4OLw PDF URL: https://d1.awsstatic.com/events/aws-reinforce-2022/NIS308_Deploying-AWS-Network-Firewall-at-scale-athenahealths-journey.pdf Title: AWS re:Inforce 2023 - Policy and Suricata compatible rule creation for AWS Network Firewall (NIS308) YouTube URL: https://www.youtube.com/watch?v=67pVOv3lPlk PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS308_Policy-and-Suricata-compatible-rule-creation-for-AWS-Network-Firewall.pdf Title: AWS re:Inforce 2023 - How AWS threat intelligence becomes managed firewall rules (NIS301) YouTube URL: https://www.youtube.com/watch?v=oURlWfLjdqE PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS301_How-AWS-threat-intelligence-becomes-managed-firewall-rules.pdf Title: AWS re:Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305) YouTube URL: https://www.youtube.com/watch?v=9zDk-EaMUpc PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS305_Outbound-security-implementation-with-AWS-Network-Firewall-and-Route-53.pdf Title: AWS re:Inforce 2023 - Build secure global connectivity with AWS (NIS302) YouTube URL: https://www.youtube.com/watch?v=4pywOCWTXyQ PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS302_Build-secure-global-connectivity-with-AWS.pdf Title: AWS re:Inforce 2023 - Advanced approaches to traffic inspection & network diagnosis w/ AWS (NIS304) YouTube URL: https://www.youtube.com/watch?v=c3xzxvyD14U PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS304_Advanced-approaches-to-traffic-inspection-and-network-diagnosis-with-AWS.pdf Title: AWS re:Inforce 2023 - Achieving Zero Trust with AWS application networking (NIS307) YouTube URL: https://www.youtube.com/watch?v=PiCtF_XbZTM PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS307_Achieving-Zero-Trust-with-AWS-application-networking.pdf Title: AWS re:Inforce 2023 - Firewalls, and where to put them (NIS306) YouTube URL: https://www.youtube.com/watch?v=lTJxWAiQrHM PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS306_Firewalls-and-where-to-put-them.pdf Title: AWS re:Inforce 2023 - Setting up AWS Verified Access (NIS223) YouTube URL: https://www.youtube.com/watch?v=GaDqIZ5bQBc PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS223_Setting-up-AWS-Verified-Access.pdf Title: AWS re:Inforce 2023 - Use AWS Network Firewall for enterprises: Egress & ingress inspection (NIS222) YouTube URL: https://www.youtube.com/watch?v=lDavmXWdBTI PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS222_Use-AWS-Network-Firewall-for-enterprises-Egress-and-ingress-inspection.pdf Title: AWS re:Inforce 2023 - Deploy distributed egress policies with a central AWS Network Firewall (NIS233) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS233_Deploy-distributed-egress-policies-with-a-central-AWS-Network-Firewall.pdf Title: AWS re:Inforce 2023 - Enhance network security by integrating with AWS Security Hub (NIS251) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS251_Enhance-network-security-by-integrating-with-AWS-Security-Hub.pdf Title: AWS re:Inforce 2023 - Managing multi-Region & multi-account AWS Network Firewall resources (NIS341) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS341_Managing-multi-Region-and-multi-account-AWS-Network-Firewall-resources.pdf Title: AWS re:Inforce 2023 - Codify your network security compliance at scale with AWS Network Firewall and IaC (NIS342) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS342_Codify-your-network-security-compliance-at-scale-with-AWS-Network-Firewall-and-IaC.pdf Title: AWS re:Inforce 2023 - AWS Network Firewall & DNS Firewall security in multi-VPC environments (NIS373) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS373_AWS-Network-Firewall-and-DNS-Firewall-security-in-multi-VPC-environments.pdf Title: AWS re:Inforce 2023 - Stopping zero-day attacks and ransomware with effective egress controls (NIS374) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS374_Stopping-zero-day-attacks-and-ransomware-with-effective-egress-controls.pdf Knowledge Baseの作成 字幕テキストファイル、プレゼン資料、資料一覧をひとつのS3バケットに放り込み、対応リージョン(今回はオレゴンを利用)のAmazon Bedrock → ナレッジベース から、ナレッジベースを作成します。ナレッジベースの作成は、下記記事を参考にしました。 生成AI初心者がAmazon BedrockのKnowledge baseを使ってRAGを試してみた AWS re:Invent2023にて、Amazon BedrockのKnowledge baseとAgentsがGAされたと発表がありました。今回はこのうちKnowledge baseを利用して、RAG(Retrieval Augment Generation)を試してみたいと思います。 blog.usize-tech.com 2023.12.07 ナレッジベースに質問してみる 今回は私自身がNetwork Firewallの勉強をできればそれでよいので、ナレッジベースに付属しているテスト画面で早速質問を入れてみます。基盤モデルにはAnthropic Claude 2.1を使用しました。また、ほぼ英語しか入っていないナレッジベースに日本語で質問しても翻訳の問題に悩まされそうなので、英語で質問して英語で回答してもらっています。 ネットワークファイアウォールのベストプラクティスを聞く Please provide a list of 10 best practices for the design and configuration of AWS Network Firewall. Network Firewallの設計・設定のベストプラクティスを10個挙げてもらうことにしました。実は事前に(聞き取れないのを頑張って)『 Policy and Suricata compatible rule creation for AWS Network Firewall (NIS308) 』の動画を視聴しており、その中で10個のベストプラクティスが紹介されていることを知っていました。ですので、AIが回答しやすい、易しい質問のはずです。 回答がこちら。 わりとしっかり回答できている感じがしますね。回答をどのデータソースから引っ張ってきたのか分かるように注がつくのもありがたいです。ただ、データソースの一覧を見ていると、字幕ファイルがひとつもないことが分かりました。 ……調べてみるとPDFの方に10個のベストプラクティスを一覧にしたスライドがあり、回答はそのスライドをまるまる引っ張ってきているだけでした。……まあ今回の質問はPDFの方に「正解」がそのまま書かれているわけですから、仕方ない。 返してきたベストプラクティスのうちのひとつについて詳しく説明するようにお願いしてみます。 詳細を尋ねる Please elaborate “8. Prefer “flow:to_server, established”” ちゃんと説明にはなっています。ただやっぱり気になるのは、データソースがPDFしかありません。字幕ファイルが仕事してくれない……。他にもいくつか詳細を聞いてみましたが、データソースになるのはPDFばかりで、字幕ファイルが出てきません。 ちなみに、PDFをナレッジベースに入れる前(字幕ファイルしかないとき)に同じ質問(ベストプラクティス10個)をしたらどうなったかというと、こちら。 10個挙げてくれていないし、回答も嘘ではないけれども特に意味もない情報という感じです。動画字幕から適切な情報を得るのは難しいのかな?? ここに至り、複数の動画字幕/プレゼン資料から適切な情報を抜き出してくてくれると期待するのはあきらめて、動画を指定して内容の要約をやってもらうことにします。 動画の要約を作成する ナレッジベースに登録したうちのひとつのプレゼンテーションを指定して要約を作成してもらうことにします。 Please summarize the presentation “AWS re:Inforce 2023 – Outbound security implementation with AWS Network Firewall & Route 53 (NIS305)” in approximately 200 words. 字幕ファイルの冒頭にプレゼンテーションタイトルを追記しておいたので、それを足掛かりにうまく要約してくれるかもしれません……! ……唯一の引用マークは、私が作った動画一覧を参照しています……。これでまともな要約が作れるわけがない……と思いきや、要約自体はそこまで悪くない感じがします。 Bedrockには retrieveというAPI があり、プロンプトを投げるとナレッジベースから情報を検索し、検索結果と関連度スコアを表示してくれます。これを使って、いったいどういう情報を使って答えてくれたのか確認してみましょう。 以下、APIのレスポンスです。 { "ResponseMetadata": { (略) "retrievalResults": [ { "content": { "text": "v=oURlWfLjdqE\r PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS301_How-AWS-threat-intelligence-becomes-managed-firewall-rules.pdf\r \r Title: AWS re:Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305)\r YouTube URL: https://www.youtube.com/watch?v=9zDk-EaMUpc\r PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS305_Outbound-security-implementation-with-AWS-Network-Firewall-and-Route-53.pdf\r \r Title: AWS re:Inforce 2023 - Build secure global connectivity with AWS (NIS302)\r YouTube URL: https://www.youtube.com/watch?v=4pywOCWTXyQ\r PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS302_Build-secure-global-connectivity-with-AWS.pdf\r \r Title: AWS re:Inforce 2023 - Advanced approaches to traffic inspection & network diagnosis w/ AWS (NIS304)\r YouTube URL: https://www.youtube.com/watch?" }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/file_list.txt" } }, "score": 0.80244076 }, (略) { "content": { "text": "\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Codify your network security compliance at scale with AWS Network Firewall and IaC Adil Kazi (he/him) N I S 3 4 2 Cloud Infrastructure Architect AWS Pradeep Kumar (he/him) Cloud Infrastructure Architect AWS \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Problem statement \u2013 Why? Solution \u2013 What and how? Let\u2019s code Agenda \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Prerequisites \u2022 Terraform installed \u2022 AWS Organizations \u2022 AWS Config enabled \u2022 AWS Resource Access Manager (AWS RAM) enabled \u2022 Management AWS account with an IAM user that has the appropriate permissions \u2022 Spoke AWS account with an AWS Network Firewall policy deployed \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved." }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/NIS342_Codify-your-network-security-compliance-at-scale-with-AWS-Network-Firewall-and-IaC.pdf" } }, "score": 0.7409537 }, (略) { "content": { "text": "Title: AWS re:Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305) - Hello everyone and welcome to our session on Outbound security with AWS Network Firewall and DNS Firewall. Super excited to be with our customer, Robinhood. - I'm Paul Radulovic, head of platform security for Robinhood. - All right, so agenda-wise we're gonna be looking at what is egress security, a quick overview of this two primary security services that we see customers being successful with around egress control. And then why are customers doing this? You know, why are customers investing and spending time on this? Then we'll zoom in a little bit on a specific exploit just to understand how these things typically work and the opportunities that we have to both detect and block bad things from happening. And then I'll pass it off to Paul to talk about Robinhood's egress security journey. So what in the world is egress security? Egress security, in terms of an AWS VPC, it's really your workloads making a network connection out to somewhere else, usually the internet, right?" }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/[English] AWS re_Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305) [DownSub.com].txt" } }, "score": 0.73764765 }, (略) { "content": { "text": "\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Outbound security implementation with AWS Network Firewall & Route 53 Jesse Lepich N I S 3 0 5 Sr. Security Solutions Architect AWS Paul Radulovic (he/him) Head of Platform Security Robinhood \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Agenda What is egress security Quick overview of AWS Network Firewall & Route 53 Resolver DNS Firewall Why are AWS customers spending time on egress security? Anatomy of an exploit Robinhood\u2019s egress security journey, lessons learned, and best practices \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. What is egress security? \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. What is egress security?" }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/NIS305_Outbound-security-implementation-with-AWS-Network-Firewall-and-Route-53.pdf" } }, "score": 0.7173835 }, (略) uriが、S3のどのファイルから情報を検索してきたか、textが抜き出してきたテキスト、scoreが関連度スコアです。uriを見ると、要約したかったNI305の字幕ファイルもPDFも含まれているので、虚空から回答を作り出したわけではなさそうです。 まとめ AWSのイベントの動画(字幕)とプレゼン資料PDFをRAG(Knowledge Base for Amazon Bedrock)のデータソースにして、AWS Network Firewallの勉強に使えるかを試してみました。所感は以下の通りです。 字幕情報だけではろくな回答が出力されず、予想以上に役に立っていなかった。なぜこれほど有用情報の検索に寄与しなかったのか考えるのは今後の課題。 プレゼン資料PDFは逆に予想よりは役に立った。パワーポイント系の資料がもとになっているので、文字が細切れになっていたり、画像化されている文字情報も多く、あまり役に立たないのではないかと予想していた。細切れにはなっていても要点はしっかりまとめられていたということだろうか。 Knowledge Base for Amazon Bedrockが裏でプロンプトエンジニアリングを頑張ってくれている[1]とはいえ、より適切な情報を引き出すためにプロンプトエンジニアリングをもっと頑張る必要があったのかもしれない。 結果的には、自分の知らない情報を効率よく知ることができたとは言い難い。(この記事を執筆するために結局一部のプレゼンPDFを読むことになり、そちらの作業の方が実りあるものだった) [1] Knowledge Base for Amazon Bedrockの実行ログはCloudWatch Logsに出力されます。このログを見ると、ハルシネーションが発生しないようにしたり、情報をどこから引用したのか分かるようにIDをつけるように指定したりと、裏でのプロンプトエンジニアリングの努力が垣間見えます。 おまけ Knowledge Base for Amazon Bedrockで試行錯誤しているうちに、Microsoft CopilotでYouTube動画の内容を要約できると知り、試してみることにしました。対象動画は、前述のNetwork Firewall Top 10 best practices を説明している Policy and Suricata compatible rule creation for AWS Network Firewall (NIS308) です。 自分 この動画を要約してください。 Copilot この動画の要約 [00:00:02]1 – [00:28:13]2:           この動画では、AWS Network FirewallとSuricata互換のルール作成について説明しています。Suricataのベストプラクティスやポリシーの考慮事項について解説し、カスタムSuricataルールの作成方法をデモで紹介しています。 ハイライト: [00:01:07]3 AWS Network Firewallの概要 高可用性、フルマネージド、スケーラブルなサービス AWSが提供する脅威シグネチャやドメインの管理ルールセットを利用可能 Suricataという強力で柔軟なルールエンジンを使用 ディープパケットインスペクションやプロトコル検証などの機能を提供 (以下略) いいですね!実行するたびに出力内容が違って、要約の品質にもだいぶ幅があるのが気になりますが、嘘らしい嘘はついていないように思います。その内容が動画のどの時間で言及されているか記載があるのもとてもありがたいです。 動画内容の詳細を質問してみます。 自分 この動画で説明されているSuricataルールの例について、この動画で説明されている範囲でできる限り詳しく説明してください。 Copilot この動画では、カスタムSuricataルールの例として、以下のようなルールを紹介しています。          TLSトラフィックを許可するルール:このルールは、TLSプロトコルを使用しているトラフィックを検出し、パスアクションで許可します。2このルールは、tls.versionというキーワードを使って、TLSのバージョンを指定します。34このルールは、tls.sniというキーワードを使って、TLSのサーバ名を指定します。 TCPトラフィックをブロックするルール:このルールは、TCPプロトコルを使用しているトラフィックを検出し、ドロップアクションでブロックします。5このルールは、flowというキーワードを使って、トラフィックの方向と状態を指定します。67このルールは、flow:to_server,establishedというオプションを使って、TLSトラフィックを許可するルールと同じレベルで評価されるようにします。8 HTTPトラフィックをログに記録するルール:このルールは、HTTPプロトコルを使用しているトラフィックを検出し、アラートアクションでログに記録します。このルールは、http.methodやhttp.hostといったキーワードを使って、HTTPのメソッドやホスト名を指定します。このルールは、msgやsidといったキーワードを使って、ログに表示するメッセージやルールのIDを指定します。 UDPトラフィックをポート番号で制限するルール:このルールは、UDPプロトコルを使用しているトラフィックを検出し、ドロップアクションで制限します。このルールは、ヘッダー部分にポート番号を指定することで、特定のポートに対するトラフィックをフィルタリングします。このルールは、dsizeというキーワードを使って、データサイズを指定します。 ドメイン名を許可するルール:このルールは、TLSやHTTPの通信におけるドメイン名を検出し、パスアクションで許可します。2このルールは、tls.sniやhttp.hostといったキーワードを使って、ドメイン名を指定します。4このルールは、contentやpcreといったキーワードを使って、ドメイン名のパターンを指定します。 これらのルールの詳細な説明やデモは、動画の[00:36:00] 1 から[00:49:54] 2 までの部分をご覧ください。この部分では、ルールの構文やオプション、効果やログの確認方法などを具体的に示しています。この情報が役立つことを願っています。9他に何か質問がありましたら、お気軽にどうぞ。10よろしくお願いいたします。11 「この動画で説明されている範囲で」という限定をつけてみましたが、どうやら動画で触れられていない内容が紛れ込んでいるように見えます(UDPトラフィックのdsizeキーワードとか)。このあたりはもっと厳密にプロンプトエンジニアリングをしてあげなければいけないところなのでしょうか。Knowledge Base for Amazon Bedrockを使って得た回答に比べるとはるかに内容が充実していて勉強できている感はありますが、誤情報が紛れ込んでいないか油断のできないところです。最後の段落の「この情報が役立つことを願っています」「他に何か質問がありましたら、お気軽にどうぞ」あたりがいかにもChatGPTっぽく、不安を増幅してくれます。 また、「dsizeというキーワードを使って、データサイズを指定します」とか「contentやpcreといったキーワードを使って、ドメイン名のパターンを指定します」とか、詳細を語っているっぽいキーワードを散りばめていて何だか分かった気分になれますが、結局どう使えばよいのかまではよくわかりません。これは動画ではスライドを使って「このルールはこれこれこういう意味で…」と説明しているのに対して、おそらく音声(字幕)情報だけ使用して回答を生成していることを考えると仕方のないことかもしれませんが、結局、詳細を知ろうとすると動画の該当箇所を観ることは避けられないようです。もちろん、この出力を読んだうえで動画を観るのとそうでないのとでは理解度が全く違うので、これだけでも非常にありがたいことではあります。 おまけ その2 この記事を書くためにPDF資料を読み込んでいたら、半月ほどず~っと悩んでいた事象に対する答えが見つかりました。 ( https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS308_Policy-and-Suricata-compatible-rule-creation-for-AWS-Network-Firewall.pdf より引用)  TCPはTLSより低レイヤのプロトコルだから、ルールの順序を無視してTCPのルールが先に適用される、とのこと。そういうことだったのか……(納得)。 この情報は生成AIを使った勉強では一切引っかかりませんでした。結局自分で資料を読み込むのが一番ということなんですかねえ。
本記事の内容は、以下のCato Networks社の記事を元に日本語へ意訳、再構成したものとなります。 Cato Firewall-as-a-Service (FWaaS) Cato Secure Web Gateway (SWG) CatoクラウドのFWaaS、およびSWGは、標準サービス内に含まれます。セキュリティオプション(追加費用)は不要です。 それでは、CatoクラウドのFWaaSとSWGについて解説します。 Cato FWaaSについて Firewall-as-a-Service(FWaaS)は、ファイアウォールやその他のネットワークセキュリティ機能をクラウドサービスとして提供する新しく画期的な方法です。レガシーな物理ファイアウォールや仮想ファイアウォールの制約や複雑さを解消し、ネットワークセキュリティをあらゆる場所で一貫して利用できるようにします。 死角のない完全なトラフィック検査 Catoクラウドは、クラウドProxyやSSE(Security Service Edge)と異なり、インターネット(南北)だけでなくWAN(東西)を含むすべての送信元からすべての宛先へのネットワークトラフィックを検査します。これには、HTTP(S)トラフィックだけに限らず、すべてのポートとプロトコルのトラフィックが含まれます。 Catoは、企業が本社・拠点とデータセンターの両方のファイアウォールアプライアンスを廃止し、CatoクラウドのFWaaSに置き換えるのを支援します。Catoは、従来のファイアウォール機能をすべてネットワーク(プロキシではなく)アーキテクチャで、クラウドからマルチギガスループットで提供できるため、ファイアウォールの廃止が可能です。 Cato FWaaSを使用することで、企業はコンフィギュレーションのギャップや盲点を回避し、データ侵害のリスクを低減することができます。 スケーラブルなファイアウォールルールセット管理 Cato FWaaSは、ルールセット内の順序に基づいてルールを処理し、最初のヒットで停止します。ルールセットが多数のルールで溢れるのを避けるため、各ルールに特定の例外設定をすることもできます。Catoは、管理者がルールをセクションにグループ分けすることで、読みやすくし、サードパーティの監査人が効率的にレビューできるようにします。 Catoは、ルールで使用できる豊富なオブジェクトセット(ユーザーID、組織単位、デバイス、ホスト、アプリケーション、プロトコル、ロケーション、ネットワーク、VLAN、その他多数)と、複数のオブジェクトタイプを組み合わせることができる論理グループで管理する機能を提供します。 ※ファイアウォールアプライアンスと異なり、ルールやオブジェクトに制限(上限)はありません。 詳細な分析とレポートのための完全なログとモニタリング Cato FWaaSのすべてのルールとアクションは、イベントを記録し、Catoクラウドのプラットフォームに保存するよう設定できます。 電子メール通知は、定義された期間中に繰り返される選択されたイベントについて、定義された緊急度で警告するように設定することができます。 イベントのモニタリングと分析は、専用のダッシュボードや、使いやすい検索とフィルタリングを提供するイベントモニタリングインタフェースを通じて利用できます。 監査証跡は、追跡、監視、監査のためにすべての管理者の活動を記録します。 あらゆるニーズに対応する無制限の処理・検査能力 CatoクラウドのFWaaSは、クラウドネイティブなソフトウェアアーキテクチャを採用したクラウドサービスです。また、自律的かつ弾力的なスケーリングとセルフヒーリングにより、高いパフォーマンスとサービスの回復力を保証します。 Catoは、管理者がパフォーマンスや可用性を心配することなく、TLSインスペクションを含むすべての機能を有効にし、任意のタイプと数のオブジェクト、グループ、ルールを使用できるようにします。 Catoのクラウドネイティブ・ソフトウェア・アーキテクチャは、CPU負荷、パケットドロップ、デバイス障害によるレイテンシーの増加の懸念を排除します。同様に、計算能力不足によるアプライアンスの中途交換のリスクも回避できます。 リスク低減のマイクロセグメンテーション、アクセス制御、ゼロトラスト マイクロセグメンテーションは、機密性の高いリソースへのアクセスを制限するために簡単に設定することができます。グループ、ネットワーク、VLAN、およびホストやユーザーなどの個々のオブジェクトに基づいてポリシーを設定し、ビジネス要件を満たすきめ細かなアクセスを管理できます。ゼロトラストのために、Catoは、管理者がユーザーのアイデンティティだけでなく、地理的な位置、接続方法、セキュリティ姿勢などを考慮したアイデンティティ間、アイデンティティからアプリ、アプリ間のアクセスポリシーを設定することができます。 DPIベースのアプリケーションとユーザーの認識(識別) CatoクラウドのFWaaSには、すべてのポートとプロトコルにまたがる何千ものアプリケーションに対する認識が組み込まれており、カスタムアプリケーションを定義する機能もあります。 Deep Packet Inspection(DPI) エンジンは、ペイロードを解読することなく、最初のパケットと同時にアプリケーションやサービスを識別します。 Catoは、ユーザとそのユーザが所属する組織単位のアイデンティティを考慮したポリシーの設定と実施を可能にします。ユーザディレクトリと同期し、Catoクライアントのアイデンティティエージェントを使用することで、ユーザアイデンティティがすべてのネットワークフローに関連付けられます。 ※Catoクライアントは、アイデンティティエージェントとして機能します。   Cato SWGについて Cato SWG(Secure Web Gateway)は、インターネットの脅威から保護するための追加レイヤーを提供することで、セキュリティを強化し、Webサイトのコンテンツとリスク分類に基づいて、Webサイトアクセスの企業基準を実施します。 80以上の組み込みカテゴリと事前定義されたセキュリティポリシーによる即時保護 CatoクラウドのSWGは、インターネットセキュリティのベストプラクティスに沿った、すぐに使えるポリシーを提供します。一度有効化されたポリシーは、即座に企業全体に適用されます。また、Cato SWGには、80以上のカテゴリに分類されたWebサイトが含まれており、管理者は、機密性の高いコンテンツや不適切なコンテンツへのアクセスを管理する企業のコンプライアンス要件を容易に遵守できます。必要に応じて、ユーザーID、場所、デバイスなどの詳細な属性を使用してポリシーを絞り込むことができます。また、各ポリシーに対して、管理者は許可、ブロック(Block)、プロンプト(Prompt)などの必要なアクションを選択できます。 フィッシングおよびマルウェア配信サイトからの防御 悪意のあるドメイン、危険なドメイン、フィッシングドメイン、およびパークドメイン(ドメインのみが存在)カテゴリーをブロックすることで、ユーザーがWeb上の脅威にさらされる可能性を低減します。Catoは、常に変化するドメインランドスケープ全体で悪意のあるドメインの最新のブラックリストを維持し、最適なセキュリティ態勢を確保します。悪意のあるサイトへのアクセス試行は、記録、さらなる分析、セキュリティトレーニングの優先順位付け、常習犯の識別のためにログに記録することができます。 検索エンジンによるポリシー迂回の防止 検索エンジンでは、ユーザーが検索エンジンのドメインから離れることなく、画像を閲覧したり、動画コンテンツをプレビューしたりできるため、組織のコンプライアンス・ポリシーを回避できることがよくあります。CatoクラウドのSWGは、管理者が一般的な検索エンジンのセーフサーチとYouTubeのコンテンツ制限を実施することを可能にし、ユーザによるポリシーの回避を防ぎます。この機能は数回クリックするだけで有効化でき、最小限の労力ですべてのユーザーとロケーションの保護を強化できます。 カスタマイズ可能な通知でエンドユーザーエクスペリエンスを最適化 CatoクラウドのSWGは、Webサイトへのアクセスが妨げられたり、遅延したりした場合に、ユーザーに明確な通知を行い、例外を要求したり、エラーを報告したりすることができます。管理者は、Catoのブロック(Block)とプロンプト(Prompt)ページを自由うにカスタマイズして、企業ブランドロゴや、情報システム部の連絡先、再カテゴライズ要求のプロセスなど、ユーザーに提供される特定の通知テキストを組み込むことができます。 ※ブラウザにセットされている言語での自動切換え表示も可能です。 SWGイベントのログとレポートによる総合的な可視性 すべてのイベントデータは自動的に保持され、Catoのデータレイクに正規化され、SIEM(Security Information and Event Management)のような機能を備えた組み込みのイベントエンジンを使用してクエリできます。管理者は、一般的なユースケースをカバーする様々な定義済みクエリから選択するか、必要なフィルタを選択してカスタムクエリを迅速に構築できます。PDFレポートも生成でき、監査や経営陣の可視化を目的としたドキュメントを簡単に作成できます。   まとめ Catoクラウドの標準サービスに含まれるFWaaSとSWGの記事をご紹介させていただきました。 Catoクラウドに少しでも興味をお持ちになられた方は、遠慮なくSCSKまでお問い合わせください。 SASE、Cato Networks社、Catoクラウド(Cato Cloud/Cato SASE Cloud)自体の知名度もまだまだ低い状況です。 SCSKでは、2021年からSASEの主要ソリューションを一同に紹介を行うオンラインセミナー「SCSK SASE Solution Summit(通称S4 エスフォー)」を定期的に開催しております。これまで14回開催し、1,800名以上の方にご参加いただいております。 S4については、次回2024年4月以降に開催する予定ですので、改めてご案内します。 来月、2024年3月14日に、Catoクラウドの主要機能を2時間・デモ形式でご覧いただけるセミナーを開催しますので、ご興味のある方は是非ご参加ください。 Catoクラウドデモセミナー~Catoクラウドの主要機能を2時間で網羅~ 本セミナーでは、世界初のSASEである「Catoクラウド」の概要をたっぷり2時間、デモ形式でご覧いただきます。 また、ご希望の方(先着10名様)は、デモ環境に対して、お手元の環境からハンズオン形式でCatoクラウドに触れて頂くことが可能な参加型セミナーです。 www.scsk.jp SASE、Catoクラウドセミナー以外に、Catoクラウドのお客様導入事例の制作、FAQサイト運営、この TechHarmony(技術ブログ)で、皆様のお役に立て、Catoクラウドの知名度アップに少しでも貢献できればと考えております。
本記事の内容は、以下のCato Networks社の記事を元に日本語へ意訳し、再構成したものとなります。 CatoクラウドのIPSおよびNGAMは、標準サービスではなく、セキュリティオプション「 Threat Prevention 」に含まれるサービスとなります。 以前は、マルウェア対策(Anti-Malware:AM)、次世代型のマルウェア対策(Next-Generation Anti-Malware:NGAM)、不正侵入検知システム(Intrusion Prevention System:IPS)が、それぞれ3つのセキュリティオプションとして存在していましたが、AM、NGAMが、NGAMとして統合され、さらに2024年2月に、NGAMとIPSが、 Threat Preventionへ統合されています。 それでは、IPSとNGAMについてそれぞれ解説します。 Cato IPSについて CatoクラウドのIPSは、既知および未知のエクスプロイトを利用する高度な脅威や攻撃から組織をリアルタイムに保護します。IPSによる保護は、インターネット、WAN、クラウドを含むすべてのトラフィックに適用され、ランサムウェアの配信や伝播、データの盗難を防止します。 リアルタイムAI/MLによるフィッシング&マルウェア対策 攻撃者は、レピュテーション(評判/風評)ベースの防御ツールを回避するために、 ドメインスクワッティング (不正な目的でドメインを登録する)やドメイン生成アルゴリズム(Domain Generation Algorithms: DGA )のようなテクニックをしばしば使用します。CatoのIPSは、リアルタイム検査エンジンに複雑なAI/MLモデルを統合し、ドメインスクワッティングとDGAを検出します。脅威は、ディープラーニングモデルと、ドメインの人気度、年齢、文字パターンなどのデータポイントの相関関係を使用して識別されます。ファビコン(favicon)、画像、テキストなどのウェブページコンポーネントの分析により、ブランド偽装を検出します。 これまで事後分析でしか利用できなかったツールをリアルタイム防御に移行することで、防御の有効性と企業のセキュリティ態勢が劇的に改善されます。 ランサムウェア配信、C&C通信を防止 ランサムウェア攻撃を成功させるには、ランサムウェアの配信、攻撃者とのコマンド・アンド・コントロール(C&C)通信、そして最大の影響を与えるためのネットワーク全体への伝播が必要です。 Cato IPSは、インターネットとWANの両方のトラフィックを完全に可視化します。悪意のあるファイルのダウンロード、ランサムウェアや悪意のあるアクティビティに関連するドメインやIPアドレスへのアクセスをブロックすることで、マルウェアの配信やC&C通信を防止します。WAN全体への伝播は、横方向の移動パターンとインジケータの検出とブロックによって防止されます。 Cato IPSの包括的な可視化により、ランサムウェアの露出を減らすだけでなく、ランサムウェア攻撃の潜在的な影響を最小限に抑えることができます。 新たな脅威を迅速かつシームレスに緩和 企業は、新たな CVE (Common Vulnerabilities and Exposures:共通脆弱性識別子)からネットワークを保護するためのプロセス、リソース、および時間に苦労することがよくあります。Cato IPS は仮想パッチ適用機能を提供し、ミティゲーション(緩和/軽減)に要する時間が非常に重要な場合に、お客様のネットワークを迅速に保護します。Catoの専門家チームは、記録的な速さで新しいIPSルールを構築、テスト、展開し、お客様の関与を必要とすることなく、新しいCVEに迅速に対応します。この「仮想パッチ適用」により、企業は、影響を受けるシステムを更新し、パッチを適用している間、リスクの高い新たな脅威から保護されているという保証を得ることができます。 クラウドスケールのトラフィック検査 Catoクラウドは、クラウドネイティブアーキテクチャのパワーを活用し、TLS暗号化トラフィックを含むすべてのトラフィックを検査できる、伸縮性と拡張性に優れたIPSを提供します。大規模なクラウドコンピューティングリソースにより、シグネチャセットを微調整したり、IPSに送信されるトラフィックを制限したりする必要がありません。クラウドインフラストラクチャ、本社・拠点、リモートユーザーを含むすべてのロケーションとユーザーがCatoのIPSで保護されるため、FW/IPSアプライアンスの拡張やアップグレードが不要になります。Catoを使用することで、企業はリソースの制約により、一部のトラフィックしか検査できないIPSや、限られたシグネチャセットしか使用できないIPSを廃止することができます。 攻撃サーフェス削減のためのジオフェンシング 組織の攻撃サーフェスを削減する最も簡単な方法の1つは、組織がビジネス上やり取りする必要のない国をブロックすることです。CatoのIPSでは、すべてのユーザーとロケーションに適用される単一のグローバルポリシーで、特定の地域のトラフィック(インバウンド、アウトバウンド、またはその両方)を迅速にブロックできます。 ※ジオフェンシングは、特定エリアに仮想的なフェンス(柵)を作る仕組みです。 SASEを活用した専用ヒューリスティック言語 Cato IPSは、脅威や攻撃をリアルタイムで識別するためにヒューリスティック(経験則や先入観に基づき、直感で素早く判断)を使用します。ヒューリスティックは、実際のネットワーク・トラフィックに対して検証された一連の条件から構成されます。 CatoのSingle Pass Cloud Engine (SPACE)の一部であるCato IPSは、URL分類、アプリID、ターゲットリスクスコア、ターゲットの人気度、デバイスフィンガープリント、ユーザー認証など、スタンドアロンIPSソリューションが考慮できないデータを可視化します。 真のSASEコンバージェンス(収束)を活用するように設計された専用ヒューリスティック言語により、企業は脅威をリアルタイムで強固に防御することができます。 自動化されたAI管理型脅威インテリジェンス 最新の脅威インテリジェンスは、マルウェア、フィッシング、C&Cサイトに対するIPSの有効性、および誤検知による摩擦の低減が鍵となります。Cato IPSは、250以上の脅威インテリジェンスフィードからの情報を自律的に集約し、スコアリングする専用のAIベースのレピュテーションシステムを使用しています。このシステムは、フィード間の重複を継続的にマッピングしてクリアし、脅威記録の品質と関連性を測定し、実際のトラフィックへの潜在的な影響をシミュレートします。更新され集約されたブラックリストは、すべてのCato PoPに自動的に公開され、ほぼゼロの誤検知と顧客の関与なしに最新の保護を保証します。   Cato NGAMについて ネットワークベースの次世代型マルウェア対策(NGAM)は、ファイルがインターネットや企業WANを経由して送信される際に、リアルタイムでマルウェアから組織を保護します。マルウェアは、高度なヒューリスティックと高度に訓練された機械学習アルゴリズムによって識別されます。 ゼロデイマルウェアからのリアルタイム保護 CatoのNGAMは、ゼロデイマルウェアとポリモーフィックマルウェアをリアルタイムで検出します。SentinelOneとの提携により、機械学習アルゴリズムが何千ものデータポイント間の接続をマッピングし、良性、疑わしい、または悪意のある判定を返します。リアルタイムのゼロデイマルウェア保護により、情報システム部に過度の負担をかけ、ユーザーエクスペリエンスを損なうレガシーのサンドボックスソリューションへの依存がなくなります。 きめ細かなポリシーとシンプルな例外コントロール ポリシー管理は簡単で、管理者はインターネットやWANの宛先、送信元(ユーザー、IPアドレス、ホスト)、アプリケーションなどのコンテキストに基づいて、許可、ブロックのアクションを定義できます。スキャンの例外は、特定することも、アカウント全体に適用することもできます。CatoのNGAMを使用することで、企業はより厳格なセキュリティアプローチを採用することができ、ポリシーの変更がわずか数分でグローバルに反映されるため、ビジネスニーズを満たす俊敏性を維持することができます。 TLSインスペクションによる完全なマルウェア対策 最近のWebトラフィックの90%以上は暗号化されており、企業はそのトラフィックに脅威がないかは復号化して検査する必要があります。Catoクラウドは、TLS検査を大規模に実行するため、従来のセキュリティアプライアンスのようにサイズや規模を変更する必要がありません。検査ポリシーはきめ細かく適用できるため、企業は必要なだけのトラフィックを検査できます。TLSインスペクションを有効にすると、パフォーマンスへの影響はなく、Cato NGAMの完全な可視性により、すべてのトラフィックでマルウェアを検出してブロックすることができます。 ネストされたアーカイブと暗号化ファイルの保護 CatoクラウドのNGAMは、複数のファイルタイプをサポートし、ネストされたアーカイブファイル内の複数のレベルをスキャンすることができます。アーカイブファイルは、エンジンがファイルの全コンテンツにマルウェアがないことを確認するまで保持されます。暗号化されたファイルやパスワードで保護されたファイルはスキャンできませんが、ポリシールールによってブロックすることができます。これらの機能は、脅威者がセキュリティエンジンを回避するために使用するテクニックの1つに対処することで、組織の安全を確保するのに役立ちます。 常に最新の保護 CatoクラウドのNGAMは、すべてのファイルをワイヤスピードでスキャンし、Catoによって継続的に更新および最適化されるシグネチャおよびヒューリスティックデータベースに照らしてファイルを継続的に評価します。お客様は、従来のファイアウォールやUTMのマルウェア対策エンジンを置き換えることができ、固定アプライアンスのリソースの制約を受けることなく、すべてのファイルが包括的で最新のマルウェア対策データベースに照らして評価されるようになります。   まとめ Catoクラウドのセキュリティオプション「 Threat Prevention 」に含まれるIPSとNGAMの記事をご紹介させていただきました。 Catoクラウドに少しでも興味をお持ちになられた方は、遠慮なくSCSKまでお問い合わせください。 SASE、Cato Networks社、Catoクラウド(Cato Cloud/Cato SASE Cloud)自体の知名度もまだまだ低い状況です。 SCSKでは、2021年からSASEの主要ソリューションを一同に紹介を行うオンラインセミナー「SCSK SASE Solution Summit(通称S4 エスフォー)」を定期的に開催しております。これまで14回開催し、1,800名以上の方にご参加いただいております。 S4については、次回2024年4月以降に開催する予定ですので、改めてご案内します。 来月、2024年3月14日に、Catoクラウドの主要機能を2時間・デモ形式でご覧いただけるセミナーを開催しますので、ご興味のある方は是非ご参加ください。 Catoクラウドデモセミナー~Catoクラウドの主要機能を2時間で網羅~ 本セミナーでは、世界初のSASEである「Catoクラウド」の概要をたっぷり2時間、デモ形式でご覧いただきます。 また、ご希望の方(先着10名様)は、デモ環境に対して、お手元の環境からハンズオン形式でCatoクラウドに触れて頂くことが可能な参加型セミナーです。 www.scsk.jp SASE、Catoクラウドセミナー以外に、Catoクラウドのお客様導入事例の制作、FAQサイト運営、この TechHarmony(技術ブログ)で、皆様のお役に立て、Catoクラウドの知名度アップに少しでも貢献できればと考えております。
先日新しくインターネット標準となった『 RFC 9421 : HTTP Message Signatures 』が気になって読み、自分の考えをまとめてみましたので、その内容を共有します。 仕様の概要 RFC 9421 は HTTP メッセージの電子署名に関する仕様です。HTTP メッセージの送信者はヘッダの一部やボディから署名を作成し、その署名を HTTP ヘッダに付加して送信し、受信者はそれを検証するというものです。RFC には署名の作成・検証方法、署名やアルゴリズム等の伝達方法、その他考慮点が記載されています。 署名には通信相手の認証や改ざん検知といった機能がありますが、TLS には署名の機能が含まれているにも関わらずなぜ HTTP のレイヤで署名が必要なのか、当然気になります。この疑問の答えは第一章に書かれています。 TLS はそのピア同士の間の通信を保護するものですが、HTTP クライアントとサーバのエンドツーエンドで保護されているわけではないということが課題感として挙げられています。例えば CDN が利用されているようなケースでは、クライアントは CDN との間で TLS 通信を行い、CDN はオリジンであるサーバとの間で TLS 通信を行います。このとき CDN で設定ミス・バグ・侵害・内部不正などがあって不正な HTTP レスポンスを返したとしても、そのことにクライアントは機械的には気付けません。また、クライアント側で TLS インスペクションを行うセキュリティ製品を利用しているようなケースでも、同様のことが言えます。こういった課題を HTTP レイヤで解決しようというのが RFC 9421 です。 なお、AWS の API ではクライアントはリクエストに署名を行い、API サーバは署名を検証してクライアントの認証を行っています。他にも同様のことを行っているサービスやシステムがあり、こういった既存の実装もこの RFC の下地になっているものと思います。 仕様で定められていること HTTP メッセージの署名を作成・検証する際、署名の対象とする HTTP メッセージのバイトデータの形式が問題になります。 HTTP では次のような仕様や実運用が存在します。 ロードバランサやリバースプロキシなどの中継サーバが HTTP ヘッダを追加・変更する ヘッダ名の大文字・小文字の違いが許容されている HTTP/2 では HTTP ヘッダがキャッシュされており、毎回送受信されるわけではない HTTP/2 と HTTP/1.1 ではメッセージの形式が根本的に異なる(バイナリ/テキスト) HTTP メッセージをバイトデータとして表現したときの形式が署名者・検証者の実装によって異なってしまうと署名が機能しないため、メッセージの正規化や署名対象ヘッダの選択方法が仕様として定められています。これにより複数の実装間での相互運用性を保とうとしたわけですね。 また、署名者と検証者は同一の暗号アルゴリズムやハッシュアルゴリズムを用いる必要があります。これについて、仕様ではどのアルゴリズムを用いて署名を作成したか、署名者から検証者に HTTP ヘッダを用いて伝達する方法が定められています。さらに、署名の作成日時や有効期限、nonce、利用した鍵のIDなども伝達情報として定められています。 一方で、署名で利用する鍵をどのようにして交換するかについては定められておらず、共通鍵暗号方式と公開鍵暗号方式のどちらを利用するかについても定められていません。TLS のように公開鍵を伝達する仕組みは定められていませんので、クライアントとサーバの間であらかじめ鍵を交換し合っておく必要があるものと思います。DKIM 署名のように DNS を用いて公開鍵を配布するという方法も考えられます。 署名の仕組みがどこで活用されるか RFC で定められているのはあくまでも署名の仕様であり、署名をどこで活用するかについては各開発者が考えるべきことですね。 まず、ブラウザベースの Web アプリケーションでの活用を考えたくなります。Web サーバが署名を付けたレスポンスを返してきたときに、ブラウザが自動的に署名を検証し、検証失敗ならユーザに通知するといった感じのことです。しかし、これは各ブラウザが実装してくれるかどうかに依存しますし、鍵交換の部分の仕様が今は存在しないので、まだその時期ではないように思います。 Web アプリケーションでの活用の他実装として、JavaScript で署名を検証するという方法も考えられます。RFC では、ブラウザ上で動く JavaScript からも署名を扱えるようにするということが要件事項として挙げられていますので、想定の活用方法のはずです。ただし、署名の検証を行う JavaScript を Web サーバがクライアントに返すようにしていたとしても、中継サーバを侵害した悪意者は署名の検証を行わない JavaScript を返せてしまい、署名が機能しないようにできてしまいます。そのため、こういった不正を防止したい組織(金融機関など)は署名の検証を行うブラウザの拡張機能を独自に開発し、ユーザにあらかじめ導入しておいてもらうといった活用事例が生まれてくる可能性はありえそうです。検証のための公開鍵の配布の問題もブラウザの拡張機能の中に埋め込むことで解決できますので。とはいえ、自前の Web サーバで TLS を終端し、かつ証明書のピンニングも行えば中間者攻撃を防止できますので、積極的に署名を行う動機にはなりにくいかもしれません。 サーバがクライアントを認証する際の活用も当然考えられます。クライアント側で秘密鍵と公開鍵を生成し、その公開鍵をサーバ側に登録しておいた上で、その後の通信では署名を用いてクライアントを認証するといった活用です。ただし、ブラウザベースの Web アプリケーションでは鍵交換の問題やどうやって署名するかという問題があるため現実的ではなく、そのようなことがしたいのであれば今はパスキーを利用すべきですね。非ブラウザ環境で Web API を実行するクライアントの認証という活用であれば、ブラウザによるパスキーのサポートがありませんので、署名の活用は十分ありえそうです。もちろん、証明書のピンニングでサーバが期待する通信相手であることを保証したうえで、ヘッダベースの Bearer 認証でも良いとは思いますが。。 まとめ RFC 9421 : HTTP Message Signatures を読んで自分の考えをまとめてみました。 活用方法として2点(ブラウザ拡張機能を用いた中間者攻撃の防止、Web API でのクライアント認証)挙げてみましたが、それが合っているのかどうかはよくわかりませんし、他にもあるとも思います。 インターネット標準だからといってそれを活用しなければならないものではありませんが、将来それがどう活用されるかを想像しつつ、これまで解決できずに困っていた課題を解決できるのであれば、それに向けて取り組むのは非常に楽しいですね。
本記事の内容は、以下のCato Networks社の記事を元に日本語へ意訳し、再構成したものとなります。 Cato Cloud Access Security Broker (CASB) Cloud Access Security Broker (CASB) CASB provides IT managers with comprehensive insight into their organization’s cloud application usage, covering both sanctioned and unsanctioned (Shadow IT) ap... www.catonetworks.com Cato Data Loss Prevention (DLP) Data Loss Prevention (DLP) Cato DLP empowers organizations to consistently protect sensitive data across users, locations, and clouds. www.catonetworks.com Cato Networks社は、2022年に、Cloud Access Security Broker (CASB)とData Loss Prevention (DLP)をリリースしています。 CASBとDLPは、Catoクラウドの標準サービスではなく、ともにセキュリティオプション(追加費用)となります。また、DLPについては、CASBの契約が前提となります。 それでは、CatoクラウドのCASBとDLPについてご紹介します。 Cato CASBについて CatoクラウドのCASBは、公認アプリケーション(Sanctioned)と非公認アプリケーション(Unsanctioned=シャドーIT)の両方をカバーし、IT管理者に組織のクラウドアプリケーション使用に関する包括的な洞察を提供します。CatoのCASBは、各SaaSアプリケーションの潜在的なリスクを評価し、最小限の特権と最小限のリスク・エクスポージャーを確保するために、非常にきめ細かく柔軟なアクセス・ルールを定義することを可能にします。 クラウドアプリケーションの完全な可視化とシャドーITコントロール 企業のリスク管理を担当する管理者は、各SaaSやクラウドアプリケーションのコンプライアンスを手作業で確認することができません。Cato CASBは、自動化されたデータ収集とMLベースの分析により、すべてのクラウドアプリケーションのリスクスコアを算出します。クラウドアプリケーションカタログに表示される各アプリケーションのプロファイルは、アプリケーションの説明、コンプライアンス遵守、セキュリティコントロールで強化されています。管理者は、アプリケーションの使用に関して十分な情報に基づいた意思決定を行い、リスクと暴露を制限するポリシーを定義するために必要なすべての情報を表示できます。例えば、特定のリスクスコア以上のアプリケーションへのアクセスを防止したり、MFAやSSOのないアプリケーション、セキュリティ標準に準拠していないアプリケーションなどです。 クラウドアプリケーション内でのユーザの行動を制御 CatoクラウドのCASBは、より広範なリスクとコンプライアンスベースの制御だけでなく、ユーザーがアプリケーション内で実行できる特定のアクションのきめ細かなインライン監視と制御も提供します。HTTP(S)やAPI経由で送信されるコマンドを検査することで、ログイン、ダウンロード、アップロード、表示などのきめ細かなユーザーアクションを特定します。管理者は、アクションの許可を制御するポリシーを作成し、ユーザーの生産性とデータ・セキュリティのバランスをとることができます。例えば、承認されていないファイル共有アプリからのアップロードはブロックするが、外部組織とのデータ交換のためのダウンロードは許可するといった現実的な状況です。 インライン・アウトオブバンドのアプリケーションアクセスコントロール ユーザは、オフィスとリモート、企業デバイスとBYODの両方からクラウドアプリケーションにアクセスするため、帯域外制御のインライン制御が必要になります。インライン・トラフィックの可視化と制御に加え、Cato CASBは一般的なエンタープライズ・クラウド・アプリケーション用のAPIコネクタを提供します。APIコネクタにより、アプリケーションのアクセスをほぼリアルタイムで監視し、データ漏洩、データ共有の設定ミス、マルウェアの伝播から保護します。Cato CASBは、インラインとアウトオブバンドの両方で動作するため、管理者はクラウドアプリケーションの使用状況を包括的かつ完全に可視化し、すべてのアプリケーションのアクセスシナリオで一貫した制御を行うことができます。 エンタープライズSaaSのテナント制限でデータ漏えいを防ぐ 企業によって認可され、許可されたSaaSアプリケーションも、従業員によって私的に使用されている可能性があり、機密データ漏えいのリスクをもたらします。業界のベストプラクティスに従って、Cato CASBは、企業の知的財産が明示的な許可なしに社外に流出しないように、許可されたアプリケーション内の許可されたテナントにアクセスを制限することができます。   Cato DLPについて CatoクラウドのDLPは、ユーザー、場所、クラウドを問わず、機密データを一貫して保護することを可能にします。包括的なDLPコントロールは、GDPR、PCI DSS、HIPAAなどの規制へのコンプライアンスを確保し、知的財産や専有情報を保護するために不可欠です。 センシティブデータタイプの完全なカタログで、価値実現までの時間を短縮 DLPの導入は、誤検知やユーザーの生産性に影響を与えることなく、データを正確に分類することを目的としているため、ほとんどの組織にとって困難なことです。Cato DLPは、テストおよび検証済みの350以上の定義済みデータタイプのカタログを備えており、すぐに使用できるため、セキュリティチームは先手を打つことができます。このカタログは、機密データ、PII、金融情報の保護、複数の地域にわたる規制コンプライアンスの達成など、一般的なユースケースをカバーしており、迅速かつ効率的なDLPの展開を可能にします。 Cato DLPへの秘密度(機密)ラベルの持ち込み 企業は秘密度(機密)ラベルを使用して、データを効率的に分類し、複数のプラットフォームでデータ保護の精度を向上させます。Cato DLPは、Microsoft Information Protection (MIP)とカスタム秘密度(機密)ラベルをサポートしています。簡単な設定により、企業のMIPラベルをCato DLPが認識し、該当するデータ保護ポリシーで使用できます。DLPルールにおける一貫した秘密度(機密)ラベルの使用により、企業は全社的で統一されたデータ保護を実現できます。 機密データ型のカスタマイズと検証 DLPは万能なソリューションではなく、カスタムデータタイプを作成する機能は、組織に適したデータ保護ポリシーを作成するために不可欠です。CatoのDLPでは、管理者は秘密度(機密)ラベル、キーワード、辞書、正規表現に基づいてカスタムデータタイプを作成できます。さらに、誤検知を減らすために、Cato DLPはインスタント検証ツールを提供しており、管理者は本番環境でポリシーを適用する前に、サンプルファイルに対してデータ保護ポリシーをテストすることができます。企業特有のポリシー作成と微調整の労力を最小限に抑えます。 インライン・アウトオブバンドのデータ保護 ユーザは、オフィスとリモート、企業デバイスとBYODの両方からクラウドアプリケーションにアクセスするため、帯域外とインラインのデータ保護が必要になります。Cato DLPは、インライントラフィックの可視化と制御に加え、一般的なSaaSアプリケーションのAPIを使用して、データ使用状況をほぼリアルタイムで監視し、データ漏洩やデータ共有の設定ミスを防止します。このように、Cato DLPは、すべてのアプリケーションとデータアクセスシナリオにおいて、包括的で完全なデータ保護を提供します。 企業データ保護のための1つのダッシュボード データ保護は、継続的な実施、監視、微調整を必要とする継続的な責任です。Cato DLPは、DLPイベントと関連アクティビティを効率的に可視化するための専用ダッシュボードを提供します。管理者は、ユーザー、違反者、ファイルタイプ、データプロファイル別の機密データ使用違反など、主要なDLPメトリクスを即座に把握できます。長期的かつ地域横断的に分析することで、リスクおよびコンプライアンスチームは、企業のポリシーやプロセスに必要な調整を特定することができます。 すべてのトラフィックを360度データ保護 Cato DLPエンジンは、オンプレミスとクラウドのデータセンター、およびSaaSアプリケーションのプライベートアプリケーションに向かうすべてのトラフィックを検査します。CatoのDLPエンジンは、センシティブなデータの利用を特定し、トラフィックの送信元や送信先に関係なく、一貫したデータ保護ポリシーを適用します。Cato DLPはクラウドサービスとして提供されるため、特定の場所で検査するためにトラフィックをバックホールする必要がなく、DLP制御がアプリケーションの応答性やユーザーの生産性に与える影響を最小限に抑えることができます。   まとめ CatoクラウドのセキュリティオプションであるCASBとDLPの記事をご紹介させていただきました。 Catoクラウドに少しでも興味をお持ちになられた方は、遠慮なくSCSKまでお問い合わせください。 SASE、Cato Networks社、Catoクラウド(Cato Cloud/Cato SASE Cloud)自体の知名度もまだまだ低い状況です。 SCSKでは、2021年からSASEの主要ソリューションを一同に紹介を行うオンラインセミナー「SCSK SASE Solution Summit(通称S4 エスフォー)」を定期的に開催しております。これまで14回開催し、1,800名以上の方にご参加いただいております。 S4については、次回2024年4月以降に開催する予定ですので、改めてご案内します。 来月、2024年3月14日に、Catoクラウドの主要機能を2時間・デモ形式でご覧いただけるセミナーを開催しますので、ご興味のある方は是非ご参加ください。 Catoクラウドデモセミナー~Catoクラウドの主要機能を2時間で網羅~ 本セミナーでは、世界初のSASEである「Catoクラウド」の概要をたっぷり2時間、デモ形式でご覧いただきます。 また、ご希望の方(先着10名様)は、デモ環境に対して、お手元の環境からハンズオン形式でCatoクラウドに触れて頂くことが可能な参加型セミナーです。 www.scsk.jp SASE、Catoクラウドセミナー以外に、Catoクラウドのお客様導入事例の制作、FAQサイト運営、この TechHarmony(技術ブログ)で、皆様のお役に立て、Catoクラウドの知名度アップに少しでも貢献できればと考えております。
本記事の内容は、以下のCato Networks社の記事を元に日本語へ意訳し、再構成したものとなります。 Cato DNS Security DNS Security Cato’s DNS Security inspects all DNS traffic, preventing malicious activity attempts hiding within the protocol’s traffic and blocking DNS requests to malicious... www.catonetworks.com Cato Remote Browser Isolation (RBI) Remote Browser Isolation (RBI) Remote Browser Isolation balances security and user productivity by allowing access to unknown websites in a safe, isolated environment. www.catonetworks.com CatoクラウドのDNS Securityは、セキュリティオプション「 Threat Prevention 」に含まれます。 また、Remoto Browser Isolation(RBI)については、Catoクラウドのセキュリティオプション「 RBI 」となります。 それでは、DNS SecurityとRBIについて解説します。 Cato DNS Securityについて CatoのDNS Securityは、すべてのDNSトラフィックを検査し、プロトコルのトラフィックに隠れた悪意のあるDNSアクティビティを防止し、接続が行われる前に悪意のある宛先へのDNSリクエストをブロックします。 AIベースのDNS検査がインラインフィッシング対策を実現 フィッシングは、すべてのCISOが懸念する攻撃のトップです。 Catoのグローバルで膨大なデータレイクを用いて、AIとMLアルゴリズムを継続的にトレーニングすることで、CatoのDNS Securityは、ドメインの不法占拠やその他のWebサイトのなりすましの試みをインラインで識別できるようになります。これは、Webページコンポーネント、ドメインエイジ、人気度、フィッシングサイトで使用されるツールキットに関連するパターンのリアルタイム分析によって実現されます。このフィッシング攻撃のインライン検知は、クレデンシャルハーベスティング(資格情報の搾取)、マルウェア配信、機密データの損失防止に役立ちます。 接続前に悪意のあるドメインとC&Cサイトをブロック マルウェアをリモートで管理するコマンド&コントロール(C&C)サーバをホストする悪意のあるサイトの数は膨大です。攻撃者は、検出やブラックリスト入りを避けるために、サイト間でC&Cサーバーを絶えず移動させています。CatoのDNS Securityは、Catoのタイムリーかつ継続的に最適化された脅威インテリジェンスシステムを使用して、悪意のあるドメインとC&Cサイトを特定し、それらへのトラフィックとそれらからのトラフィックをリアルタイムでブロックします。CatoのDNS Securityを使用することで、企業は何百万ものWebベースの攻撃にさらされる機会を劇的に減らすことができます。 DNSトンネリングによるデータ損失と悪意のある活動を阻止 DNSトンネリング攻撃は、データ流出やC&Cアクセスの手法として、DNSトラフィックがセキュリティ制御を通過する必要性を利用しています。CatoのDNS Securityは、パケットサイズ、レコードタイプ、ユニークなサブドメインの比率などのDNSリクエストプロパティを分析し、DNSトンネリング攻撃の異常や指標を特定します。CatoのAI/MLアルゴリズムは、DNSトンネリングを識別するために継続的に訓練されており、脅威行為者やドメイン名に関する特定の知識に依存しない保護を可能にします。 暗号通貨マイニングからのリソース流出を防ぐ 暗号通貨マイニングは、システムの不安定化、ユーザーエクスペリエンスの低下、組織のコスト増につながる金銭的利益を得るために、侵害された企業のエンドポイントを使用します。Catoは、専用のルールとヒューリスティックを活用して、暗号通貨マイニングに使用されるドメインを特定し、これらの宛先へのDNSリクエストをブロックします。Catoにより、企業はユーザーの生産性とセキュリティを不正使用による影響から保護します。 新規登録ドメインのブロックでリスク軽減 悪意のあるドメインはすぐに特定され、分類されるため、ほとんどのセキュリティエンジンでカテゴリーベースのブロックが行われます。攻撃者は、カテゴリベースのセキュリティ制御を回避するために新しいドメインを登録します。Catoの DNS Securityは、14日未満のドメインをリアルタイムで識別し、アクセスをブロックします 。新しく登録されたドメインのほとんどは悪意があるか疑わしいものであるため、これらをブロックすることで、攻撃対象が減少し、ユーザーへの影響を最小限に抑えながらセキュリティ態勢が改善されます。 DNSセキュリティの脅威とイベントを完全に可視化 すべての脅威アクティビティはCatoのデータレイクに記録され、管理者は単一のコンソールから必要な脅威情報に即座にアクセスできます。DNS Security イベントは、DNS保護に関連するすべてのイベントへのフィルタリングとドリルダウン機能を備えたセキュリティ脅威ダッシュボードに表示されます。セキュリティチームは、複数のデータソースを集約したり、複数のコンソール間を移動したりすることなく、組織に対するDNSの脅威を迅速に理解し、評価することができます。   Cato Remote Browser Isolationについて Remote Browser Isolation(以下、RBI)とは、安全で隔離された環境で未知のWebサイトへのアクセスを行うことで、セキュリティとユーザーの生産性のバランスをとります。インスタントオン(即時起動)RBIにより、管理者はブロックされたサイトへのアクセスを要求するチケットを大幅に削減でき、ユーザーは安全で合理化されたエクスペリエンスで中断のない生産性を享受できます。 クラウド型セーフブラウジングの即時導入 Cato RBI は、追加のハードウェアやソフトウェアを導入することなく、すべてのロケーションとユーザーに対して、わずか数クリックですぐに有効にすることができます。 カテゴライズされていないWebサイトへのアクセスは、自動的にリモートセッションで隔離され、Webコンテンツのグラフィカルな表示がユーザーのブラウザにストリーミングされます 。 Webベースの攻撃リスクの低減 Webブラウジングは、コードがユーザーのデバイス上でローカルに実行されるため、マルウェアの配信、クレデンシャル情報の盗難、その他の悪意のある行為を可能にする可能性があり、重大なリスクをもたらします。RBIは、コンテナ化された環境でサイトをレンダリング(データ処理し映像を表示させる)し、セッション終了時に完全に破棄することで、Webサイトのコードをエンドポイントから分離します。このプロセスは、ユーザーに対してシームレスかつ透過的に行われ、悪意のあるコードがデバイスに到達するのを防ぎます。 リスクの高いWebアクセスパターンの管理と制御 管理者は、インターネットアクセスのパターンとリスクを理解し、どのサイトにRBIが読み込まれ、どのユーザーが最も頻繁にRBIを使用しているかを追跡・監視する必要があります。Catoは、管理者が統合イベントログを簡単にフィルタリングし、宛先、ユーザーID、ボリューム、その他のメトリクスに基づいてRBIイベントを追跡することを可能にします。RBIポリシーは、企業固有のニーズに合わせて微調整できる。管理者は、Cato管理アプリケーション(CMA)を使用して、調査やトラブルシューティングのためにRBIを手動で読み込むことができます。 フィッシングやランサムウェアに対する重要な防御策 未定義サイト(Undefined)や未分類サイト(Uncategorized)は、フィッシングキャンペーンやランサムウェアの配信によく使用されます。Cato RBIは、完全に隔離された環境で未定義サイトや未分類サイトを自動的に起動し、ユーザーデバイスとの間でデータやファイルが転送されるのを防ぎます。その結果、RBIはこのようなWebサイトを脅威のベクトルとして排除し、労力ゼロでユーザーの生産性に影響を与えることなく、フィッシングやランサムウェアから組織を大幅に強力に保護します。   まとめ CatoクラウドのDNS SecurityとRBIの記事をご紹介させていただきました。 Catoクラウドに少しでも興味をお持ちになられた方は、遠慮なくSCSKまでお問い合わせください。 SASE、Cato Networks社、Catoクラウド(Cato Cloud/Cato SASE Cloud)自体の知名度もまだまだ低い状況です。 SCSKでは、2021年からSASEの主要ソリューションを一同に紹介を行うオンラインセミナー「SCSK SASE Solution Summit(通称S4 エスフォー)」を定期的に開催しております。これまで14回開催し、1,800名以上の方にご参加いただいております。 S4については、次回2024年4月以降に開催する予定ですので、改めてご案内します。 来月、2024年3月14日に、Catoクラウドの主要機能を2時間・デモ形式でご覧いただけるセミナーを開催しますので、ご興味のある方は是非ご参加ください。 Catoクラウドデモセミナー~Catoクラウドの主要機能を2時間で網羅~ 本セミナーでは、世界初のSASEである「Catoクラウド」の概要をたっぷり2時間、デモ形式でご覧いただきます。 また、ご希望の方(先着10名様)は、デモ環境に対して、お手元の環境からハンズオン形式でCatoクラウドに触れて頂くことが可能な参加型セミナーです。 www.scsk.jp SASE、Catoクラウドセミナー以外に、Catoクラウドのお客様導入事例の制作、FAQサイト運営、この TechHarmony(技術ブログ)で、皆様のお役に立て、Catoクラウドの知名度アップに少しでも貢献できればと考えております。
2024年1月の製品アップデート情報にて、Catoからのアラートとシステム通知に関して Webhook を用いて、ServiceNow・Jira・Slack などのサードパーティ プラットフォームにアラートを送信できる機能がリリースされました。 アラートなどの通知が普段利用しているサービスで気づければ便利ですよね。 なので、Catoが提供しているWebhook機能を実際に試していきたいと思います!   Webhookとは ? Webhookとは、Webアプリケーションに対して、特定のイベントが発生した際に、別のWebアプリケーションに通知の発行が可能になる仕組みです。 Catoクラウドでは、セキュリティルールやSocketがダウンした場合、メール通知のサポートはしておりますが、今回のアップデートにてWebhook機能を用いて、ServiceNow・Jira・Slack などのサードパーティ プラットフォームにアラートを送信することが可能となりました。   CatoクラウドでWebhookを利用するには CMA(Catoクラウドの管理画面)で行う操作としては Webhookを機能させるためのルールを作成する ↓ 作成したルールを設定し適用させる といった流れとなります。 Webhookのルールを作成する際に、Webhook 経由でアラートを受信しているサービスの URL と、関連する認証情報をCMAにて入力する必要があるのでその準備が必要となります。   機能を実践してみる 今回行う内容は、Socketのダウンを検知をして、Webhookを介しSlackへ通知を送り、アラート内容の確認が可能であるかを実践していきたいと思います。 ルール作成 まずは、Webhookを機能させるためのルールを作成していきます。 該当箇所は、Administration > Subscriptions > Integrations にて行っていきます。 ※機能が反映されていない場合、Administrationmの配下にSubscriptionsは表示されません。 本機能は順次展開されておりますので、反映までに時間がかかる場合がございます。   今回はSlackに通知を飛ばす設定をいれていきます。 Slackの他には現状ですと、ServiceNow・Jira、そしてWebhook 経由でアラートを受信しているサービスに対応しております。 設定は以下のように行いました。 「Connection Details」の項目に、通知させたいサービスのURLを入力します。 今回はSlackに連携させたいため、通知を確認したいチャンネルを作成し、URLの取得を行いました。 そして、取得したURLを「Connection Details」の項目に入力していきます。 入力したURLに対して接続性があるか、画面下にある「Test」にて確認が可能です。 問題ない場合は、「Test passed successfully」と表示が出てきます。 テスト接続は問題なく行えました。   また、アラート内容を下記 JSONのテンプレートにて任意で追加や削除できる項目があります。 今回はデフォルトの設定値にてアラート内容を確認していきたいと思います。 アラート内容に表示できる項目は以下が可能です。 Field Description account Id アカウント ID。Cato管理アプリケーションのURLの番号 account Name Cato管理アプリケーションにおけるCatoアカウントの名前 alert Type アラートの種類 content アラート コンテンツのフリー テキスト、サポートされている形式は以下となります。 テキスト – contentText HTML – contentHTML (英語) マークダウン – contentMarkdown end Date 監視対象の問題が終了したタイム スタンプ level アラートのレベルまたは優先度 policy Name ルールのCato管理アプリケーションでのポリシー名 rule Id アラートをトリガーしたポリシールールの一意のCato ID rule Name アラートをトリガーしたルール名 site Name アラートをトリガーしたサイト名 start Date 監視対象の問題が開始されたタイム スタンプ subject アラートの簡単な概要 time アラートが送信されたタイム スタンプ title アラートのタイトル   設定する内容は以上となります。 作成したルールを設定する 実際にSocketのWANを落としてみて通知が来るか確認してみたいと思います。 Socketダウンの通知やフェイルオーバーが発生したなどの際に通知させたい場合は、 Network>Link Health Rules>Connectivity Health Rules にて設定が可能です。 今回は、Connectivityに関するイベントをすべて対象にし、ダウン状態が1分以上続いた際に、上記で作成したSlackに通知させるといったルールを設定していきます。 実際に、WANをダウンさせてみました。 CMAにて以下のようにDisconnectedのログを検知しました。   すると、Slackにも以下のようにDisconnectedを検知した通知が来ました。 対象サイト、発生時間、アラート内容、接続状況などの情報が確認できました。 通知内容についてカスタマイズでき、通知を即座に確認できるため問題解決の時間が短縮されるなと感じました。   今回行ってみたLink Health Rulesだけでなく、他にもセキュリティ・ネットワーク機能のルールでも通知先としてWebhookの指定することも可能ですので、すぐに気付きたいルールがございましたら、ぜひ活用いただければと思います。 2024年2月時点での、CatoクラウドにてWebhookとしてアラートを飛ばせる機能・設定は以下となります。 Webhook機能でのアラート一覧 Network LAN Monitoring Remote Port Forwarding Connectivity Health Rules Quality Health Rules Security機能 Internet Firewall WAN Firewall IPS DNS Protection Anti-Malware Detection & Response CASB DLP SaaS Security API   Servicenow・Jira・Slack以外でのWebhook利用時の注意点 今回、SlackにてWebhook機能を確認してみましたが、Servicenow・Jira・Slack以外でのWebhookを送信する場合に設定内容について異なる部分がありますのでそちらを説明していきます。 ルールを作成する際、Webhookを指定するとAuthentication Methodという認証方式を設定できる項目が表示されます。   こちらの項目では、以下の認証方式が選択可能となります。 None:認証方法なし Basic:ユーザーネームとパスワード Bearer:Token Custom:認証鍵とToken 利用するサービスごとに必要な認証方式が異なってきますので、サービス元の認証方法をご確認ください。 送信先に合わせてBody とヘッダーのカスタマイズが可能となります。   ③Custom Headersの項目にて、任意でHeadersでの認証情報の指定ができます。 ④Custom Bodyの項目にて、 送信先に合わせて Body のカスタマイズが行えます。 テンプレートを選択し、通知先に応じて必要な情報を書き込むことが可能となります。 また、Webhook機能全体の話ですが、1つのルールで複数の宛先(URL)の指定ができないため、通知を確認したいサービスが複数ある場合は通知先ごとにルールの作成が必要となります。   最後に 実際にWebhookの機能を試してみましたが、今回行った活用方法としてはSlackを用いてシステムの異常を検知した時、Webhookを介して即座に通知を送り、管理者が迅速に対応できるようにするという内容を行いました。 ただこういった対応だけではなく、Webhook機能には他にも良い活用方法があるかと思います。 例えば、Socketがダウンをしたことを履歴として残したい際、チケット管理システムやタスク管理ツールにWebhook機能を用いて通知を飛ばし、通知をトリガーにチケットを自動起票し管理の手間を省くなどが可能になっていくかと思います。 Webhookの機能を実践してみて、有用性のある自動化や効率的なワークフローが実現できるかもしれないという期待が感じられ、これから有効活用していきたいと思いました。
こんにちは。SCSKのふくちーぬです。 前回は、Amazon Data Firehoseを利用して、CloudWatch LogsのログをS3に転送する手法をご紹介しました。こちらの記事を読んでいない方は、是非ご一読ください。 Amazon CloudWatch Logs を Amazon Data Firehose のみ利用して、解凍処理して Amazon S3 に転送する [Amazon Data Firehose + AWS Lambda + Amazon CloudWatch + Amazon S3 + AWS CloudFormation] Amazon CloudWatch Logs のログを Amazon Data Firehose を利用して解凍済みのログとして Amazon S3 に転送する方法を紹介します。 blog.usize-tech.com 2024.02.15 今回は、Amazon Data FirehoseでS3へ転送する際にタイムゾーンを指定したプレフィックスがサポートされたので紹介します。 Amazon Data FirehoseでS3に転送時にタイムゾーンが指定できるようになりました 以前までは、UTC形式でプレフィックスが付与されていました。例としてJST形式でプレフィックスを付与したい場合は、Dynamic Partitioning(動的パーティショニング)機能を利用する必要があり、ひと手間かかっていました。 Amazon Data Firehose での動的パーティショニング - Amazon Data Firehose Amazon Data Firehose の動的パーティショニングのメカニズムについて説明します。 docs.aws.amazon.com 今回のアップデートにより、ご自身が利用する国の時間帯を利用することが可能となり視認性も向上します。また、Athena等でのETL処理が容易になることも利点となります。 Amazon Data Firehose enables selecting a time zone for bucket prefixes when delivering streams to Amazon S3 aws.amazon.com   検証 実際にやってみます。リソースは、前回デプロイしたものを利用します。 Amazon Data Firehoseのマネジメントコンソールを開きます。 “送信先の設定”を確認すると、新たにタイムゾーンの欄が追加されています。 “編集”を押下して、タイムゾーンを指定します。今回は、”Asia/Tokyo”を指定します。もちろん他の国のタイムゾーンもサポートされています。 ログの確認 Lambdaにてテストイベントを作成して実行します。CloudWatch Logsへログが出力され、FirehoseでS3へのログ転送を実施します。 S3のプレフィックス及びファイル名に、日本時間でタイムスタンプが付与されていることを確認できました。   最後に いかがだったでしょうか。 Data Firehose のタイムゾーンについて解説しました。 S3バケットにオブジェクトが配信された日時と、Data Firehose によって配信されたS3プレフィックス及びファイル名が揃っていることは運用時にも嬉しいですね。 本記事が皆様のお役にたてば幸いです。 ではサウナラ~🔥
こんにちは。SCSKのふくちーぬです。 2/9にて Amazon Kinesis Data Firehose の名称が、Amazon Data Firehose に変更されましたね。もともと取っつきにくい名前だったのに、さらに混乱しそうなところではあります。 Introducing Amazon Data Firehose, formerly known as Amazon Kinesis Data Firehose aws.amazon.com 今回は、Amazon CloudWatch Logs のログを Amazon Data Firehose を利用して解凍済みのログとして Amazon S3 に転送する方法を紹介します。 Amazon Data Firehose にてログの解凍処理ができるようになりました 以前までは、CloudWatch LogsのログをS3に転送する際にgzip形式のまま転送されていました。運用管理者がログの中身を見るためには、Lambdaにて解凍処理を実施させておくか、運用管理者自身が解凍ツール(7zip等)を使うひと手間が必要でした。 2023/12/15のアップデートにより、Amazon Data Firehose 側で解凍処理を任せることが可能になりました。 Amazon Kinesis Data Firehose が、解凍された CloudWatch Logs の送信先への配信をサポート aws.amazon.com Amazon Data Firehose 解凍処理には、0.00403USD/1GBの料金がかかることは注意しましょう。また、解凍後のデータとなるためS3のストレージ料金もわずかながら増大します。やはり大量のログデータを分析する際には、圧縮された状態で(gzip形式等)Athenaで分析する手段を取ることには変わりはないです。しかし、S3でログをすぐに確認する用途で利用できそうなので検証してみます。 検証 CloudWatch Logs のデータを Data Firehose にて、解凍処理を実施した上でS3に転送します。またリソースの構築には、全て CloudFormation を利用します。 アーキテクチャー Lambda実行ログをCloudWatch Logsに保存する CloudWatch Logsにログが入ったことを検知するサブスクリプションフィルターにて、Data Firehose に流す Data Firehose にてログの解凍処理を実施の上、S3に転送する CloudFormationテンプレート 以下のテンプレートをデプロイしてください。 AWSTemplateFormatVersion: "2010-09-09" Description: "kinesis stack" Parameters: ResourceName: Type: String BUCKETNAME: Type: "String" Resources: # ------------------------------------------------------------# # S3 # ------------------------------------------------------------# S3BucketForlog: Type: "AWS::S3::Bucket" DeletionPolicy: "Delete" Properties: BucketName: !Sub "${BUCKETNAME}-${AWS::AccountId}" AccessControl: "Private" PublicAccessBlockConfiguration: BlockPublicAcls: "true" BlockPublicPolicy: "true" IgnorePublicAcls: "true" RestrictPublicBuckets: "true" # ------------------------------------------------------------# # Kinesis (Kinesis Firehose,Iam Policy,Iam Role,Log Grop,Log Stream) # ------------------------------------------------------------# Deliverystream: DependsOn: - "DeliveryPolicy" Type: "AWS::KinesisFirehose::DeliveryStream" Properties: DeliveryStreamName: !Sub "${ResourceName}-KDF-LogDeliveryStream" ExtendedS3DestinationConfiguration: BucketARN: !Sub "arn:aws:s3:::${S3BucketForlog}" BufferingHints: IntervalInSeconds: "60" SizeInMBs: "50" CompressionFormat: "UNCOMPRESSED" Prefix: !Sub "${ResourceName}-logs/" RoleARN: !GetAtt "DeliveryRole.Arn" DynamicPartitioningConfiguration: Enabled: "false" ProcessingConfiguration: Enabled: "true" Processors: - Type: Decompression CloudWatchLoggingOptions: Enabled: "true" LogGroupName: !Sub "/aws/firehose/${ResourceName}-KDF-LOG" LogStreamName: "error" Tags: - Key: Name Value: !Sub "${ResourceName}-KDF-LogDeliveryStream" DeliveryPolicy: Type: "AWS::IAM::Policy" Properties: PolicyName: "firehose_delivery_policy" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "s3:AbortMultipartUpload" - "s3:GetBucketLocation" - "s3:GetObject" - "s3:ListBucket" - "s3:ListBucketMultipartUploads" - "s3:PutObject" Resource: - !Sub "arn:aws:s3:::${S3BucketForlog}" - !Sub "arn:aws:s3:::${S3BucketForlog}/*" - Effect: "Allow" Action: - "logs:PutLogEvents" Resource: - !Sub "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/firehose/${ResourceName}-log-DeliveryStream:*" PolicyName: "IPL-KinesisFirehoseAccessPolicy" Roles: - !Ref "DeliveryRole" DeliveryRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Sid: "" Effect: "Allow" Principal: Service: "firehose.amazonaws.com" Action: "sts:AssumeRole" Condition: StringEquals: sts:ExternalId: !Ref "AWS::AccountId" RoleName: "IRL-KINESISDATAFIREHOSE-LogDeliveryStream" LogGroupFirehose: Type: "AWS::Logs::LogGroup" Properties: LogGroupName: !Sub "/aws/firehose/${ResourceName}-KDF-LOG" LogStreamFirehose: Type: "AWS::Logs::LogStream" Properties: LogGroupName: !Ref "LogGroupFirehose" LogStreamName: "error" # ------------------------------------------------------------# # Lambda (Lambda,Iam Policy,Iam Role,Log Grop,Log Stream) # ------------------------------------------------------------# HelloWorldFunction: Type: "AWS::Lambda::Function" Properties: Code: ZipFile: | def lambda_handler(event, context): print("Hello,World") return { 'statusCode': 200, 'body': "Hello,World" } FunctionName: !Sub "${ResourceName}-LMD-HelloWorld" Handler: "index.lambda_handler" Role: !GetAtt "HelloWorldFunctionRole.Arn" Runtime: "python3.12" Timeout: "3" Architectures: - "x86_64" FuncLogGroup: Type: "AWS::Logs::LogGroup" Properties: LogGroupName: !Sub "/aws/lambda/${HelloWorldFunction}" SubscriptionFilterLambda: Type: "AWS::Logs::SubscriptionFilter" Properties: FilterName: !Sub "${ResourceName}-SFL-HelloWorld" DestinationArn: !GetAtt Deliverystream.Arn FilterPattern: " " LogGroupName: !Sub "${FuncLogGroup}" RoleArn: !GetAtt "LogsRole.Arn" HelloWorldFunctionRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Action: - "sts:AssumeRole" Effect: "Allow" Principal: Service: - "lambda.amazonaws.com" ManagedPolicyArns: - "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" RoleName: "IRL-LAMDA-HelloWorld" LogsRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: !Sub "logs.${AWS::Region}.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "firehose:*" Resource: !GetAtt Deliverystream.Arn RoleName: "IRL-CLOUDWATCHLOGS-HelloWorld"   ログの確認 Lambdaにてテストイベントを作成して実行します。CloudWatch Logsにログが出力されていることを確認します。 問題なければFirehoseが動きS3にてログが転送されます。新たなオブジェクトが作成されていますね。 オブジェクトをダウンロードして、ファイルを開いてみます。 中身をみると、解凍されたログになっていますね。 視認性を向上させるために、少し整形します。 Lambdaの実行ログの内容を無事確認することができました。 最後に いかがだったでしょうか。 Data Firehose の新機能である解凍処理について解説しました。 ただのストリーミング処理だけではなく、今まで Lambda が担っていた処理を Data Firehose が肩代わりしてくれる嬉しいアップデートかと思います。要件に応じて、利用の検討をいただければ幸いです。 本記事が皆様のお役にたてば幸いです。 ではサウナラ~🔥