2.2. Active Directory 認証

Active Directory 認証では、ユーザーが Active Directory フォレスト内にアカウントを保持していれば SGD にログインできるようにします。Active Directory 認証は、LDAP 認証よりも高速かつ安全でスケーラブルな認証メカニズムを備えています。Kerberos 認証プロトコルを使用することにより、SGD は、任意のユーザーをフォレスト内の任意のドメインに対して安全に認証できます。

Active Directory 認証は、デフォルトでは無効になっています。

このセクションの内容は、次のとおりです。

2.2.1. Active Directory 認証の仕組み

SGD のログイン画面で、ユーザーはユーザー名とパスワード (通常は、indigo@example.com などの @ 記号で結合されたユーザー名とドメイン名) を入力します。

SGD では、そのユーザー名とパスワードをドメインの鍵配布センター (KDC) に対して確認するために Kerberos プロトコルを使用します。

認証が失敗した場合は、次の認証メカニズムが試されます。

Kerberos 認証が成功した場合、SGD は、Active Directory の LDAP 検索を実行することによってそのユーザーの識別情報を確立します。次に、SGD はユーザープロファイルを検索します。詳細は、「ユーザー識別情報とユーザープロファイル」を参照してください。ユーザープロファイルの「ログイン」属性が有効になっていない場合、ユーザーはログインすることができず、ほかの認証メカニズムが試されることはありません。ユーザープロファイルの「ログイン」属性が有効な場合、ユーザーはログインできます。

2.2.1.1. ユーザー識別情報とユーザープロファイル

ユーザー識別情報は LDAP ユーザーの DN です。SGD データストアでは、ユーザー識別情報は LDAP 名前空間内にあります。Administration Console では、テキスト「(LDAP)」はユーザー識別情報の横に表示されます。コマンド行では、ユーザー識別情報は .../_service/sco/tta/ldapcache 内にあります。

SGD は、ローカルリポジトリを検索することによってユーザープロファイルを確立するため、LDAP と SGD の命名体系の違いに対応できます。SGD は、一致が見つかるまで次のものを検索します。

  • ユーザーの LDAP オブジェクトと同じ名前を持つユーザープロファイル。

    たとえば、ユーザーの LDAP オブジェクトが cn=Emma Rald,cn=Sales,dc=example,dc=com である場合、SGD はローカルリポジトリ内で dc=com/dc=example/cn=Sales/cn=Emma Rald を検索します。

  • ユーザーの LDAP オブジェクトと同じ組織単位内に存在するが、cn=LDAP Profile という名前を持つユーザープロファイル。

    たとえば、dc=com/dc=example/cn=Sales/cn=LDAP Profile です。

  • cn=LDAP Profile という名前を持つ、いずれかの親の組織単位内のユーザープロファイル。

    たとえば、dc=com/dc=example/cn=LDAP Profile です。

一致が見つからない場合は、プロファイルオブジェクト o=System Objects/cn=LDAP Profile がユーザープロファイルとして使用されます。

Active Directory 認証は、Directory Services Integration とともに使用できます。Active Directory ユーザーに割り当てられるアプリケーションは、ユーザープロファイルと LDAP 検索の組み合わせに基づいて決められます。アプリケーションがユーザーに割り当てられる方法の詳細は、3章ユーザーへのアプリケーションの公開を参照してください。

2.2.2. Active Directory 認証の設定

Active Directory 認証を設定するには、次の設定手順を実行する必要があります。

  1. Active Directory 認証の準備をします。

    SGD には、Active Directory 認証を有効にする前に構成する必要のある特定の要件があります。「Active Directory 認証の準備」を参照してください。

  2. Kerberos 認証用に SGD を構成します。

    Kerberos 認証に使用する KDC の詳細を使用して SGD を構成します。「Kerberos 認証用の SGD の構成」を参照してください。

  3. Active Directory 認証を有効にします。

    Active Directory 認証を使用するように SGD を構成し、Active Directory ドメインの詳細を指定します。「Active Directory 認証を有効にする方法」を参照してください。

    Active Directory の配備が複雑な組織では、サービスオブジェクトを使用して Active Directory の設定を管理および調整します。「サービスオブジェクトの使用」を参照してください。

