セキュリティ

セキュリティに関しては、おもに次の3つの考慮事項があります。

Oracle Application Expressインスタンスの保護

インスタンス管理者は、インスタンス全体に関わるさまざまなオプションを設定し、開発中のアプリケーションとデプロイ済みのアプリケーションの両方に適切なレベルのセキュリティが適用されるようにする責任があります。 Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドのセキュリティに関する管理者のベスト・プラクティスの理解を参照してください。 環境のセキュリティをさらに強化するために、インスタンス管理者はInstance Administrationページを使用するか適切なAPIを実行して、次の設定を確認する必要があります。

Feature Configuration
Enable SQL and PL/SQL Access In Websheets - Webシートのユーザーが、基盤となるデータベース・オブジェクトにSQLタグを使用してアクセスしたり、SQLレポートやPL/SQLセクションを作成したりできないようにする場合は、このオプションを無効化します。
Enable RESTful Services - APEXリスナーRelease 2.0以上と連携してSQLおよびPL/SQLにマッピングされるRESTful Webサービスを開発者が作成および編集できないようにする場合は、このオプションを無効化します。

Security
Disable Workspace Login - "Runtime Only"でインストールしなかったテスト環境および本番環境では「Yes」に設定します。
Allow Public File Upload - パブリック(未認証)ユーザーがファイルをアップロードできないようにする場合は、「No」に設定します。
Restrict Access by IP Address - 許可するIPアドレスの範囲をカンマ区切りのリストで入力します。
Insutance Proxy - すべてのアウトバウンド・トラフィックに使用するプロキシ・サーバーのアドレスを指定します。
Require HTTPS/Outbound HTTPS - サーバーのHTTPSが有効化されている場合は両方とも「Yes」にし、アプリケーション・ビルダー内の認証済みページでは必ずHTTPSを使用してネットワーク通信を暗号化することを義務付けます。
Allow RESTful Access - 開発者がレポート領域をRESTfulサービスとして公開できないようにする場合は、このオプションを無効化します。
Session Timeout - 一定の時間を経過したらユーザーの再認証が必要になるように、セッションの長さとアイドル時間の最大値を必要に応じて管理します。これらの設定はアプリケーションレベルの設定で上書きできます。
General Login Control - ログイン・ボットを防止するために、ログインが失敗したあとの待機時間を設定し、インバウンド・プロキシ・サーバーを指定します。
Workspace Password Policy - 各種パラメータを設定し、Oracle Application Expressのエンドユーザーも含めたすべてのワークスペース・ユーザーに必要なパスワードの強度を調整します。

Instance Settings
Self Service/Email Provisioning - 開発者から新しいワークスペースを要求された場合に自動化する程度を指定します。
Storage - 既存のスキーマをワークスペースで活用できるかどうかを定義し、暗号化する新しいスキーマ用の表領域を指定します。
Email - 電子メールのSMTP設定を定義し、Oracle Database 11g Release 2以上へのセキュア接続に"Use SSL/TLS"を使用するように設定します。
Wallet - ウォレットを定義します。ウォレットとは、認証と署名の資格証明が格納されるパスワード保護されたコンテナで、あらゆるHTTPSリクエストに使用されます。

Workspace Purge Settings
新しいサービスや制限されたデータベース・リソースについての要求がたびたびある大規模なインストールの場合は、インスタンス管理者が消去設定を定義することができ、指定した期間中ワークスペースがアクティブでなかった場合は、ワークスペース管理者に電子メールが自動的に送信されます。 電子メールに対してワークスペース管理者がワークスペースの保存を希望すると応答しなければ、ワークスペースは消去されます。 ワークスペースを消去すると古いアプリケーションが削除され、古いアプリケーションに使用されていた領域が解放されます。

