スクリプトの暗号化

この章では、開発したFIRERPAモジュールまたはスクリプトを暗号化する方法について説明します。この章では、PC側のスクリプト暗号化ではなく、FIRERPAの内蔵Python環境で実行されるスクリプトやモジュールについて説明します。例えば、/data/usr/module/task/data/usr/module/extension内のモジュール、または内蔵Pythonコマンドで実行されるスクリプトなどです。迅速に作業を進めるための関連ツールを提供しており、この章を通じて、開発したスクリプトを保護する方法を学ぶことができます。

スクリプトの暗号化は、Cythonを使用してC言語に変換し、.soファイルにコンパイルする方法で行われます。パフォーマンスに大きな影響を与えることはありません。しかし、すべてのスクリプトファイルを暗号化するのではなく、コアロジックのみを暗号化することをお勧めします。また、サードパーティライブラリのファイルを暗号化するために使用しないでください。これは無意味な行為です。常に「自身のロジックのみを暗号化する」という原則に従ってください。

ツールイメージのビルド

私たちはDockerに強く依存しているため、作業を始める前にDockerを準備してください。次に、https://github.com/firerpa/compilerをクローンし、ドキュメントまたは以下のコマンドに従ってイメージをビルドしてください。

docker build -t compiler .

スクリプトコードの暗号化

以下のコマンドを使用して、ソースコードをイメージ内にマッピングし、コンパイルします。サポートされているアーキテクチャ(arch)にはarmarm64x86x86_64があり、これらはFIRERPAサーバーの異なるアーキテクチャに対応しています。異なるアーキテクチャ間には互換性がありません。

docker run -it --rm -v /source/dir:/data compiler:latest compile.sh --arch arm64 /data/my_important_script.py

正常に実行されると、コマンド実行後、スクリプトと同じディレクトリにmy_important_script.cpython-39.soというファイルが生成されます。このファイルの名前は変更しないでください。もし別の名前を使用したい場合は、元のスクリプト名を直接変更する必要があります。これで、リリースするスクリプトから関連する.pyソースコードファイルを削除し、代わりに.soファイルを配置することができます。

注目

もしあなたのコードがFIRERPAモジュール(extension, task)ではなく、単一のファイルである場合、Pythonは`.so`ファイルを直接実行できません。暗号化された`.so`ファイルをインポートして起動するためのエントリーポイントとなる`.py`スクリプトを別途作成する必要があります。モジュールの場合、関連するディレクトリに配置してサービスを再起動するだけで適用されます。