2.2.3. Active Directory 認証の準備

Active Directory 認証の準備を行うには、次の手順を実行します。

2.2.3.1. Active Directory のサポート対象バージョン

サポートされる Active Directory のバージョンは、http://www.oracle.com/technetwork/jp/index.html/documentation/sgd-193668.html で参照可能な『オラクル Secure Global Desktop のプラットフォームサポートおよびリリースノート (リリース 4.7 用)』に一覧表示されています。

2.2.3.2. ドメインの要件

Active Directory で Kerberos 認証が有効になっている必要があります。デフォルトでは有効になっています。

各 Active Directory フォレストにグローバルカタログサーバーが含まれていることを確認します。

Active Directory 認証を有効にするときは、ユーザー名とパスワードを入力します。ユーザーは、Active Directory でユーザー情報を検索する権限が必要です。Active Directory 認証に予約された特別なユーザーを作成することもできます。

2.2.3.3. Active Directory 認証のネットワーク要件

Active Directory 認証を有効にする前に、アレイ内のすべての SGD サーバーが Active Directory に接続できることを確認します。

SGD は、次のポート上で Active Directory への接続を確立できる必要があります。

  • Active Directory での DNS 検索の場合は、ポート 53

  • KDC に対する Kerberos 認証の場合は、ポート 88 および 464

  • ドメインコントローラに対するセキュリティー保護された LDAP 接続の場合は、TCP ポート 389

  • グローバルカタログサーバーに対するセキュリティー保護された LDAP 接続の場合は、TCP ポート 3268

ポート 88 および 464 は、Kerberos 認証の標準ポートです。これらのポートは設定可能です。ポート 464 は、パスワードの変更操作でのみ必要です。ポート 88 および 464 は、パケット サイズと Kerberos 設定に応じて、TCP または UDP プロトコルを使用できます。詳細は、「ネットワークプロトコル」を参照してください。

クライアント証明書なしで SSL 接続を使用している場合は、SGD が、次の追加のポート上で Active Directory への接続を確立できる必要があります。

  • ドメインコントローラに対するセキュリティー保護された LDAP 接続の場合は、TCP ポート 636

  • グローバルカタログサーバーに対するセキュリティー保護された LDAP 接続の場合は、TCP ポート 3269

詳細については、「Active Directory への SSL 接続」を参照してください。

SGD は、LDAP 情報を検出するためにいくつかの DNS 検索を実行します。詳細は、「Active Directory 認証と LDAP 検出」を参照してください。これらの検索が機能するためには、必要な情報が Active Directory から返されるように DNS を正しく設定することが不可欠です。

2.2.3.4. システムクロックの同期

Kerberos 認証を使用するには、アレイ内の KDC と SGD サーバー上のクロックが同期されていて、各時間が Active Directory サーバー上の Kerberos セキュリティーポリシーおよびデフォルトドメインセキュリティーポリシーで定義されているコンピュータクロックの同期の最大許容範囲内に収まっている必要があります。これをクロックスキューと呼びます。クロックスキューのトレランスを超えると、Kerberos 認証が失敗します。

時刻の同期は重要であるため、Network Time Protocol (NTP) ソフトウェアを使って時刻を同期します。あるいは、rdate コマンドを使用します。

2.2.3.5. Active Directory への SSL 接続

Active Directory への接続に SSL を使用するには、LDAP 署名をサポートするように Active Directory サーバーを設定する必要があります。LDAP 署名をサポートする方法については、使用しているシステムのマニュアルを参照してください。Microsoft サポート技術情報の記事 935834 には、Windows Server 2008 用に LDAP 署名をサポートする方法の詳細が記載されています。

SGD は、Active Directory サーバーによって提供された SSL 証明書を検証できる必要があります。Active Directory サーバーの認証局 (CA) またはルート証明書を SGD サーバー上の CA 証明書トラストストアにインポートすることが必要になる可能性があります。サポートされる CA の確認方法および CA 証明書のインポート方法の詳細は、「CA 証明書トラストストア」を参照してください。

