CLOSE
PowerServerプロジェクト

こんにちは、サポート部の Yama-chan です。

前回のブログでは PowerServer プロジェクト設定の「アプリケーション」ページの設定について、解説しました。今回のブログでは「セキュリティ」ページの設定内容について、解説していきたいと思います。

はじめに

クラウドネイティブなアーキテクチャを採用する PowerServer を利用して、PowerBuilder アプリケーションを「インストール可能なクラウドディスクトップアプリ」としてインターネット越しにデプロイする際、避けて通れないのがセキュリティ対策です。ローカルネットワーク内での運用でも、不正アクセスの防止や機密データの保護、そしてアプリケーション自体の改ざん検知など、より多角的なアプローチによる強固な保護が求められます。

安全で信頼性の高いクラウドディスクトップアプリをユーザーに提供するために、この「セキュリティ」ページで具体的にどのような設定が行えるのか、各項目の役割と設定方法について詳しく解説していきます。

セキュリティ (Security) ページ

このページでは、アプリケーションの認証および証明書の署名についての設定となります。

PBD の生成

PowerBuilderの動的ライブラリ (PBDなど) からコンパイルされる際に、生成されるオブジェクトファイル (Pコード) を暗号化するかどうかを選択する項目です。

クラウドアプリは、クライアント側にファイルがダウンロードされて実行されます。このチェックを入れることで、ダウンロードされたオブジェクトファイルの中身が簡単に解析・リバースエンジニアリングされるのを防ぎ、アプリケーション内のビジネスロジックや知的財産を保護することができます。本番環境へのデプロイ時は有効化することが推奨されます。

アプリの検証

ここでは、アプリケーションを実行する前に、アプリケーションの整合性のチェックを行うかどうかを選択する項目です。検証を行う場合はチェックを入れてください。

チェックを入れると、オブジェクトファイルがロードされる直前に、すべてのオブジェクトファイルの「ハッシュ検証」が行われます。
もし悪意のある第三者によってファイルが改ざんされたり、ダウンロード中にファイルが破損したりしていた場合、この検証によって不正なファイルの実行を未然に防ぐことができます。クライアント環境での安全な実行を保証する重要な機能です。

認証テンプレート

データベースへアクセスする PowerServer Web API を、不正アクセスから保護するための認証の仕組み (テンプレート) を選択します。

クラウド環境では Web API がネットワーク (またはインターネット) 上に公開されるため、認証なしでAPIを呼び出せる状態は非常に危険です。PowerServer では、以下の強力な認証テンプレートが組み込みで用意されており、リストから選択するだけで C# ソリューションに認証ロジックのベースが自動で組み込まれます。

認証サービスを使用しない 開発時のテスト用途などに使用します (本番環境では非推奨) 。
組み込み JWT サーバーを使用する JSON Web トークン (JWT) を発行する組み込みの認証サーバーを利用します。最も標準的で推奨される方式です。
組み込み AWS Cognito サーバーを使用する Amazon Cognito のユーザープールと連携し、高度なクラウド認証を利用します。
外部 Azure Active Directory サービスを使用する Azure AD または Azure AD B2C を使用して認証を行います。
外部認証サービスを使用する Okta などの OAuth フローや他のIDプロバイダーをサポートするための拡張用テンプレートです。

署名 (デジタル署名)

署名の設定では、アプリケーションの実行可能ファイル(例: appname.exe)にデジタル署名を行うかどうかを選択し、その詳細を設定します。PFXファイルまたはトークンを使用してファイルに署名することができ、以下の2つの主なオプションが用意されています。

Windows SDK の SignTool ユーティリティを使用

クライアントにダウンロードされるアプリケーションの実行可能ファイル (.exe) に対して、開発元が公式に作成したものであることを証明するデジタル署名を行うための設定です。

Microsoft の SignTool ユーティリティを使用して署名を行うオプションです。現在のマシンに SignTool がインストールされている必要があります。また、証明書の種類によって設定項目が異なりますので、注意が必要です。

証明書の種類が「PFX ファイル」の場合の設定項目

・ SignToolのパス
・ 証明書のパス
・ 証明書のパスワード
・ 署名アルゴリズム
・ タイムスタンプサーバーのURL

証明書の種類が「Token-based」の場合の設定項目

・ SignToolのパス
・ 証明書のサムプリント(証明書の一意の識別子。マシンに複数の証明書がある場合のみ指定し、1つだけの場合は空欄で構いません)
・ 署名アルゴリズム
・ タイムスタンプサーバーのURL

独自の署名スクリプトを使用する

あらかじめ作成しておいたバッチファイル (.cmd) などの独自のスクリプトを呼び出して署名を行います。HSM (ハードウェア セキュリティ モジュール) などの専用トークンを使用して署名する場合は、このスクリプト方式のみが使用可能です。
実行可能ファイル名や証明書のパスワードなどを「動的パラメータ」としてスクリプトに渡すこともでき、柔軟で高度な署名プロセスを構築できます。

マニフェスト情報

アプリケーションの実行権限などを定義する「マニフェストファイル」の設定を行います。

マニフェストファイルを生成するかどうか (外部ファイルとして作成するか、実行可能ファイルに埋め込むか) を選択し、アプリケーションの実行レベルを設定します。
たとえば、アプリケーションの実行に常に管理者権限が必要な場合は、ここでマニフェストの実行レベルを requireAdministrator 等に適切に設定することで、起動時に Windows の UAC (ユーザーアカウント制御) プロンプトを正しく表示させることができます。

まとめ

「セキュリティ」ページは、クラウド化されたアプリケーションとデータを脅威から守るための防波堤です。「ファイルの暗号化」と「整合性検証」でクライアント側の改ざんを防ぎ、「デジタル署名」でユーザーに安心感を与え、「認証テンプレート」でサーバー (Web API) への不正アクセスを強力にブロックする。これらを適切に設定することで、堅牢なクラウドネイティブアプリケーションを構築することができます。次回のブログでは、「データベース」ページの設定について、解説します。

以上、Yama-Chan でした。


PowerServer プロジェクト設定を徹底解説 シリーズ

x instagram facebook youtube