OutSystems Platformのセキュリティ機能概要

OutSystems PlatformにはアプリケーションITチーム、およびエンドユーザー向けの広範なセキュリティ機能が組み込まれています。OutSystems Platformで作成されたすべてのアプリケーションは、ライフサイクルをとおして安全に保護されます。

アプリケーションの脆弱性の防止と検知

OutSystems Platformで構築されるすべてのアプリケーションには、数多くの脆弱性防止策が取られています。それらは、アプリケーションの開発およびデプロイメントにおけるさまざまな段階で適用されます。

アプリケーションの設計

開発者はアプリケーションの設計段階で、コードジェネレーターおよびデプロイメントサービスにおいてアプリケーションへのアクセスが以下のように実行されるようにコンフィギュレーション属性をセットします。

  • データの暗号化が必要な場合は、ページおよびWebサービスごとにHTTP/SSLの暗号化を使用する。
  • Windows Integrated AuthenticationがOSの認証情報を用いて特定のページやアプリケーションへ自動的にログインする(OutSystems Platformのオンプレミス環境で利用可能)。
  • Active Directory/LDAP認証により、全エンドユーザーのログイン情報を、1つのActive Directory/LDAPサーバーで一元管理する。
  • ロールベースのアクセス制御を設け、特定のアプリケーションレベルのロールに基づいて特定のページへのアクセスを制限する。
  • 特定のIPアドレス範囲へのアクセス制限が必要な場合、ネットワークベースのセキュリティを使用する。

開発者は、「ロール」と呼ばれる視覚的なアクセス制御ビルディングブロックを使うことで、アプリケーションレベルでのアクセス権限を定義したり、アクセス権限によって使える機能を設定したりすることができます。たとえば、この機能を用いることで、特定のデータベーステーブルの変更を伴う全てのアプリケーションページへのアクセスをまとめることができます。

さらに、アクセス制御ロジックを作成して、特定のリソースへのアクセス権限がないユーザーに対するフロー制御を実装することも可能です。これらのリクエストにより発生する例外は、エラーメッセージを生成するか、ユーザーをアプリケーションの別の領域に誘導することにより処理できます。

アプリケーションの検証

アプリケーションをコードジェネレーターやデプロイサービスへ移す前に、次のような数多くのセキュリティチェックを含む検証プロセスを行えます。

  •  クエリを別のデータベースに定義するとき、データ分離の違反の可能性がある旨の警告が出る
  • 開発者のアクセス制御検証を行い、各開発者がアプリケーションのデプロイや生成を行う権限があるか、外部コンポーネント、API、データモデルを使用できるかをチェックする

次の画像は、OutSystems Platformのグラフィカルユーテリティを使用して、どのようにユーザープロファイルやアクセス権限を登録し、認証・暗号化を有効化できるかの例を示しています。

 

コードの生成、最適化、およびコンパイル

OutSystems PlatformはC#およびJavaのコードを生成、最適化、コンパイルします。その際にはセキュアなコードパターンが適用され、ベースとなるフレームワークの強化が行われます。こうした機能には、以下が含まれます。

  • 盗聴やセッションのハイジャックを防止するためのHTTPSのサポート。
  • Javaおよび.NETフレームワークから提供される強力なセッションID検証メカニズムにより、複数のデバイスから既存のセッションへ侵入することを防ぐ。
  • クロスサイトスクリプティング防止ため、開発者がHTMLを直書きした場合には、生成されたHTMLの自動処理機能およびビルトイン機能により、HTMLを無害化する。
  • データベース接続時に暗号化パスワードのオプションが選択でき、データベースアクセスの作成や管理がセキュアに行える。
  • SQLのパラメータ化およびビルトイン機能により、開発者がクエリに含めた文字列を無害化し、SQLインジェクションを防ぐ。
  • コンパイル前のコードへの遅延バインディングや実行時アクセスを禁止し、C#およびJavaコードの挿入を防ぐ。
  • アプリケーションとデータベースのペア毎に分離された専用データベース接続をまとめ、クロスアプリケーションやクロスデータベースのアクセスを防ぐ。
  • ローレベルプロセスやスレッド構成が分からないよう、コード生成パターンを用いて完全なランタイム分離や隠蔽を実現。
  • 生成されるコードでの(暗号化、認証および認可を含む)完全な例外処理を実現し、(処理情報が開発中に作成されなかった場合でも)後々の監査のためにログ情報を保管することで、特定の例外パターンやブラウザーに送られるレスポンス情報におけるエラーコードなどを悪用されることを防ぐ。

