RASP (Runtime Application Self-Protection) エージェントを Java アプリケーションに統合して、悪意のある攻撃のリアルタイムモニタリングとブロックを有効にします。このプロセスにより、アプリケーションが安全かつ確実に実行されるようになります。このトピックでは、Java アプリケーションをアプリケーション保護に接続する方法について説明します。
制限事項
サポートされている環境
RASP エージェントは、次のすべての要件を満たす Java プロセスのみをサポートします。
JDK バージョン: JDK 6 以降。JDK 13、JDK 14、および 1.8.0_40 より前の JDK 8 のバージョンはサポートされていません。
ミドルウェア: エージェントはさまざまなミドルウェアの種類とバージョンと互換性があります。サポートされているミドルウェアには、Tomcat、SpringBoot、Jboss、WildFly、Jetty、Resin、Weblogic、Websphere、Liberty、Netty、GlassFish、および国内のミドルウェアが含まれます。
オペレーティングシステム: Linux (64 ビット) および Windows (64 ビット)。
自動接続のリソース使用量のしきい値
アプリケーションの安定性を確保するために、自動接続メソッドは、ホスト、コンテナー、または JVM のリソース使用量が特定のしきい値を超えると、RASP エージェントのインストールを一時停止します。リソース使用量がしきい値を下回ると、インストールが再開されます。この制限は、手動接続メソッドには適用されません。次のいずれかのしきい値に達すると、エージェントのインストールが一時停止します。
ホストまたはコンテナーの CPU 使用率が 98% を超えるか、残りのメモリが 200 MB 未満です。
残りの JVM ヒープメモリが 150 MB 未満であるか、残りのメタデータスペースが 5 MB 未満です。
接続の概要
接続プロセス
接続方法
RASP は自動接続方法と手動接続方法をサポートしています。ニーズに最も適した方法を選択してください。
接続方法 | 説明 | ユースケース |
自動接続 | アプリケーションをサーバーごとに接続します。サーバーが接続されると、アプリケーション保護は JVM Attach 機能を使用して、コンテナー環境内のプロセスを含む Java プロセスをランタイム時に自動的に識別して接続します。 この方法により、アプリケーションプロセスを再起動することなく、ランタイム時にアプリケーション保護を動的にロードおよびアンロードできるため、業務継続性が確保されます。 | 別のアプリケーショングループに自動的に接続されていないサーバーには、この方法を選択します。 説明 サーバー上のアプリケーションプロセスを別のグループに接続するには、まずそのサーバーのアプリケーション保護を無効にする必要があります。これにより、サーバーは現在のアプリケーショングループから削除されます。その後、新しいアプリケーショングループの自動接続を有効にできます。 |
手動接続 | アプリケーションをプロセスごとに接続します。これには、エージェントを手動でデプロイし、アプリケーションを再起動する必要があります。 |
|
前提条件
アプリケーションサーバー上の Security Center エージェントがオンラインであること。
アセットセンター > ホストアセット ページに移動します。サーバー タブで、クライアント 列のアイコンをチェックして、エージェントのステータスを確認します。
アイコンは、エージェントがオンラインであることを示します。エージェントがオフラインの場合は、「オフラインの Security Center エージェントのトラブルシューティング」をご参照ください。RAM ユーザーとしてアプリケーション保護を使用している場合は、RAM ユーザーに [AliyunYundunWAFFullAccess] および [AliyunYundunSASFullAccess] アクセスポリシーがあることを確認してください。権限を付与する方法の詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
1. アプリケーショングループの作成
にログインします。
左側のナビゲーションウィンドウで、保護設定 > アプリケーション保護 を選択します。コンソールの左上隅で、アセットが配置されているリージョンを選択します: 中国 または 全世界 (中国を除く)。
アプリケーションの設定 タブで、アプリケーショングループの作成 をクリックします。
アプリケーショングループの作成 ウィザードで、アプリケーショングループの名前を入力し、アプリケーション言語として Java を選択し、説明を追加してから、次へ をクリックします。
保護したいアプリケーションにちなんでアプリケーショングループに名前を付けることをお勧めします。各名前は一意である必要があります。アプリケーション言語は一度設定すると変更できません。
2. 自動または手動での接続
自動接続
注意
初めて自動接続を有効にする場合は、オフピーク時に行い、ゲートウェイ関連のアプリケーションプロセスを避け、ビジネスモニタリングメトリックを観察しながら段階的に展開することをお勧めします。自動接続プロセス中、RASP は監視または保護コードを挿入してアプリケーションプロセスを計測します。このプロセスにより、一時的なパフォーマンスの低下が発生し、約 30 秒間 CPU 使用率が急上昇し、平均的な影響時間は 10〜20 秒です。まれに、大規模なアプリケーションへの影響が数分間続くことがあります。接続が完了すると、パフォーマンスは正常に戻ります。
ホストは一度に 1 つのアプリケーショングループにのみ自動的に接続できます。このオプションは、まだ別のグループに接続されていない 64 ビットホストでのみ利用できます。
手動で接続されているホストに対して自動接続を有効にすることができます。手動で接続された RASP エージェントをアンインストールすると、アプリケーション保護は自動的にアプリケーションプロセスを再接続します。
手順
(オプション) アプリケーション保護への自動 / 手動アクセス ウィザードの 自動アクセス タブで、Blacklist または Application Access Whitelist をクリックして、自動接続のプロセスを指定します。
ブラックリストまたはホワイトリストを構成することで、自動接続のプロセスの範囲を定義できます。詳細については、「ホワイトリストまたはブラックリストにルールを追加する」をご参照ください。
アプリケーション保護への自動 / 手動アクセス ウィザードの 自動アクセス タブで、アセットアクセスアプリケーション保護の選択 をクリックします。
Select Asset パネルで、接続したいアセットを選択し、OK をクリックします。
その後、アプリケーション保護は、プロセスを再起動することなく、選択したホスト上の Java アプリケーションプロセス (コンテナー環境内のものを含む) を自動的に識別して接続します。一度に最大 50 台のサーバーを選択できます。
接続プロセスは、ネットワーク環境によって最大 10 分かかる場合があります。ホスト上で複数の Java プロセスが実行されている場合、Security Center は接続ルールを満たすすべてのプロセスに接続します。
アプリケーションプロセスの接続ステータスを表示します。
アプリケーション保護アクセスステータス 列でアプリケーションインスタンスの接続ステータスを表示できます。ステータスは次のとおりです。
未接続: サーバーでアプリケーション保護が有効になっていません。
失敗: サーバー上のすべてのサポートされているアプリケーションの接続に失敗しました。
一部のアクセス: サーバー上の一部のサポートされているアプリケーションは接続されましたが、その他は失敗しました。
すべてのアクセス: サーバー上のすべてのサポートされている Java アプリケーションがアプリケーション保護に接続されているか、サーバー上に接続可能なプロセスが存在しません。
説明[保護ステータス] が すべてのアクセス であっても、サーバー上に接続可能なプロセスが存在しないか、アプリケーションプロセスがサポートされていない場合、接続詳細リストは空になります。後で接続可能なプロセスがサーバーに追加されると、自動的にアプリケーション保護に接続されます。
操作する 列で、[詳細] をクリックして、接続されている Java プロセスのステータスを表示します。
説明アプリケーショングループに接続ルールを設定している場合、ブラックリストルールに一致するプロセス、またはホワイトリストルールに一致しないプロセスはスキップされます。

