Federation Server での ODBC ラッパー対応 Kerberos 認証の使用可能化

Kerberos は、共有秘密鍵システムを使用して非セキュア・ネットワーク環境でユーザーを認証するためのセキュア・ネットワーク認証プロトコルです。 Kerberos は、識別、認証、許可に関する「信頼できる唯一の情報源」が存在する学術機関および企業組織向けに設計されています。

始める前に

Federation で Kerberos 認証方式を使用するためには、Kerberos 環境の構成方法に関する知識が必要です。

このタスクについて

Kerberos 認証は 3 層のシステムで管理され、プレーン・テキストのユーザー ID とパスワードのペアではなく、暗号化されたサービス・チケットのやり取りがアプリケーション・サーバーとクライアントの間で行われます。 資格情報と呼ばれるこれらの暗号化されたサービス・チケットは、Kerberos 鍵配布センター (KDC) という別個のサーバーによって提供されます。 各ユーザー (Kerberos 用語ではプリンシパル) は、KDC と共有される秘密暗号鍵を所有します。

Kerberos の主要機能の 1 つは、ユーザー ID もパスワードも入力することなくユーザーがフェデレーション・サーバーに接続できるシングル・サインオン環境が得られることです。

以下のデータ・ソースは、フェデレーションでの Kerberos 認証をサポートします。
  • Driver for Apache Hive
  • DB2® ワイヤー・プロトコル
  • Greenplum Wire Protocol
  • Impala Wire Protocol
  • Oracle Wire Protocol
  • PostgreSQL Wire Protocol
  • SQL Server Wire Protocol
  • Sybase Wire Protocol
  • Driver for the Teradata Database

手順

以下の手順は、フェデレーション・サーバーで ODBC ラッパーに対応した Kerberos 認証を使用可能にするために必要なステップを説明しています。 このメソッドは、Windows Active Directory Kerberos 環境と MIT Kerberos 環境の両方をサポートします。

プロシージャー

  1. Kerberos サーバーを構成します。
    1. Kerberos 鍵配布センター (KDC) をインストールして構成します。 以下のコマンドを使用して、KDC サーバーにプリンシパルを追加します。
      kadmin: addprinc username/full.hostname@realmname
      kadmin: ktadd -k username.keytab username/full.hostname@realmname
      ここで、kadmin は管理ユーザーであり、username はプリンシパルです。
  2. Kerberos クライアントを構成します。
    1. Kerberos クライアントをインストールします。

      Federation Server と同じサーバーに Kerberos クライアントをインストールする必要があります。

    2. チケット許可チケット (TGT) を取得します。
      注: フェデレーションでは、Kerberos 資格情報キャッシュを初期化するための 2 つのオプションが受け入れられます。 1 つはクライアント・プリンシパル名であり、もう 1 つは、クライアント・プリンシパルのパスワードを格納するキータブ・ファイルです。
  3. Kerberos 認証を使用するようにデータ・ソースを構成します。
  4. フェデレーション・サーバーで以下のコマンドを実行します。
    create wrapper odbc library 'libdb2rcodbc.so' options(DB2_FENCED 'Y', module 'sqllib/federation/odbc/lib/libodbc.so')
    create server servername type type version ver authorization "uid" password "password" options(host 'hostname', port 'port', dbname 'database', SERVER_PRINCIPAL_NAME 'servicename/hostname@REALMNAME', password 'Y', pushdown 'Y');
    create user mapping for user server servername options(remote_authid 'username/hostname@REALMNAME', CLIENT_PRINCIPAL_NAME 'username/hostname@REALMNAME', KERBEROS_KEYTAB '/path/to/user.keytab');