デフォルトでは、SGD は、ユーザー名とパスワードを使用して Active Directory に対して認証を実行します。セキュリティーを強化するために、代わりにクライアント証明書を提供するように SGD を構成できます。これを行う場合は、アレイ内の各 SGD サーバーに、Active Directory 証明書サービスを使用して署名された有効なクライアント証明書が存在する必要があります。Active Directory は、クライアント証明書の使用をサポートするように設定する必要があります。

クライアント証明書の作成プロセスは次のとおりです。

  1. SGD サーバーのクライアント証明書に対する証明書発行リクエスト (CSR) を作成します。

    「SGD サーバーのクライアント証明書の CSR を作成する方法」を参照してください。

  2. Active Directory 証明書サービスを使用してクライアント証明書を作成します。

    Active Director 証明書サービスを使用してクライアント証明書を作成する方法については、使用しているシステムのマニュアルを参照してください。

    CSR を Base 64 でエンコードされた証明書要求 (Advanced Certificate Request) として送信します。

    証明書の証明書テンプレートを選択する必要がある場合は、デフォルトの管理者テンプレートまたはユーザーテンプレートで十分です。選択するテンプレートは、証明書がユーザー認証またはクライアント認証に使用できるようにする必要があります。

    Base 64 でエンコードされた形式のクライアント証明書をダウンロードするようにしてください。証明書が中間 CA によって署名されている場合は、証明書とチェーンをダウンロードします。

  3. SGD サーバーのクライアント証明書をインストールします。

    「SGD サーバーのクライアント証明書をインストールする方法」を参照してください。

2.2.4. Kerberos 認証用の SGD の構成

Active Directory 認証を使用するには、アレイ内のすべての SGD サーバーが Kerberos 認証用に構成されている必要があります。

アレイ内の各 SGD サーバー上に Kerberos 構成ファイルが存在する必要があります。SGD サーバーによって使用される Kerberos 構成ファイルは次のどちらかです。

  • システムのデフォルト Kerberos 構成ファイル。

    通常、これは次のどちらかのファイルになります。

    • Oracle Solaris プラットフォーム上の /etc/krb5/krb5.conf

    • Linux プラットフォーム上の /etc/krb5.conf

  • SGD Kerberos 構成ファイル。

    これは /opt/tarantella/bin/jre/lib/security/krb5.conf ファイルです。

    このファイルを手動で作成するか、または既存の構成ファイルをコピーする必要があります。この構成ファイルが存在する場合は、システムのデフォルト構成ファイルの代わりに、このファイルが使用されます。

Kerberos 構成ファイルには、Kerberos 認証を制御するための多数のオプションが含まれています。詳細は、使用しているシステムのマニュアルを参照してください。次を設定する必要がある場合があります。

  • Kerberos レルムと KDC。SGD がユーザーを認証するために使用する KDC。「Kerberos レルムと KDC」を参照してください。

  • パスワードの有効期限。ユーザーのパスワードが期限切れになった場合に SGD がユーザーに新しいパスワードの入力を求めるかどうか。「Active Directory パスワードの有効期限」を参照してください。

  • ネットワークプロトコル。SGD が Kerberos 認証のために UDP または TCP プロトコルを使用するかどうか。「ネットワークプロトコル」を参照してください。

  • KDC タイムアウト。KDC への接続で障害が発生した場合の処理。「KDC タイムアウト」を参照してください。

注意

特に、krb5.conf ファイルの形式に注意してください。正しくない形式のファイルは、特にパスワードの有効期限切れへの対応で、問題を引き起こす可能性があります。

Kerberos 構成ファイルを変更した場合は常に、SGD サーバーを再起動するまで SGD はその変更を検出しません。あるいは、次のコマンドを使用すると、SGD サーバーを再起動せずに Kerberos 構成と接続情報をリフレッシュできます。

$ tarantella cache --flush krb5config
$ tarantella cache --flush ldapconn

2.2.4.1. Kerberos レルムと KDC

