Since: Apr./21st/2004
本章では、アプリケーションにおけるjava.securityパッケージの使い方を紹介します。
システムのセキュリティ実装は、人的プロシージャーを含めたビジネス全体て取り組む必要があり、ネットワーク・トポロジー、Webコンテナ、EJBコンテナ、アプリケーションなどの各レイヤごとに考えます。
例えば、J2EE仕様のEJB層でのセキュリティモデルは、XML文書である配備記述子に、リソースに対するアクセスを許可するロールを記述しマッ ピングする、宣言によるセキュリティ機構で提供されます。セキュリティポリシを難解な低水準APIから隠蔽し、移植性を高めるものなので、できる限り J2EE が提供するセキュリティモデルに従い、複雑な制御や特異な要件だけ、アプリケーションで実装することになります。
一般的には、認証(Authentication)、承認(Authorization)、監査(Audit)などのセキュリティ要件は、インフラ 層で実装することが望ましく、アプリケーション側で独自に実装することは、考慮漏れ、作業負荷の観点から望ましくありません。しかし、異なるレイヤの実装を組み合わせることでセキュリティレベルが向上することもあり、また、ちょっとしたことの場合はアプリでちょろっと実装するのが便利です。
ここで説明するセキュリティ要件以外に、アプリケーション側で対応する必要がある脆弱性として、クロスサイトスクリプティング、不正なSQL/コマンド実行、URLパラメタ管理などが挙げられ、その対応として、入力妥当性検証、特殊文字の置換(サニタイジング)、hiddenフィールドの廃止、Cookieの適切な寿命などを実装する必要があります。
JavaのAPIでは、パッケージjava.securityの 中に膨大なAPIが用意されており、拡張パッケージやサードベンダー提供のライブラリーを含めると膨大な数になります。コア・パッケージだけでもすべて把 握することは困難です。本章では、全体的な枠組みをアウトラインした後、暗号化、証明書の取り扱いについて紹介します。
スタンドアローンやアプレットの場合は、ここで挙げたようなセキュリティ実装が重要な役割を果たします。J2EEやサードベンダーの製品/ライブラリ/フレームワークに則る場合でも、java.securityの基本的な知識が必要になることがあります。
SDK 1.4以上では、Java Cryptography Extension (JCE)、Java Secure Socket Extension (JSSE)、Java 認証・承認サービス (JAAS)がコアパッケージに追加され、対象暗号方式によるデータの暗号化、ユーザ志向の認証/承認が可能となっています。実際には、IDS, LDAP, Kerberos, SSL/TLS, IPsecなどのレイヤの異なるセキュリティ仕様についても必要となるでしょう。
SEO | [PR] !uO z[y[WJ Cu | ||