Oracle Solaris セキュリティーサービス開発ガイド

GSS-API の紹介

GSS-API を使用すると、プログラマはセキュリティーの点で汎用的なアプリケーションを記述できます。開発者は、特定のプラットフォーム、セキュリティー機構、保護の種類、または転送プロトコル向けにセキュリティー実装をカスタマイズする必要はありません。GSS-API を使用すれば、プログラマはネットワークデータを保護する方法の詳細を知る必要がありません。GSS-API を使用するプログラムは、ネットワークセキュリティーに関する移植性が高くなります。この移植性が、Generic Security Service API の優れた特徴を示します。

GSS-API は、セキュリティーサービスを汎用的な方法で呼び出し元に提供するフレームワークです。次の図に示すように、GSS-API フレームワークは、Kerberos v5 や公開鍵技術など、基盤となるさまざまな機構や技術によって支えられています。

図 4–1 GSS-API の層

アプリケーションとセキュリティー機構の間に、GSS-API とプロトコル層が存在することを示しています。

GSS-API の主な機能は、簡単に言うと次の 2 つです。

  1. GSS–API は、セキュリティー「コンテキスト」を作成し、アプリケーション間でのデータの送受信は、このコンテキスト内で行うことができます。コンテキストは、2 つのアプリケーションが互いに信頼している状態を表します。コンテキストを共有するアプリケーションは、相手がだれであるかを知っており、したがって、そのコンテキストが継続する限り、互いにデータを転送できます。

  2. GSS–API は、「セキュリティーサービス」として知られる 1 種類以上の保護機能を、転送データに対して適用します。セキュリティーサービスについては、「GSS-API のセキュリティーサービス」を参照してください。

さらに、GSS-API は次の機能を実行します。

GSS-API にはさまざまな補助関数や簡易関数が含まれています。

アプリケーションの移植性と GSS-API

GSS-API は、アプリケーションに対して次のような移植性を提供します。

GSS-API のセキュリティーサービス

GSS-API は次の 3 種類のセキュリティーサービスを提供します。

GSS-API で利用可能な機構

GSS-API の現在の実装では、次の機構が利用できます。 Kerberos v5、Diffie-Hellman、および SPNEGO。Kerberos 実装についての詳細は、『Solaris のシステム管理 (セキュリティサービス)』の第 21 章「Kerberos サービスについて」を参照してください。Kerberos v5 は、GSS-API 対応プログラムが動作するすべてのシステム上で、インストールおよび実行される必要があります。

リモートプロシージャー呼び出しと GSS-API

RPC (Remote Procedure Call) プロトコルをネットワークアプリケーションに使用するプログラマは、RPCSEC_GSS を使用してセキュリティーを提供できます。RPCSEC_GSS は GSS-API 上にある別の層です。RPCSEC_GSS は GSS-API のすべての機能を RPC 用にカスタマイズした形式で提供します。実際、RPCSC_GSS は GSS-API の多くの側面をプログラマから隠蔽する役割を果たしており、その結果、特に高い操作性と移植性を備えた RPC セキュリティーが実現されています。RPCSEC_GSS についての詳細は、『ONC+ 開発ガイド』「RPCSEC_GSS を使用した認証」を参照してください。

次の図は、RPCSEC_GSS 層がアプリケーションと GSS-API の間に位置している様子を示したものです。

図 4–2 RPCSEC_GSS と GSS-API

リモートプロシージャー呼び出しのセキュリティー機能を提供する RPCSEC_GSS 層を示しています。

GSS-API の制限

GSS-API は、データ保護作業を単純化しますが、GSS-API の一般的な性質に合致しないいくつかの作業をサポートしていません。GSS-API が実行「しない」作業は、次のとおりです。

GSS-API の言語バインディング

このマニュアルでは現在、GSS-API の C 言語バインディング、つまり関数とデータ型だけに言及しています。Java バインディング版の GSS-API が利用可能になりました。Java GSS-API には、RFC 2853 で規定された Generic Security Services Application Program Interface (GSS-API) に対する Java バインディングが含まれています。

GSS-API に関する詳細情報の入手先

GSS-API についての詳細は、次の 2 つの文書を参照してください。