手動接続
以下の手順に従って、ホストまたはコンテナー上の Java アプリケーションをアプリケーション保護に手動で接続できます。コンテナーを手動で接続するには、次の方法があります。
手動コンテナー接続 (ポイントアンドクリックプッシュ): 接続するサーバーとアプリケーションをすでに特定している場合は、この方法を使用します。この方法では、インストールパッケージを直接プッシュできます。
手動コンテナー接続 (カスタムダウンロードとインストール): RASP エージェントのインストールに他の人の支援が必要な場合は、この方法を使用します。インストールパッケージをダウンロードし、他の担当者に配布してインストールとデプロイメントを行うことができます。
ホストを手動で接続する
手動アクセス タブの [ホスト接続ガイド] サブタブで、Point-and-click Push をクリックします。
RASP プローブのプッシュ ダイアログボックスで、エージェントをプッシュするサーバーを選択し、[OK] をクリックします。
アプリケーションの実行環境に基づいて、アプリケーションサーバーに JVM パラメーターを追加します。コンソールの指示または次の表を参照できます。
次の表の操作を実行する際には、
{appId}をコンソールの ホストのアクセスガイド タブに表示されるアプリケーション ID に置き換える必要があります。次の図は、アプリケーション ID の場所を示しています。
実行環境
パラメーター構成
Tomcat (Linux)
<Tomcat_Installation_Directory>/bin/setenv.shファイルに次の内容を追加します。export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"setenv.shファイルが<Tomcat_Installation_Directory>/bin/ディレクトリに存在しない場合は、作成してください。Tomcat (Windows)
<Tomcat_Installation_Directory>\bin\setenv.batファイルに次の内容を追加します。set CATALINA_OPTS=%CATALINA_OPTS% "-javaagent:C:\Program Files (x86)\Alibaba\Aegis\rasp\apps\{appId}\rasp.jar"setenv.batファイルが<Tomcat_Installation_Directory>\bin\ディレクトリに存在しない場合は、作成してください。Jetty
{JETTY_HOME}/start.ini構成ファイルに次の構成を追加します。--exec -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jarSpring Boot
Spring Boot プロセスを開始するときに
-javaagentパラメーターを追加します。java -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jarたとえば、Spring Boot プロセスの元の起動コマンドが次のようになっているとします。
java -jar app.jarRASP エージェントを使用して Spring Boot プロセスを開始するための変更後のコマンドは次のとおりです。
java -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar -jar app.jar重要-javaagentパラメーターは-jarパラメーターの前に置く必要があります。JBoss または WildFly
スタンドアロンモード
<JBoss_Installation_Directory>/bin/standalone.shを開き、# Display our environmentの下に次の内容を追加します。JAVA_OPTS="${JAVA_OPTS} -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"ドメインモード
<JBoss_Installation_Directory>/domain/configuration/domain.xmlを開き、<server-groups>タグを見つけ、目的の<server-group>内の<jvm>タグを見つけて、次の内容を追加します。<jvm-options> <option value="-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"/> </jvm-options>
Liberty
<Liberty_Installation_Directory>/${server.config.dir}パス (デフォルトパス:/opt/ibm/wlp/usr/servers/defaultServer/jvm.options) にあるjvm.optionsファイルを作成または変更し、次の内容を追加します。-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jarResin
Resin 3
<Resin_Installation_Directory>/conf/resin.confで、<server-default>タグの下にある<jvm-arg>タグを見つけて、次の内容を追加します。<jvm-arg>-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar</jvm-arg>Resin 4
<Resin_Installation_Directory>/conf/cluster-default.xmlで、<server-default>タグの下にある<jvm-arg-line>タグを見つけて、次の内容を追加します。<jvm-arg>-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar</jvm-arg>
接続されたアプリケーションをローカルで再起動します。
アプリケーションが再起動すると、保護がアクティブになります。アプリケーションの設定 ページで、アプリケーショングループに接続されているインスタンスのリストを表示できます。
コンテナーを手動で接続する (ポイントアンドクリックプッシュインストール)
手動アクセス タブの [コンテナーの追加] サブタブで、Point-and-click Push をクリックします。
レコードのプッシュ タブに移動し、RASP プローブのプッシュ をクリックして、アプリケーションが存在するホストまたはコンテナーに RASP エージェントをプッシュしてインストールすることもできます。
RASP プローブのプッシュ ダイアログボックスで、エージェントをプッシュするサーバーを選択し、[OK] をクリックします。
RASP エージェントを起動します。
方法 1: Dockerfile に書き込む
次のコマンドを実行して Dockerfile ディレクトリに移動し、
raspディレクトリを作成します。cd <Dockerfile_Directory> mkdir rasp次のコマンドを実行して、サーバーにプッシュされた RASP ファイルを新しく作成した
raspディレクトリにコピーします。Security Center コンソールの [コンテナーの追加] タブからアプリケーショングループ ID を取得できます。
cp -r /usr/local/aegis/rasp/apps/<Application_Group_ID>/* ./raspDockerfile を変更して、
raspインストールパッケージをコンテナーイメージにパッケージ化します。Dockerfile に次の内容を追加します。COPY rasp /rasp/重要アプリケーションを実行するユーザーが
/rasp/ディレクトリとその内容に対する読み取りおよび実行権限を持っていることを確認してください。Dockerfile の JVM 起動パラメーターを変更し、
-javaagent:/rasp/rasp.jarを追加します。以下の表の
{manager.key}を、[コンテナーの追加] タブに表示されるDmanager.keyの値に置き換える必要があります。実行環境
パラメーター構成
SpringBoot
イメージのビルド時に RASP エージェントをインストールするには、Dockerfile の起動パラメーターを変更します。変更後の起動コマンドは次のとおりです。
変更前:
CMD ["java","-jar","/app.jar"]変更後:
CMD ["java","-javaagent:/rasp/rasp.jar","-Dmanager.key={manager.key}","-jar","/app.jar"]Tomcat
Weblogicイメージのビルド時に RASP エージェントをインストールするには、Dockerfile に次の内容を追加します。
ENV JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"コンテナーの起動時に RASP エージェントをインストールするには、起動コマンドに次のパラメーターを追加します。
docker --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"
たとえば、元のコンテナー起動コマンドが
docker -itd --name=test -P <Image_Name>の場合、起動時に RASP エージェントをインストールするための変更後のコマンドはdocker -itd --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}" --name=test -P <Image_Name>です。イメージを再ビルドし、コンテナーを起動します。
方法 2: データボリュームとしてマウントする
コンテナーを作成する際に、次のコマンドを実行して、サーバー上の
raspディレクトリをコンテナー内の指定されたディレクトリにマウントします。docker run -itd --privileged=true -v /usr/local/aegis/rasp/apps/<Application_Group_ID>:/rasp/ <Image_ID>次のコマンドを実行してコンテナーに入ります。
docker exec -it <Container_ID> /bin/bashアプリケーションサーバーの起動スクリプトに次の JVM パラメーターを追加して、RASP エージェントを起動します。
ビジネス環境に基づいて次のパラメーターを構成する必要があります。
{manager.key}を、[コンテナーの追加] タブに表示されるDmanager.keyの値に置き換える必要があります。-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}
コンテナーを手動で接続する (カスタムダウンロードとインストール)
手動アクセス タブの [コンテナーの追加] サブタブで、[RASP エージェントのダウンロードとインストール] の下のドロップダウンリストから [カスタムインストール] を選択します。
レコードのプッシュ タブに移動し、RASP プローブのプッシュ をクリックして、アプリケーションが存在するホストまたはコンテナーに RASP エージェントをプッシュしてインストールすることもできます。

ドロップダウンリストから、RASP エージェントをインストールするサーバーがプロキシ経由で Security Center に接続するかどうかに応じて、[プロキシにアクセスしない] または [自己管理プロキシクラスター] を選択します。
[自己管理プロキシクラスター] を選択した場合は、サーバーが使用するプロキシクラスターを選択する必要があります。プロキシ接続の詳細については、「プロキシを使用してエージェントを接続する」をご参照ください。
RASP インストールパッケージの横にある [ダウンロード] をクリックしてダウンロードします。
RASP エージェントを起動します。
方法 1: Dockerfile に書き込む
次のコマンドを実行して Dockerfile ディレクトリに移動します。
cd <Dockerfile_Directory>ダウンロードした RASP インストールパッケージを Dockerfile ディレクトリにアップロードして展開します。
unzip <Installation_Package_Name> -d .説明展開後、
raspという名前のディレクトリが作成されます。Dockerfile を変更して、
raspインストールパッケージをコンテナーイメージにパッケージ化します。Dockerfile に次の内容を追加します。COPY rasp /rasp/重要重要 アプリケーションを実行するユーザーが
/rasp/ディレクトリとその内容に対する読み取りおよび実行権限を持っていることを確認してください。Dockerfile の JVM 起動パラメーターを変更し、
-javaagent:/rasp/rasp.jarを追加します。以下の表の
{manager.key}を、[コンテナーの追加] タブに表示されるDmanager.keyの値に置き換える必要があります。実行環境
パラメーター構成
SpringBoot
イメージのビルド時に RASP エージェントをインストールするには、Dockerfile の起動パラメーターを変更します。変更後の起動コマンドは次のとおりです。
変更前:
CMD ["java","-jar","/app.jar"]変更後:
CMD ["java","-javaagent:/rasp/rasp.jar","-Dmanager.key={manager.key}","-jar","/app.jar"]Tomcat
Weblogicイメージのビルド時に RASP エージェントをインストールするには、Dockerfile に次の内容を追加します。
ENV JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"コンテナーの起動時に RASP エージェントをインストールするには、起動コマンドに次のパラメーターを追加します。
docker --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"
たとえば、元のコンテナー起動コマンドが
docker -itd --name=test -P <Image_Name>の場合、起動時に RASP エージェントをインストールするための変更後のコマンドはdocker -itd --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}" --name=test -P <Image_Name>です。イメージを再ビルドし、コンテナーを起動します。
方法 2: データボリュームとしてマウントする
ダウンロードした RASP インストールパッケージをサーバー上の指定されたディレクトリにアップロードして展開します。
<user_path>を環境に適した正しいパスに置き換える必要があります。unzip <Installation_Package_Name> -d /<user_path>/コンテナーを作成する際に、次のコマンドを実行して、サーバー上の
raspディレクトリをコンテナー内の指定されたディレクトリにマウントします。docker run -itd -v /<user_path>/rasp:/rasp/ <Image_ID>次のコマンドを実行してコンテナーに入ります。
docker exec -it <Container_ID> /bin/bashアプリケーションサーバーの起動スクリプトに次の JVM パラメーターを追加して、RASP エージェントを起動します。
ビジネス環境に基づいて次のパラメーターを構成する必要があります。
{manager.key}を、[コンテナーの追加] タブに表示されるDmanager.keyの値に置き換える必要があります。-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}
3. 保護ポリシーの設定
アラームが間違いないことを確認し「保護モード」を設定する ウィザードで、保護ポリシーを構成し、OK をクリックします。
デフォルトの保護モードは 監視 です。監視 モードを 2〜5 日間使用することをお勧めします。この期間中に誤検知が発生しない場合は、保護モードを 保護 に変更できます。誤検知が発生した場合は、ホワイトリストルールを追加して、対応する脅威タイプを検出から除外できます。詳細については、「アラートをホワイトリストに追加する」をご参照ください。
カテゴリ | パラメーター | 説明 |
保護ポリシー | アプリケーショングループ名 | アプリケーショングループの名前。ここでは変更できません。 |
保護ステータス | 現在のアプリケーショングループの保護を有効にするか無効にするかを選択します。保護はデフォルトで有効になっています。無効にすると、アプリケーション保護は攻撃を検出またはブロックしません。 | |
保護モード | アプリケーショングループの保護モードを選択します。オプションは次のとおりです。
| |
保護ポリシーグループ | デフォルトの保護ポリシーグループは日常運用グループです。ドロップダウンリストから別のグループを選択できます。保護ポリシーグループの詳細については、「保護ポリシーの管理」をご参照ください。 | |
脅威タイプ | 選択した保護ポリシーグループでサポートされている脅威タイプを表示します。 | |
検出ポリシー | 脆弱性検出 | 現在のアプリケーショングループの脆弱性検出を有効にするかどうかを選択します。詳細については、「アプリケーションの脆弱性を検出する」をご参照ください。 |
インメモリ Webshell 検出 | 現在のアプリケーショングループのインメモリ Webshell 検出を有効にするかどうかを選択します。詳細については、「インメモリ Webshell から防御する」をご参照ください。 | |
共通設定 | 検出タイムアウト期間 | 攻撃検出の最大時間。値は 1〜60,000 ミリ秒の範囲で指定できます。デフォルトは 300 ミリ秒です。検出時間がこの値を超えると、リクエストは検出の終了を待たずに続行されます。特定の理由がない限り、デフォルト値を使用することをお勧めします。 |
ソース IP アドレスの取得方法 |
| |
ランタイムサーキットブレーカー設定 | この機能を有効にすると、サーバーまたはプロセスのリソース使用量が指定された CPU またはメモリのしきい値のいずれかを超えた場合、RASP の保護機能、インメモリ Webshell 検出、および脆弱性検出が一時的に無効になります。リソース使用量が指定されたすべてのしきい値を下回ると、保護は自動的に復元されます。 この機能は、ピーク負荷時のビジネスの安定性を確保し、デフォルトでは無効になっています。パフォーマンスに敏感な、計算集約型のアプリケーションに対して有効にすることができます。構成オプションは次のとおりです。
重要
|
4. 接続ステータスの確認
アプリケーションのプロセス ID (PID) がアプリケーショングループの承認済みプロセスリストに表示されれば、アプリケーションは正常に接続されています。接続されているアプリケーションのリストを表示するには:
アプリケーション保護 ページの アプリケーションの設定 タブで、対象のアプリケーション グループの Authorized Process 列にある番号をクリックします。
プロセス詳細パネルで、接続されているアプリケーションのリストを表示します。
対象サーバー上のアプリケーションプロセスの PID がリストにある場合、アプリケーションはアプリケーション保護に正常に接続されています。

次のステップ
よくある質問
サーバーの自動接続を有効にした場合、新しい Java アプリケーションは自動的に保護されますか?後でアプリケーションを追加または削除すると、プロセスの再起動が発生しますか?
はい。サーバーの自動接続を有効にすると、新しい Java アプリケーションは自動的に接続され、保護されます。アプリケーション保護は JVM Attach 機能を使用して、サーバー上のリスニングポートを持つ Java プロセス (コンテナー環境内のものを含む) を自動的に識別して接続します。この方法により、アプリケーションプロセスを再起動することなく、ランタイム時にアプリケーション保護を動的にロードおよびアンロードできます。
サーバーの自動接続を有効にした場合、1 つのアプリケーションプロセスを停止すると他のアプリケーションに影響しますか?
いいえ。アプリケーション保護はプロセスごとに機能します。保護はプロセス間で分離されています。
アプリケーション保護にはリスニングポートが必要ですか?
いいえ。アプリケーション保護はフック技術を使用して、アプリケーションと他のシステムとの間の相互作用をリアルタイムで監視し、リスニングポートを占有することなく攻撃の検出と防御を可能にします。
コンテナー環境で Java アプリケーションを手動で接続する際に構成する manager.key の目的は何ですか?オプションですか?
起動コマンドに manager.key パラメーターを追加する主な目的は、アプリケーションをアセットに関連付けることです。いいえ、オプションではありません。このパラメーターは必須です。
コンテナー化されたアプリケーションを手動で接続する場合、manager.key パラメーターを構成する必要があります。ホスト上の Java アプリケーションを手動で接続する場合、サーバー上のアプリケーションは対応するアセットに直接関連付けることができるため、このパラメーターを構成する必要はありません。