アプリケーションのデプロイ

OutSystems Platformのデプロイメントエンジンは、アプリケーション設計とセキュリティのベストプラクティスに従って、MicrosoftのInternet Information Services(IIS)セキュリティ設定を用いています。それにより、以下を実現します。

  • SSL証明書を、サイト毎、仮想ディレクトリ毎、またはページレベル毎に構築できる。
  • クライアント側のSSL証明書管理や設定が行えるため、選択したクライアントのより強力な認証が可能に。
  • Windows Authenticationを、サイト毎、または仮想ディレクトリ毎に構築できる。
  • 仮想ディレクトリに置かれたファイルの、セキュリティおよびアクセス制御のデフォルト設定を上書きすることで、IISの持つ「デフォルト」の脆弱性を防ぐ。
  • (OutSystems Platformのオンプレミス環境において)アプリケーションを異なるネットワークゾーンの複数のファームにデプロイする場合、一元管理された設定に基づき、イントラネット機能のバイナリが、インターネットやエクストラネットのサーバーにインストールされないようにする。
  • OSのクレデンシャル情報を使い、アプリケーションプロセスを実行できるオプション。

データベースネットワークのデータ暗号化

OutSystems Platformは、OracleのRC4アルゴリズムを用いたネットワークデータ暗号化と完全に動作させることができます。このアルゴリズムは、256ビットまでの高速データ暗号化の国際基準となっています。

生成コードの脆弱性スキャン

生成するアプリケーションの高いセキュリティ水準を系統的に確保するため、OutSystemsでは、各製品リリースにおける自動化された品質保証プロセスの一環として、セキュリティ評価ツールを採用しています。リグレッションテスト中、コードの脆弱性スキャンが自動的に行われるよう、HP Fortify Static Code Analyzerとの連携が自動的にセットアップされています。こうしたテストはリリース受入れの高い水準によってサポートされ、危険性・脆弱性が高いとレポートされたコードを修正します。これにより、生成されるコードが一貫してセキュアな状態であるようにします。

生成されるコードに新しく脆弱性が見つかるたび、アプリケーションを修正するためのセキュリティパッチが発行され、すべてのお客様のすべてのアプリケーションを永続的に修正します。

ITセキュリティ管理と監査

OutSystems Platformは、全てのアプリケーションリソースに対するアクセス制御管理機能を備えており、特定のリソースに対し、アクセス権利を柔軟に与えられるようになっています。これにより、さまざまなプロファイルを持つ多くの開発者を抱えるチームであっても管理しやすくなります。また、プラットフォームとの連携やアセンブリ、デプロイおよびサービス変更が開発、品質保証、本番の複数の環境に渡っても、明確にアクセスを分けることができます。さらに、システム監査に要求される、ITレベルのSOX/ITIL制御やデプロイゾーンへの制御が完全に行えます。

ロールベースのリソースアクセス制御

ITチームの責任範囲は、ロールに基づいて定義されます。OutSystems Platformでは、各ロールがどのアプリケーションにアクセスできるか、またアプリケーションの作成や変更が可能であるかを設定できます。組み込みのアクセスレベルには、どのリソースがあるか、というListの閲覧のみの設定から、ITユーザーがリソースの変更や管理およびデプロイを完全に行えるFull Controlまでが含まれています。