少なくとも、Kerberos 構成ファイルには次のセクションが含まれている必要があります。

  • [libdefaults]。Kerberos 認証のデフォルトを設定します。default_realm を設定する必要があります。デフォルトレルムが指定されていない場合、ユーザーは期限切れのパスワードを変更できないことがあります。

  • [realms]。各 Kerberos レルムの KDC を設定します。1 つのレルムに複数の KDC を設定してもかまいません。各 KDC のエントリの形式は host:port です。デフォルトポートの 88 が使用される場合は、port を省略できます。

  • [domain_realm]。これはネットワークドメインを Kerberos レルムにマッピングします。

Kerberos 構成ファイルの例を、次に示します。

[libdefaults]
default_realm = EXAMPLE.COM
 
[realms]
EXAMPLE.COM = {
  kdc = kdc.example.com
}
EAST.EXAMPLE.COM = {
  kdc = ad01.east.example.com
  kdc = ad02.east.example.com
}
WEST.EXAMPLE.COM = {
  kdc = ad01.west.example.com
  kdc = ad02.west.example.com
}
 
[domain_realm]
example.com = EXAMPLE.COM
.east.example.com = EAST.EXAMPLE.COM
east.example.com = EAST.EXAMPLE.COM
.west.example.com = WEST.EXAMPLE.COM
 west.example.com = WEST.EXAMPLE.COM

2.2.4.2. Active Directory パスワードの有効期限

ユーザーの Active Directory パスワードが期限切れになった場合にユーザーに新しいパスワードの入力を求めるように SGD を構成できます。krb5.conf ファイルでデフォルトレルムが指定されていない場合、ユーザーは期限切れのパスワードを変更できません。

パスワードの有効期限を構成するには、次のように、各 Kerberos レルムのパスワード変更を処理するサーバーの詳細を Kerberos 構成ファイルに追加する必要があります。

kpasswd_server = host:port
admin_server = host:port
kpasswd_protocol = SET_CHANGE

kpasswd_serveradmin_server の行は、パスワード変更を処理する Kerberos 管理サーバーを識別します。kpasswd_server が省略されている場合は、代わりに admin_server が使用されます。デフォルトポートの 464 が使用される場合は、port を省略できます。

レルムに対するパスワードの有効期限の設定例を、次に示します。

EAST.EXAMPLE.COM = {
 kdc = ad01.east.example.com
 kdc = ad02.east.example.com
 admin_server = ad01.east.example.com
 kpasswd_protocol = SET_CHANGE
 }

ユーザーのパスワードが期限切れに近づいていることをユーザーに警告し、ユーザーにパスワードの変更を強制するように SGD を構成できます。「パスワードの有効期限」を参照してください。SGD でこれを実行できるのは、ドメインコントローラの最大パスワード経過時間の設定とユーザーの最後に設定されたパスワードの属性を読み取ることができる場合だけです。グローバルカタログのみを検索するように SGD を構成した場合は、この属性を使用できません。詳細については、「グローバルカタログのみの検索」を参照してください。

2.2.4.3. ネットワークプロトコル

KDC または Kerberos 管理サーバーにメッセージを送信する場合、SGD は UDP または TCP プロトコルのどちらかを使用します。使用されるプロトコルは、Kerberos 構成ファイルの [libdefaults] セクションにある次の行によって決まります。

udp_preference_limit = bytes

この行には、UDP を使用して送信できる最大パケット サイズ (バイト単位) を設定します。メッセージがこのサイズより大きい場合は、TCP が使用されます。つまり、KDC または管理サーバーがパッケージが大きすぎることを検出すると、代わりに TCP が使用されます。常に TCP を使用するには、次のように udp_preference_limit を設定します。

udp_preference_limit = 1

2.2.4.4. KDC タイムアウト

SGD が KDC からの応答を待つ期間と、各 KDC への接続を試行する回数を制御する KDC タイムアウトを構成できます。

KDC タイムアウトを設定するには、Kerberos 構成ファイルの [libdefaults] セクションに次の行を追加します。

kdc_timeout = time
max_retries = number

