GSS-API のプログラミング

GSS-API の紹介

Generic Security Standard Application Programming Interface (GSS-API) は、ピアとなるアプリケーションに送信されるデータを保護する方法をアプリケーションに提供します。通常、ピアとなるアプリケーションとは、同じマシン上のクライアントから別のマシン上のサーバーまで、様々な可能性があります。名前が示すとおり、GSS-API を使用すると、プログラマはセキュリティの点で汎用的なアプリケーションを作成できます。つまり、特定のプラットフォーム、セキュリティ機構、保護の種類、または転送プロトコル向けに特定のセキュリティ実装を施す必要はありません。GSS-API を実装したアプリケーションはセキュリティを制御できます。しかし、GSS-API を使用するプログラマは、ネットワークデータを保護する方法についての詳細を知らなくてもプログラムの作成を行うことができます。したがって、GSS-API を使用するプログラムはネットワークセキュリティに関して移植性がより高くなります。この移植性が Generic Security Standard API の最も優れた特徴です。

GSS-API 自身はセキュリティサービスを実際に提供しません。GSS-API はセキュリティサービスを汎用的な方法で呼び出し側に提供するためのフレームワークであり、実際の機構やテクノロジなど (Kerberos v5 や公開鍵テクノロジなど) を幅広くサポートできます。図 1–1 を参照してください 。

図 1–1 GSS-API 層

Graphic

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

  1. セキュリティコンテキストを作成し、アプリケーション間でデータを受け渡します。コンテキストとは、2 つのアプリケーション間における一種の「信用状態」であると考えられます。コンテキストを共有するアプリケーションは誰が相手であるかを知っており、したがって、そのコンテキストが継続する限り、アプリケーション間でデータを転送できます。

  2. 1 つまたは複数の種類の保護 (セキュリティサービス) を転送されるデータに適用します。セキュリティサービスについては、セキュリティサービスを参照してください。

もちろん、GSS-API は上記よりももっと複雑です。GSS-API の他の機能には、データ変換、エラー検査、ユーザー特権の委託、情報の表示、および ID の比較などがあります。GSS-API にはさまざまなサポート機能や便利な機能があります。

アプリケーションの移植性

上記のとおり、GSS-API は複数の種類の移植性をアプリケーションに提供します。

セキュリティサービス

GSS-API が提供する基本的なセキュリティは認証です。認証とは ID の検証のことです。あるユーザーが認証されるということは、そのユーザーが自分が宣言したユーザーとして認識されたことを意味します。

実際の機構がサポートする場合、GSS-API は認証以外にも次の 2 種類のセキュリティサービスを提供します。

GSS-API で使用できる機構

GSS-API の現在の実装では、Kerberos v5 セキュリティ機構だけに適用されます。この中には、Sun が変更して作成した Solaris Enterprise Authentication Mechanism (SEAM) も含まれます。詳細は、『Solaris のシステム管理 (第 2 巻)』の「SEAM の概要」を参照してください。したがって、GSS-API を使用するプログラムが動作しているシステムには、Kerberos v5 または SEAM がインストールされている必要があります。

RPCSEC_GSS 層

RPC (Remote Procedure Call) プロトコルをネットワークアプリケーションに使用するプログラマは、RPCSEC_GSS を使用してセキュリティを提供できます。RPCSEC_GSS は GSS-API 上にある別の層であり、GSS-API のすべての機能を RPC 向けの方法で提供します。事実、RPCSEC_GSS は GSS-API の多くの側面をプログラマが意識する必要がないようにするため、特に、RPC セキュリティのアクセス性と移植性が向上します。RPCSEC_GSS についての詳細は、『ONC+ 開発ガイド』を参照してください。

図 1–2 RPCSEC_GSS と GSS-API

Graphic

GSS-API が行わないこと

GSS-API はデータの保護を簡単にしますが、汎用性という性質を最大限にするために、次のことは行いません。

言語のバインディング

このマニュアルでは現在、GSS-API の C 言語バインディング (関数とデータ型) だけをカバーしています。将来的には、GSS-API の Java バインディングも使用できるようになる予定です。

参照箇所

GSS-API については、次の 2 つのマニュアルでも説明されています。この 2 つの文書はアプリケーション開発者向けというよりも GSS-API 実装者向けです。『Generic Security Service Application Program Interface』 (ftp://ftp.isi.edu/in-notes/rfc2743.txt) は、GSS-API の概念的な概要を示し、『Generic Security Service API Version 2: C-Bindings』 (ftp://ftp.isi.edu/in-notes/rfc2744.txt) は C 言語ベースの GSS-API の特徴について説明します。