Manage Workspaces
Manage Workspace to Schema Assignment - ワークスペースとスキーマの間に多対多の対応付けを適切に定義します。
Manage Developers and Users - 特定のユーザーがアクセスできるスキーマを定義し、そのユーザーがワークスペース管理者、開発者、エンドユーザーのいずれであるかを定義します。開発者が特定のアプリケーション・ビルダー・コンポーネントにアクセスするのを制限したり、特定のアカウントをロックしたりすることもできます。
Manage Component Availability - アプリケーション・ビルダー、SQLワークショップ、およびPL/SQL編集へのアクセスを変更し、開発者のワークスペースへのアクセスを制限します。たとえば、ユーザーにデータベース・コンポーネントの構築やSQL文の実行を許可する一方で、アプリケーションの構築を許可しない場合は、特定のスキーマへの権限を備えたワークスペースを定義した上で、この機能を使用してユーザーを開発者として構成することもできます。

ワークスペースのセキュリティ設定

ワークスペース管理者は、ワークスペースに関わるさまざまなオプションを設定し、ワークスペース内で適切なセキュリティ・レベルを確保する責任があります。 Administration→Manage Service→Set Workspace Preferencesの順に進むと、「Account Login Control」を設定できます。 これはOracle Application Expressのエンドユーザーのみを対象としたもので、ログイン失敗の最大回数とアカウント有効期限を設定できます。 また、必要に応じてアプリケーション・ビルダー・コンポーネントへのアクセスを無効化したり、RESTfulサービスを無効化したりすることもできます。

アプリケーションの保護

アプリケーション開発者はセキュアなアプリケーションの開発に責任を持ちます。 Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドのアプリケーション・セキュリティの管理を参照してください。 アプリケーション用のプロキシ・サーバーはApplication Propertiesページで定義できます。インスタンス値が設定されている場合は、その値が上書きされます。 セッションの長さとアイドル時間の最大値のインスタンス設定も上書きでき、リダイレクト先のURLも指定できます。

適切なユーザーのみがアプリケーションにログインできるようにするには、適切な認証スキーム(ユーザーのID証明)をアプリケーションに定義することが不可欠です。 認証を必要としないページ(パブリック・ページとも言う)は開発者が決定する必要があります。 そうしたページには機密情報を決して含めないようにする必要があります。 さまざまなアプリケーション・コンポーネントへのアクセス権を容易に定義できるように、認可のスキームを定義する必要もあります。 機密情報を含むページ、およびページへのアクセスに使用するナビゲーション・コントロール(タブ、ボタン、リンクなど)では、適切な認可を使用することが極めて重要です。 認可されたユーザーのみが特定のデータを保守できるようにするために、プロセス、検証および計算に対して認可を使用することもできます。

使用できるおもなセキュリティ対策の1つに、URLの改ざんを制限するセッション・ステート保護(SSP)があります。 この保護はページ、ページ項目およびアプリケーション項目に定義できます。 URLの改ざんを防ぐには、考え得るすべてのコンポーネントをSSPで構成する必要があります。 例外となるのは、値のカスケード・リストの親として使用される項目のようにJavaScriptとともに使用されるページ項目、およびパブリック・ページです。 組込みウィザードを使用してセッション・ステート保護を設定したら、新たに定義するページまたは項目には手動で保護を設定する必要がありますので、ご注意ください。

開発者にとっては、項目(特にパスワード項目)のセキュリティ強化について理解しておくことも重要です。 パスワード項目はセッション・ステートに保存したり暗号化したりせず、セッション・ステート保護を制限付きにする必要があります。 フォーム項目を使用できる場所では、HTMLがエスケープされるようにする必要があります。 また、クロスサイト・スクリプティングや他のインジェクション攻撃を制限するために、テキスト項目に入力できる文字を制限することもお勧めします。 レポート領域および動的出力もエスケープし、攻撃されないようにする必要があります。

ベスト・プラクティスに従い、アプリケーションの開発が完了したら、(Utilitiesの下にある)Advisorを実行します。 このユーティリティでは、セキュリティ上の脆弱性を露呈する状態があるかどうかについてさまざまなチェックが実行されます。 また、アプリケーションの脆弱性を広範囲にわたって分析するサード・パーティ製のツールもあります。 現時点で使用できるツールはAPEXSec Security ToolとeSERTの2つです。