EN JA
RPC_GSS_SECCREATE(3)
RPC_GSS_SECCREATE(3) FreeBSD Library Functions Manual RPC_GSS_SECCREATE(3)

名称

RPCSEC_GSSGSS-API ベースの RPC のための認証

ライブラリ

RPC GSS-API Authentication Library (librpcsec_gss, -lrpcsec_gss)

書式

#include < rpc/rpcsec_gss.h>

解説

RPCSEC_GSS は、RPC プロトコルのためのセキュリティメカニズムです。それは、クライアントとサーバの間のセキュリティコンテキストを確立するために Generic Security Service API (GSS-API)、とクライアントとサーバの間のすべてのその後の通信が適切に認証されることを保証するために使用します。オプションで、接続するために特別な防護を適用することができます。整合性サービスは、ピア (相手側) によって送信されるすべてのデータが、変更なしで受信されることを保証するためにチェックサムを使用します。プライバシサービスは、第三者が、接続のためにデータにアクセスできないことを保証するために暗号化を使用します。

このシステムを使用するためには、アプリケーションは、最初に、セキュリティコンテキストを確立するために rpc_gss_seccreate() を使用しなければなりません。

データ構造

RPCSEC_GSS によって使用されるデータ構造は、下記に通りです。
rpc_gss_service_t
このタイプは、 rpc_gss_seccreate() に必要であるセキュリティサービスのタイプを定義します。

typedef enum { 
 rpc_gss_svc_default = 0, 
 rpc_gss_svc_none = 1, 
 rpc_gss_svc_integrity = 2, 
 rpc_gss_svc_privacy = 3 
} rpc_gss_service_t;
rpc_gss_options_ret_t
この構造体は、セキュリティコンテキストを作成している間に使用される様々なオプション値を含んでいます。

typedef struct { 
 int  req_flags; /* GSS 要求ビット */ 
 int  time_req; /* 要求された存続期間 */ 
 gss_cred_id_t my_cred; /* GSS 資格証明 */ 
 gss_channel_bindings_t input_channel_bindings; 
} rpc_gss_options_req_t;
rpc_gss_options_ret_t
作成されたセキュリティコンテキストの様々な詳細は、この構造体を使用して返されます。

typedef struct { 
 int  major_status; 
 int  minor_status; 
 u_int  rpcsec_version; 
 int  ret_flags; 
 int  time_req; 
 gss_ctx_id_t gss_context; 
 char  actual_mechanism[MAX_GSS_MECH]; 
} rpc_gss_options_ret_t;
rpc_gss_principal_t
このタイプは、GSS-API のエクスポートされた名前形式 (その他の詳細については、 gss_export_name(3) を参照してください) で表されるクライアントプリンシパルを参照するために使用されます。この形式の名前は、アクセスコントロールリストに格納されるか、またはエクスポートされた名前形式の他の名前と比較されます。この構造体は、 rpc_gss_get_principal_name() によって返されて、また、 rpc_gss_rawcred_t 構造体によって参照されます。

typedef struct { 
 int  len; 
 char  name[1]; 
} *rpc_gss_principal_t;
rpc_gss_rawcred_t
この構造体は、セキュリティコンテキストに関連している生 (raw) の資格証明にアクセスするために使用されます。

typedef struct { 
 u_int  version; /* RPC バージョン番号 */ 
 const char *mechanism; /* セキュリティメカニズム */ 
 const char *qop;  /* 保護の品質 */ 
 rpc_gss_principal_t client_principal; /* クライアント名 */ 
 const char *svc_principal; /* サーバ名 */ 
 rpc_gss_service_t service; /* サービスタイプ */ 
} rpc_gss_rawcred_t;
rpc_gss_ucred_t
rpc_gss_getcred() を通してアクセスされる生 (raw) の資格証明の派生形である、unix 資格証明書。

typedef struct { 
 uid_t  uid;  /* ユーザ ID */ 
 gid_t  gid;  /* グループ ID */ 
 short  gidlen; 
 gid_t  *gidlist; /* グループのリスト */ 
} rpc_gss_ucred_t;
rpc_gss_lock_t
構造体は、特定の QOP とサービスを実行するためんい使用されます。

typedef struct { 
 bool_t  locked; 
 rpc_gss_rawcred_t *raw_cred; 
} rpc_gss_lock_t;
rpc_gss_callback_t
rpc_gss_set_callback() によって使用されるコールバック構造体。

typedef struct { 
 u_int  program; /* RPC プログラム番号 */ 
 u_int  version; /* RPC バージョン番号 */ 
        /* ユーザ定義のコールバック */ 
 bool_t  (*callback)(struct svc_req *req, 
        gss_cred_id_t deleg, 
        gss_ctx_id_t gss_context, 
        rpc_gss_lock_t *lock, 
        void **cookie); 
} rpc_gss_callback_t;
rpc_gss_error_t
rpc_gss_get_error() によってエラー情報を返すために使用される構造体。

typedef struct { 
 int  rpc_gss_error; 
 int  system_error; /* errno と同じ */ 
} rpc_gss_error_t; 
 
/* 
 * rpc_gss_error のための値 
 */ 
#define RPC_GSS_ER_SUCCESS 0 /* エラーなしr */ 
#define RPC_GSS_ER_SYSTEMERROR 1 /* システムエラー */

INDEX

rpc_gss_seccreate(3)
新しいセキュリティコンテキストを作成します。
rpc_gss_set_defaults(3)
コンテキストのための保護のサービスと品質を設定します。
rpc_gss_max_data_length(3)
最大のクライアントメッセージサイズを計算します。
rpc_gss_get_error(3)
最後のエラーの詳細を取得します。
rpc_gss_mech_to_oid(3)
メカニズム名を対応する GSS-API oid に変換します。
rpc_gss_oid_to_mech(3)
GSS-API oid をメカニズム名に変換します。
rpc_gss_qop_to_num(3)
保護名の品質を対応する数値に変換します。
rpc_gss_get_mechanisms(3)
セキュリティメカニズムのリストを取得します。
rpc_gss_get_mech_info(3)
セキュリティメカニズムに関する特別の情報を返します。
rpc_gss_get_versions(3)
RPCSEC_GSS プロトコルの最大と最小のサポートされたバージョンを返します。
rpc_gss_is_installed(3)
特定のセキュリティメカニズムの存在を問い合わせます。
rpc_gss_set_svc_name(3)
与えられた RPC プログラムとバージョンのペアに適合しているサービスプリンシパルの名前を設定します。
rpc_gss_getcred(3)
RPC 要求のセキュリティコンテキストのための資格証明の詳細を取得します。
rpc_gss_set_callback(3)
新しいセキュリティコンテキストが作成されるとき、サーバで呼び出されるコールバックルーチンをインストールします。
rpc_gss_get_principal_name(3)
様々な文字列からクライアントプリンシパル名を作成します。
rpc_gss_svc_max_data_length(3)
最大のサーバメッセージサイズを計算します。

歴史

RPCSEC_GSS マニュアルページは、 FreeBSD 8.0 ではじめて登場しました。

作者

このマニュアルページは、 Doug Rabson <dfr@FreeBSD.org>によって書かれました。
January 26, 2010 FreeBSD