次の画像は、ITチームの各ロールに与えられたアクセスレベルを確認する方法の例を示しています。

各組み込みのアクセスレベルは、ITユーザーの持つロールが使用できる開発および管理機能を定義する際、段階的に別のアクセスレベルの上に構築されます。

ITプロセス監査

開発者やアプリケーションマネージャー、システム管理者によって行われるアクティビティは、全てシステムのログとして管理され、将来的な監査にも使えるようになっています。追跡できるイベントには、以下が含まれます。

  • アプリケーションやコンポーネントの新バージョンを保存する
  • アプリケーションやコンポーネントを削除する
  • 新しいバージョンをデプロイする
  • ユーザー設定を修正する
  • システムへログインする

さらに、システム監査やOutSystems Platformのサブシステムのバージョンコントロールにより、アプリケーションの変更が、いつ、どのユーザーによって行われたかが識別できるようになります。また、OutSystemsのService Studioの視覚的な変更&マージツールを使用すれば、具体的な変更の内容まで調査できます。

IT実行時における監査

OutSystems Platformは、Webサービスやカスタマイズされた連携ロジックを使った外部システムへのアクセスを全てログ記録しているだけでなく、OutSystems Platformのアプリケーションへ向けられたWebサービスリクエストの記録もログとして保存しています。誰がそのリクエストをしたか、リクエストのターゲットは何か、使用されたメソッドは何か、リクエストにどれくらい時間がかかったか、リクエストの正確な時間はいつか、といった情報を、全て記録に残すことができます。セキュリティ上の問題が起こった場合も、この記録から効果的かつ効率的に、原因を探ることが可能です。

次の画像は、外部システムへのすべての呼び出しの詳細なログの例を示しています。



ネットワークゾーン管理

OutSystems Platformを使うことで、インターネットやイントラネット、エクストラネットなど、多様に構成されたネットワークにおいて、どのようにフロントエンドサーバーが分散させるかを設定することができます。また、どのアプリケーションをフロントエンドサーバーのどのクラスタにデプロイするかも定義できます。たとえば、内部アプリケーションは内部ネットワークゾーンにのみ実行でき、ウェブサイトはDMZで実行するよう設定する、などの例が挙げられます。

次の図は、あるネットワークゾーンに関連付けられたフロントエンドサーバーとeSpaceの詳細な設定の例を示しています。



エンドユーザーセキュリティ管理と監査

ユーザーがアプリケーション利用のために登録されると、適切なアクセス制御を設け、権限のあるユーザーのみが特定の機能を使えるように設定する必要が出てきます。

ロールベースのアクセス制御

ユーザーに対しては、1つかそれ以上のロールへのアクセス権限を付与することができ、プロビジョニングも行えます。ユーザー管理はバックオフィスから行えますが、APIを用いることでアプリケーションからも行うことが可能です。また、アプリケーションの管理者はバックオフィスからメタデータを使い、特定のユーザーロールを作成し、設定することができます。ユーザーロールの定義は完全に動的であり、アプリケーションの開発フェーズとは独立しています。

シングルサインオン

OutSystems Platformのシングルサインオン機能を使うことで、選択したすべてのアプリケーションへのログインを、一度で行えるようにできます。これにより、ユーザーは複数のアプリケーションであっても、追加のログインを行う必要がなくなります。

次の図は、多数のeSpace間で、エンドユーザーのログインを統一させる方法の例を示しています。



エンドユーザーアクセス監査

アプリケーション画面へのアクセスは、デフォルトで全て詳細にOutSystems Platformに記録されます。こうしたログ記録には、アクセスされたコンポーネントや画面、どのユーザーがアクセスしたか、いつそのアクセスが発生したか、またどのノードが使用されたか、といった情報が含まれます。これにより、セキュリティ上の問題が起こった場合も、この記録から効果的に、原因を探ることができます。