kdc_timeout は、KDC からの応答を待つ最大時間 (ミリ秒単位) を設定します。max_retries は、各 KDC を試行する最大回数です。各レルムの KDC への接続は、Kerberos 構成ファイルの [realms] セクションに設定されている順序に従って行われます。

KDC タイムアウトと LDAP 検出タイムアウトの関係は保持することを推奨します。KDC タイムアウトを増やした場合、LDAP 検出タイムアウトも増やしてください。「LDAP 検出タイムアウト」を参照してください。

SGD がユーザーのレルムのいずれかの KDC に接続できない場合、この認証フェーズは失敗します。

2.2.5. Active Directory 認証を有効にする方法

  1. Administration Console で、Secure Global Desktop 認証構成ウィザードを表示します。

    「グローバル設定」→「Secure Global Desktop 認証」タブに移動し、「Secure Global Desktop 認証を変更」ボタンをクリックします。

  2. 「サードパーティー/システム認証」の手順で、「システム認証」チェックボックスが選択されていることを確認します。

  3. 「システム認証 - リポジトリ」の手順で、「LDAP/Active Directory」チェックボックスを選択します。

  4. 「LDAP リポジトリの詳細」の手順で、Active Directory フォレストの詳細を設定します。

    1. 「リポジトリタイプ」の「Active Directory」オプションを選択します。

    2. 「URL」フィールドに Active Directory フォレストの URL を入力します。

      たとえば、「ad://example.com」と入力します。

      この URL は、ad:// で始まる必要があります。入力できる URL は 1 つだけです。

      検索ベースとして使用する DN (ad://example.com/dc=sales,dc=example,dc=com など) を指定できます。これは、ユーザー識別情報を検索するために使用されるディレクトリの一部を指定します。

    3. Active Directory へのセキュリティー保護された接続を設定します。

      • セキュア接続のために Kerberos プロトコルのみを使用するには – 「接続のセキュリティー」の「Kerberos」オプションを選択し、「ユーザー名」および「パスワード」フィールドにユーザー名とパスワードを入力します。このオプションは、デフォルトで選択されています。

      • セキュア接続のために Kerberos と SSL を使用するには – 「接続のセキュリティー」の「SSL」オプションを選択し、「ユーザー名」および「パスワード」フィールドにユーザー名とパスワードを入力します。

      • セキュア接続のために Kerberos、SSL、およびクライアント証明書を使用するには – 「接続のセキュリティー」の「SSL」オプションを選択し、「証明書を使用する」チェックボックスを選択します。

      SSL 接続を使用するために必要な追加の設定の詳細は、「Active Directory への SSL 接続」を参照してください。

      ユーザー名を入力する場合、ユーザー名は user@example.com の形式にします。ユーザー名のドメイン名を省略すると、SGD は「URL」、「Active Directory ベースドメイン」、および「Active Directory デフォルトドメイン」フィールド内の情報を使用してドメインを取得します。ユーザーは、Active Directory でユーザー情報を検索する権限が必要です。

    4. (オプション) 「Active Directory ベースドメイン」フィールドに、ドメイン名の一部を入力します。

      「Base Domain」は、ログイン時にドメインの一部だけが入力された場合に使用されます。たとえば、ベースドメインが example.com に設定されているときに、ユーザーがユーザー名 rouge@west でログインした場合、SGD はそのユーザーを rouge@west.example.com として認証します。

    5. (オプション) 「Active Directory デフォルトドメイン」フィールドに、デフォルトとして使用するドメイン名を入力します。

      「Default Domain」は、ユーザーがログイン時にドメインを入力しなかった場合に使用されます。たとえば、デフォルトドメインが east.example.com に設定されているときに、ユーザーがユーザー名 rouge でログインした場合、SGD はそのユーザーを rouge@east.example.com として認証します。

  5. 「選択項目の確認」の手順で、認証の設定を確認して、「終了」をクリックします。

    「終了」をクリックすると、SGD は generated という名前のサービスオブジェクトを作成します。サービスオブジェクトは、ディレクトリサービスの設定を管理するために使用されます。詳細は、「サービスオブジェクトの使用」を参照してください。