第18章 アプリケーションセキュリティー
18.1. 基本的な概念
18.1.1. 暗号化について
暗号化 とは、数学的なアルゴリズムを適用して機密情報をエンコードすることを言います。暗号化は、データ漏洩、システム停止、およびその他のリスクからインフラストラクチャーを保護するための基盤の 1 つです。
暗号化は、パスワードなどの単純な文字列データに適用できます。また、データ通信ストリームにも適用できます。たとえば、HTTPS プロトコルは、当事者間でデータを転送する前に、すべてのデータを暗号化します。ユーザーが SSH プロトコル (Secure Shell) を使用してあるサーバーから別のサーバーに接続する場合、すべての通信は暗号化された トンネル で送信されます。
18.1.2. セキュリティードメイン
セキュリティードメインは、JBoss EAP 6 セキュリティーサブシステムの一部です。すべてのセキュリティー設定は、管理対象ドメインのドメインコントローラー、またはスタンドアロンサーバーによって一元管理されるようになりました。
セキュリティードメインは、認証、承認、セキュリティーマッピング、および監査の設定で構成されます。これは 、Java 認証および承認サービス (JAAS) の 宣言型セキュリティーを実装します。
認証とは、ユーザーの身元を確認することです。セキュリティー用語では、このユーザーは プリンシパル と呼ばれます。認証と承認は異なりますが、含まれている認証モジュールの多くは承認も処理します。
承認 は、認証されたユーザーが、システムまたは操作の特定のリソースへアクセスできるパーミッションまたは特権を持っているかどうかをサーバーが判断するセキュリティーポリシーです。セキュリティー用語では、ロールとも呼ばれます。
セキュリティーマッピング とは、情報をアプリケーションに渡す前にプリンシパル、ロール、または属性から情報を追加、編集、削除する機能のことです。
監査マネージャーは、ユーザーが プロバイダーモジュール を設定して、セキュリティーイベントの報告方法を制御できるようにします。
セキュリティードメインを使用する場合は、アプリケーション自体から特定のセキュリティー設定をすべて削除できます。これにより、セキュリティーパラメーターを一元的に変更できます。このような設定構造を有効に活用できる一般的な例が、アプリケーションをテスト環境と本番環境の間で移動する処理です。
18.1.3. SSL 暗号化について
Secure Sockets Layer (SSL) は、2 つのシステム間のネットワークトラフィックを暗号化します。2 つのシステム間のトラフィックは、接続の ハンドシェイク
フェーズ中に生成され、これら 2 つのシステムによってのみ認識される双方向キーを使用して暗号化されます。
SSL は、双方向暗号化キーを安全に交換するために、公開キーインフラストラクチャー (PKI) を利用します。これは、キーペア を利用する暗号化の方法です。キーペア は、個別のキーで一致する暗号化キー (公開鍵と秘密鍵) の 2 つで構成されます。公開鍵は第三者と共有でき、データの暗号化に使用されます。秘密鍵は機密に扱われて、公開鍵を使用して暗号化されたデータの復号化に使用されます。
クライアントが安全な接続を要求すると、安全な通信を開始する前にハンドシェイクフェーズが実行されます。SSL ハンドシェイクの間、サーバーはパブリックキーを証明書としてクライアントに渡します。証明書には、サーバーの識別情報 (URL)、サーバーのパブリックキー、および証明書を検証するデジタル署名が含まれます。その後、クライアントは証明書を検証し、証明書が信頼できるかどうかについて決定します。証明書を信頼できる場合、クライアントは SSL 接続の双方向暗号鍵を生成し、サーバーのパブリックキーを使用して暗号化し、サーバーに返送します。サーバーは、その秘密鍵を使用して双方向暗号化鍵を復号化し、この接続を使用した 2 台のマシン間でさらに通信する場合は、この双方向暗号化鍵を使用して暗号化されます。
警告
Red Hat は、影響するすべてのパッケージで TLSv1.1 または TLSv1.2 を利用するために SSL を明示的に無効化することを推奨しています。
18.1.4. 宣言型セキュリティーについて
宣言型セキュリティー は、コンテナーを使用してセキュリティーを管理することでアプリケーションコードからセキュリティーの懸念を分離する方法です。コンテナーはファイルパーミッション、またはユーザー、グループ、およびロールを基に承認システムを提供します。通常この方法は、アプリケーション自体にセキュリティーの責任をすべて与えるプログラムによるセキュリティーよりも優れています。
JBoss EAP 6 は、セキュリティードメインを介して宣言型セキュリティーを提供します。