LEGACY
です。 このプロファイルは古いバージョンのPlantUMLの動作をエミュレートします。ですから、安全に1.2020.11にアップグレードすることができます。しかし、アップグレード後にはあなたの使用法に適したプロファイルを選択する必要があります。
これは、PlantUMLが異なるセキュリティ設定を必要とする多くの異なる構成で使用できるために必要となった機能です。
もし1.2020.11より古いバージョンを使用していて、システムがインターネットからアクセス可能であれば、古いバージョンの PlantUML は、あなたが期待するよりも少しだけ多くのことを暴露するかもしれませんので、アップグレードすべきでしょう。 デフォルトのLEGACY
プロファイルでさえ、古いバージョンの PlantUML の動作よりも安全です。
PLANTUML_SECURITY_PROFILE
の設定PLANTUML_SECURITY_PROFILE
の設定
set PLANTUML_SECURITY_PROFILE=INTERNET
または
setenv PLANTUML_SECURITY_PROFILE INTERNET
Java環境変数の設定は、コマンドラインのオプションで行います。 (
-D
フラグを忘れずに)
java -DPLANTUML_SECURITY_PROFILE=INTERNET -jar /path/to/plantuml.jar ...
JavaとPlantUMLをライブラリとして使用している場合は、次のようにします。
System.setProperty("PLANTUML_SECURITY_PROFILE", "INTERNET");
UNSECURE
プロファイルで動作する場合、PlantUMLは実行中のサーバのすべてのローカルファイルにアクセスでき、どのようなURLにもアクセスできることを意味します。
UNSECURE
という名前は、このプロファイルを使用してはいけないという意味ではありません。ローカルのPlantUML環境で、スクリプトからドキュメントを生成する場合は、完全に安全であり問題ありません。
インターネットからアクセス可能なWebサーバで使用されている場合は、ユーザの入力したテキストで何が起きるかをコントロールできないため、問題になる可能性があります。
LEGACY
以外の適切なセキュリティプロファイルを設定することを検討してください。
INTERNET
プロファイルで実行している場合、PlantUMLは(ホワイトリストを使用している場合を除き)ローカルファイルにアクセスできません。ただし、ポート80または443を使用している全てのURLにアクセス可能です。特定のポート(イントラネットサーバ用の8080のような)へのアクセスが必要な場合、ホワイトリストを使用することもできます。
ALLOWLIST
プロファイルでは、PlantUMLはローカルファイルやURLにアクセスできません。ローカルまたはリモートへのアクセスを明示的に許可するために、ホワイトリストを使用しなければいけません。
SANDBOX
プロファイルでは、PlantUMLはローカルファイルやURLにアクセスできません。ホワイトリストも無視されます。つまり、完全に閉じた環境です。
このプロファイルは主にテストで使用します。もし誰かがSANDBOX
プロファイルを実行中に外へのアクセスに成功したならば、私たちはセキュリティホールがあると認識し、修正対応を行います。
plantuml.allowlist.path
plantuml.include.path
plantuml.allowlist.url
PLANTUML_SECURITY_PROFILE
と同じ方法で設定できます。
;
(Windows) または :
(Linux)を区切りとしたフォルダのリストに対して、ユーザーがアクセスする権限を与えます。
java -DPLANTUML_SECURITY_PROFILE=INTERNET -Dplantuml.allowlist.path=/usr/common/:/usr/plantuml/ ...
plantuml.allowlist.path
とほぼ同じように機能します。唯一の違いは、ユーザーがファイルをフルパスで記述する必要がなくなるという点です。PlantUMLはユーザーがフルパスを指定せずにファイル名だけを指定した場合にも、plantuml.include.path
で定義されたフォルダ内のファイルを検索します。
java -DPLANTUML_SECURITY_PROFILE=INTERNET -Dplantuml.include.path=c:/windows/plantuml/ ...
;
(Windows、Linux共通)を区切りとしたURLのリストに対して、ユーザーがアクセスする権限を与えます。
java -DPLANTUML_SECURITY_PROFILE=ALLOWLIST -Dplantuml.allowlist.url=https://plantuml.com/;http://somelocalserver:8080/commons/ ...