Secure Global Desktop 4.40 管理者ガイド
> ユーザーと認証
> Active Directory 認証
Active Directory 認証では、Active Directory ドメインにアカウントを持つユーザーに対して SGD へのログインが許可されます。Active Directory 認証はユーザーに、LDAP 認証よりも高速で、安全性および拡張性の高い認証機構を提供します。Kerberos 認証プロトコルを使用することにより、SGD は、任意のユーザーをフォレスト内の任意のドメインに対して安全に認証できます。
Active Directory 認証は、デフォルトでは無効になっています。
このページで説明する内容は次のとおりです。
SGD のログイン画面で、ユーザーはユーザー主体名とパスワードを入力します。ユーザー主体名とは、「@」記号で連結されたユーザー名とドメイン名 (たとえば、indigo@indigo-insurance.com) です。
SGD では、Kerberos プロトコルを使用してドメインの鍵配布センター (KDC) にアクセスすることで、主体名とパスワードを確認します。
認証が失敗した場合は、次の認証機構が試されます。
Kerberos 認証が成功した場合、SGD は、Active Directory の LDAP 検索を実行することによってユーザーの識別情報を確立します。次に、SGD はユーザープロファイルを検索します (次のセクションを参照)。ユーザープロファイルの「ログイン」属性が有効になっていない場合、ユーザーはログインできず、以降の認証機構は試行されません。ユーザープロファイルの「ログイン」属性が有効になっている場合、ユーザーはログインできます。
ユーザーの識別情報は、LDAP 識別情報です。SGD Administration Consoleでは、ユーザーの識別情報は LDAP-ID (LDAP)
として表示されます。コマンド行では、ユーザーの識別情報は .../_service/sco/tta/ldapcache/LDAP-ID
として表示されます。
SGD は、ローカルリポジトリを検索することによってユーザープロファイルを確立します。LDAP と SGD の命名体系の差に対応することができます。SGD は、次のユーザープロファイルを、一致するものが見つかるまで検索します。
たとえば、LDAP 人物オブジェクトが cn=Emma Rald,cn=Sales,dc=Indigo Insurance,dc=com
の場合、SGD はローカルリポジトリで dc=com/dc=Indigo Insurance/cn=Sales/cn=Emma Rald
を検索します。
cn=LDAP Profile
という名前を持つユーザープロファイル。
たとえば、dc=com/dc=Indigo Insurance/cn=Sales/cn=LDAP Profile
。
cn=LDAP Profile
という名前を持つユーザープロファイル。
たとえば、dc=com/dc=Indigo Insurance/cn=LDAP Profile
。
一致するユーザープロファイルがない場合は、プロファイルオブジェクト System Objects/LDAP Profile
がユーザープロファイルとして使用されます。
Active Directory 認証は、Directory Services Integration とともに使用できます。Active Directory ユーザーに割り当てられるアプリケーションは、ユーザープロファイルと LDAP 検索の組み合わせに基づいて決められます。
アプリケーションセッションとパスワードキャッシュエントリは、LDAP 人物オブジェクトに属します。
Active Directory 認証を有効にするには、次の手順を実行します。
Active Directory で Kerberos 認証が有効になっている必要があります。デフォルトでは有効になっています。
各ドメイン内の 1 つのドメインコントローラをグローバルカタログサーバーとして設定します。
「SGD の Kerberos 認証を設定する方法」を参照してください。
「Active Directory 認証を設定する方法」を参照してください。
次の手順は、Kerberos プロトコルを使用してユーザーを認証できるように SGD サーバーを設定します。
アレイ内の SGD サーバーごとにこの手順を繰り返します。
Kerberos 認証を使用するには、時刻が Microsoft Windows サーバーの Kerberos セキュリティーポリシーおよびデフォルトドメインセキュリティーポリシーに定義されている「コンピュータの時計の同期の最長トレランス」に準拠するように、アレイ内の KDC サーバーと SGD サーバー上のクロックが同期されている必要があります。これをクロックスキューと呼びます。クロックスキューを超えると、Kerberos 認証が失敗します。
時刻の同期は重要であるため、時間情報プロトコル (NTP) ソフトウェアを使用してクロックを同期してください。または、rdate
コマンドを実行します。
アレイ内の各 SGD サーバーには Kerberos 構成ファイルが存在する必要があります。SGD サーバーで使用される Kerberos 構成ファイルは、次のいずれかです。
/etc/krb5/krb5.conf
/etc/krb5.conf
/opt/tarantella/bin/jre/lib/security/krb5.conf
ファイルです。
このファイルを手動で作成するか、または既存の構成ファイルをコピーする必要があります。この構成ファイルが存在する場合は、システムのデフォルト構成ファイルの代わりに使用されます。
Kerberos 構成ファイルには、Kerberos 認証を制御するための多数のオプションが含まれています。詳細は、使用しているシステムのマニュアルを参照してください。SGD には、少なくとも次の設定オプションが必要です。
これらの設定オプションについて以降のセクションで説明します。
Kerberos 構成に加えた変更が SGD で検出されるようにするには、SGD サーバーの再起動が必要です。または、次のコマンドを使用すると、SGD サーバーを再起動しなくても、Kerberos 構成を更新できます。
$ tarantella cache --flush krb5config
少なくとも、Kerberos 構成ファイルには次のセクションが含まれている必要があります。
[libdefaults]
- Kerberos 認証のデフォルトを設定します。default_realm
と default_checksum
を設定する必要があります。[realms]
- 各 Kerberos レルムの KDC を設定します。1 つのレルムに複数の KDC を設定してもかまいません。各 KDC の指定は、hostname:port
の書式で行います。デフォルトポートの 88 が使用されている場合は、port
を省略できます。[domain_realm]
- Active Directory のドメインを Kerberos のレルムにマッピングします。Kerberos 構成ファイルの例を、次に示します。
[libdefaults] default_realm = INDIGO-INSURANCE.COM default_checksum = rsa-md5 [realms] INDIGO-INSURANCE.COM = { kdc = melbourne.indigo-insurance.com } EAST.INDIGO-INSURANCE.COM = { kdc = ad01.east.indigo-insurance.com kdc = ad02.east.indigo-insurance.com } WEST.INDIGO-INSURANCE.COM = { kdc = ad01.west.indigo-insurance.com kdc = ad02.west.indigo-insurance.com } [domain_realm] indigo-insurance.com = INDIGO-INSURANCE.COM .east.indigo-insurance.com = EAST.INDIGO-INSURANCE.COM east.indigo-insurance.com = EAST.INDIGO-INSURANCE.COM .west.indigo-insurance.com = WEST.INDIGO-INSURANCE.COM west.indigo-insurance.com = WEST.INDIGO-INSURANCE.COM
Active Directory パスワードの有効期限が切れているときに、ユーザーに新しいパスワードの入力を要求するように SGD を設定できます。それには、次に示すように、各 Kerberos レルムのパスワード変更を処理するサーバーの詳細を Kerberos 構成ファイルに追加する必要があります。
kpasswd_server = host:port admin_server = host:port kpasswd_protocol = SET_CHANGE
kpasswd_server
と admin_server
の行は、パスワード変更を処理する Kerberos 管理サーバー (host
) を識別します。kpasswd_server
を省略した場合は、代わりに admin_server
が使用されます。デフォルトポートの 464 が使用されている場合は、port
を省略できます。
レルムに対するパスワードの有効期限の設定例を、次に示します。
EAST.INDIGO-INSURANCE.COM = { kdc = ad01.east.indigo-insurance.com kdc = ad02.east.indigo-insurance.com admin_server = ad01.east.indigo-insurance.com kpasswd_protocol = SET_CHANGE }
KDC または Kerberos 管理サーバーにメッセージを送信するときには、UDP または TCP プロトコルが使用されます。使用されるプロトコルは、Kerberos 構成ファイルの [libdefaults]
セクションにある次の行によって決まります。
udp_preference_limit = bytes
この行には、UDP を使用して送信できる最大パケット サイズ (バイト単位) を設定します。メッセージがこのサイズより大きい場合は、TCP が使用されます。つまり、KDC または管理サーバーがパッケージが大きすぎることを検出すると、代わりに TCP が使用されます。常に TCP を使用するには、udp_preference_limit
を次のように設定します。
udp_preference_limit = 1
Kerberos 認証プロセスが失敗した場合は、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 検出タイムアウトも増やしてください。
SGD からユーザーのレルムの KDC に接続できない場合は、認証に失敗します。
「グローバル設定」»「Secure Global Desktop 認証」タブで、「Secure Global Desktop 認証の変更」ボタンをクリックします。
ad://east.indigo-insurance.com
のように Active Directory ドメインの名前を入力します。
URL は、ad://
で始まっている必要があります。入力できる URL は 1 つだけです。
SGD は、このドメイン名を使用してドメインネームシステム (DNS) 検索を実行し、グローバルカタログサーバーのリストを取得します。グローバルカタログは、SGD がユーザーの識別情報とユーザープロファイルを判別するために、どの Active Directory サーバーを検索できるかを決定するために使用されるサーバーです。
セキュア接続を使用するには、「証明書を使用する」チェックボックスを選択し、アレイ内の各 SGD サーバーのクライアント証明書をインストールします。
標準接続を使用するには、「ユーザー名」フィールドと「パスワード」フィールドに、Active Directory を検索する権限を持つユーザーのユーザー名とパスワードを入力します。ユーザー名には、sgd-ldap@indigo-insurance.com
など、ユーザー主体名を入力する必要があります。Active Directory 認証に予約された特別なユーザーを作成することもできます。
ベースドメインは、ログイン時にドメインの一部だけが入力された場合に使用されます。たとえば、ベースドメインが indigo-insurance.com
に設定されているときに、ユーザーが rouge@west
というユーザー名でログインした場合、SGD はそのユーザーを rouge@west.indigo-insurance.com
として認証しようとします。
デフォルトドメインは、ユーザーがログイン時にドメインを入力しなかった場合に使用されます。たとえば、デフォルトドメインが east.indigo-insurance.com
に設定されているときに、ユーザーが rouge
というユーザー名でログインした場合、SGD はそのユーザーを rouge@east.indigo-insurance.com
として認証しようとします。
SGD は、Active Directory から収集した LDAP データをキャッシュします。SGD が変更を検出していない場合は、次のコマンドを使用して、キャッシュされたデータを手動で消去できます。
$ tarantella cache --flush ldapgroups | ldapconn | ldapconn-lookups | all
注 このコマンドを実行した SGD サーバーのキャッシュだけがフラッシュされます。
オプション | 説明 |
---|---|
ldapgroups |
Directory Services Integration に使用されるすべての LDAP グループデータのキャッシュをフラッシュします。 |
ldapconn |
すべての IP アドレス、ドメイン、および属性データのキャッシュをフラッシュします。 |
ldapconn-lookups |
Directory Services Integration に使用されるすべての LDAP 検索データのキャッシュをフラッシュします。 |
all |
すべての LDAP データをフラッシュします。 |
Active Directory サーバーの LDAP 検索に失敗した場合のために、2 つの LDAP タイムアウトを設定できます。
LDAP 検出タイムアウトは、初期接続要求に対する Active Directory サーバーからの応答を SGD が待機する時間を制御します。デフォルト値は 30 秒です。このタイムアウト値を変更するには、次のコマンドを実行します。
$ tarantella config edit --tarantella-config-ldap-discovery-timeout secs
LDAP タイムアウトは、データ要求などの LDAP 操作に対する Active Directory サーバーからの応答を、SGD が待機する時間を制御します。デフォルト値は 30 秒です。このタイムアウト値を変更するには、次のコマンドを実行します。
$ tarantella config edit --tarantella-config-ldap-timeout secs
どちらのタイムアウトでも、SGD は Active Directory サーバーとの接続を 2 回試みます。応答がない場合、SGD は別の Active Directory サーバーを試みます。ドメインの Active Directory サーバーのリストは、グローバルカタログから取得します。すべての Active Directory サーバーでタイムアウトが発生した場合、SGD で Directory Services Integration を使用できなくなることがあります。
LDAP 検出タイムアウトには、KDC タイムアウトより長い値を設定してください。たとえば、KDC タイムアウトが 10 秒で、再試行回数が 3 回の場合、LDAP 検出タイムアウトを 35 秒 (3 x 10 秒 + 追加の 5 秒) に設定します。KDC タイムアウトと LDAP 検出タイムアウトの関係は保持してください。KDC タイムアウトを増やした場合、LDAP 検出タイムアウトも増やしてください。
Copyright © 1997-2007 Sun Microsystems, Inc. All rights reserved.