セキュリティインフラに関する一般的な考慮事項
オペレーションシステム
OSレベルの強化と、オペレーションシステムのセキュアな構成は、もちろん不可欠です。使用しているオペレーションシステムに基づき、独自のシステムセキュリティの検討や実装をしてください。強化には、デフォルトの拒否ポリシーを使用した、サーバ上のローカルファイアウォールを有効にすることが含まれます。Center for Internet Securityは、OS強化のための優れたベンチマークを提供します。
RDBMS
最小権限の原則に基づきデータベースアクセスを制御することで、アカウントが侵害された場合の潜在的なリスクを分離できます。これには、個別のデータベースごとに読み取り専用権限を作成することや、権限のあるユーザーの詳細情報を使用して、不要なデータベースに接続しないことが含まれます。
データベース構成
Yellowfin 構成データベースをホストするサーバを定義します。Yellowfin アプリケーションには、構成データベースに対する完全な権限を持つユーザー詳細情報が必要です。データベース上の他のコンテンツとの意図しない相互作用のリスクを軽減するために(データベースの削除や追加、グローバルな変更の実施など)、Yellowfin 構成データベースにアクセスする際に使用するユーザー詳細情報は、このデータベースへのアクセスのみに制限する必要があります。Yellowfinでは、次のユーザー詳細情報に必要な最小限の権限を使用することを推奨します。
- DBの作成・更新
- テーブルの作成・更新・挿入
- インデックスの作成・更新・削除
- ストアドプロシージャの作成・更新・削除
- 関数の作成・更新・削除
これらに加えて、一部のデータベースでは、シーケンス権限も必要です(Oracle、Postgres)。
また、既存のDBにインストールする場合は、DB作成権限(CREATE DB権限)は必要ありません。
このデータベースへの接続には、グローバルシステム管理者、またはスーパーユーザーの詳細情報を使用しないでください。
インストーラーの実行
Yellowfinのインストーラーは、任意のディレクトリにアプリケーションフォルダー構造を作成し、構成データベースの場所を指定するように求めます。このインストールプロセスでは、アプリケーションサーバにポートを割り当てたり、アプリケーションに専用のメモリを割り当てることができます。Windowsにインストールする場合は、Yellowfinをサービスとしてインストールすることもできます。
システムパフォーマンスについて、より詳細な情報は、キャパシティ要件の見積ページを参照してください。
Linuxの考慮事項
インストール
Linuxにインストールする場合は、アプリケーション専用のサービスアカウントを作成することを推奨します。これにより、アプリケーションがサーバ上の限られたコンテキストで実行されるようになります。これはサービスユーザーのため、ログインはしないでください。
sudo useradd -s /bin/false yellowfin
対象となるYellowfin ディレクトリを作成し、新しいディレクトリに適切なアクセス権を割り当てます。
sudo mkdir /opt/Yellowfin && sudo chown yellowfin /opt/Yellowfin
ここから、Yellowfin ユーザーとしてプロンプトにsudoを入力し、インストーラーを実行します。
sudo -u yellowfin bash java -jar yellowfinInstaller.jar
必要に応じて、再帰的なchownコマンドを発行することで、インストール後に所有権を付与することもできます。
サービス
Yellowfin インストーラーには、インストール時にLinuxサービスファイルを作成するためのネイティブオプションはありません。これは、システムタイプに応じて作成できます。Yellowfin コミュニティでは、サンプルのサービスファイルを提供しています。
ポートのリダイレクト
特権アカウントでサービスを実行する必要性をなくすために、ポートのリダイレクトを使用して、標準HTTP/HTTPSポートを介して、アプリケーションにサービスを提供することを推奨します。1024より小さいポートにバインドするには、管理者権限またはroot権限が必要です。Linuxではiptablesを使用して、これを実行できます。
iptables -A PREROUTING -p tcp –dport 8080 -j REDIRECT –to-ports 80 iptables -A PREROUTING -p tcp –dport 8443 -j REDIRECT –to-ports 80
Windowsはnetshコマンドを使用して、これを実行します。
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=$IP connectport=80 connectaddress=$ip
RDBMS接続の暗号化
SSL/TLS暗号化はJDBCレベルで処理され、構成データベースとデータソースの両方のレベルで有効にして、より詳細に制御することができます。これは通常、JDBC URLのパラメーターを使用して有効にします。使用しているRDBMS/JDBCタイプに特定の情報については、サードパーティのドキュメントを参照してください。
データソース接続のためのSSL設定の記事で、例を確認することができます。