ユーザーの管理
XenServerでは、ユーザー、グループ、役割、および権限を定義することで、ホストやリソースプールにアクセスできるユーザーや実行可能な操作を制御できます。
XenServerの初回インストール時に、管理者ユーザーのアカウントが自動的に追加されます。このアカウントはローカルスーパーユーザー(LSU)またはrootと呼ばれ、XenServerによりローカルに認証されるものです。
ローカルスーパーユーザー(root)は特別なシステム管理用アカウントであり、すべての権限を持ちます。ローカルスーパーユーザーは、XenServerをインストールするときのデフォルトのアカウントです。XenServerにより、ローカルスーパーユーザーアカウントが認証されます。ローカルスーパーユーザーは、外部の認証サービスを必要としません。このため、外部の認証サービスに障害が生じた場合でも、ローカルスーパーユーザーとしてログインすればシステムを管理できます。ローカルスーパーユーザーは、SSHを使用して物理XenServerサーバーに常にアクセスできます。
ほかのユーザーを作成するには、XenCenterの[ユーザー]タブ、またはxe CLIを使用してActive Directoryアカウントを追加します。Active Directoryを使用しない環境では、使用できるのはローカルスーパーユーザーアカウントのみです。
注:
XenServerで新しく作成したユーザーには、デフォルトでRBAC役割が割り当てられません。このため、ほかの管理者により役割が割り当てられるまで、これらのユーザーはXenServerプールにアクセスできません。
これらの権限は、「Active Directory認証の使用」セクションで説明しているように、役割を通じて付与されます。
Active Directoryでユーザーを認証する
ホストやプールに対して複数のユーザーアカウントを使用するには、Active Directoryユーザーアカウントで認証する必要があります。Active Directoryアカウントでは、XenServerのユーザーがWindowsドメインの資格情報でプールにログインできます。
注:
ADドメインコントローラーでLDAPチャネルバインディングとLDAP署名を有効にできます。詳しくは、Microsoftセキュリティアドバイザリを参照してください。
ユーザーアカウントに基づいてさまざまなアクセスレベルを設定するには、Active Directory認証を有効にし、ユーザーアカウントを追加して、それらのアカウントに役割を割り当てます。
Active Directoryアカウントを持つ管理者は、xe CLIを使用でき(適切な-u
および-pw
引数を指定)、XenCenterを使用してホストに接続することもできます。認証はリソースプール単位で行われます。
サブジェクトは、ユーザーアカウントへのアクセスを制御します。XenServerのサブジェクトは、Active Directoryサーバー上のエンティティ(ユーザーまたはグループ)にマップされます。外部認証を有効にすると、XenServerで、セッションを作成するときに使用された資格情報がまずローカルルートの資格情報と照合され、次にサブジェクトリストと照合されます。アクセスを許可するには、そのユーザーまたはグループのサブジェクトエントリを作成します。XenCenterまたはxe CLIを使用してサブジェクトエントリを作成できます。
Active Directoryやユーザーアカウントに関する表記が、XenCenterとxe CLIで異なる点に注意してください。
XenCenterの用語 | xe CLIの用語 |
---|---|
ユーザー、ユーザーの追加 | サブジェクト、サブジェクトの追加 |
XenServerはLinuxベースのシステムですが、XenServerユーザーアカウントとしてActive Directoryアカウントを使用することができます。このため、Active Directory資格情報がActive Directoryドメインコントローラーに渡されます。
XenServerにActive Directoryを追加すると、Active DirectoryのユーザーとグループがXenServerのサブジェクトになります。XenCenterでは、サブジェクトはユーザーと呼ばれます。ユーザーおよびグループは、XenServerにサブジェクトを登録するときに、ログオン時に、Active Directoryを使用することで認証されます。ユーザーおよびグループは、ドメイン名を使用してユーザー名を修飾する必要はありません。
ユーザー名を修飾するには、ダウンレベルログオン名形式で入力する必要があります。例:mydomain\myuser
。
注:
ユーザー名を修飾しない場合、XenCenterでは、デフォルトで、Active Directoryドメインユーザーでのログインが試行されます。ただし、ローカルスーバーユーザーでのログインは、常にローカルでの認証(つまりXenServerホスト上での認証)が試行されます。
外部認証プロセスは、以下のように機能します:
-
XenServerホストに接続するときに提供された資格情報がActive Directoryドメインコントローラーに渡され、認証が要求されます。
-
Active Directoryドメインコントローラーが、その資格情報を確認します。資格情報が無効な場合は、ここで認証に失敗します。
-
資格情報が有効な場合は、Active Directoryドメインコントローラーに照会され、その資格情報に関連付けられているサブジェクト識別子およびグループメンバシップが取得されます。
-
取得したサブジェクト識別子がXenServerに格納されているものと一致した場合は、認証が正常に行われます。
ドメインに参加した際、プールのActive Directory認証を有効にします。これにより、そのドメイン(および信頼関係のあるドメイン)のユーザーのみがリソースプールに接続できるようになります。
注:
DHCPが設定されたネットワークPIFのDNS設定を手作業で更新することはサポートされません。これにより、Active Directoryの統合に問題が生じ、ユーザー認証に失敗することがあります。
Active Directory認証を設定する
XenServerでは、Windows Server 2008またはそれ以降のActive Directoryサーバーがサポートされます。
XenServerホストでActive Directoryを認証するには、(相互運用性が有効な)Active DirectoryサーバーとそのXenServerホストが同じDNSサーバーを使用している必要があります。 Active DirectoryサーバーとDNSサーバーが同じマシンである場合もあります。これは、DHCPを使用してIPアドレス、およびDNSサーバーの一覧をXenServerホストに提供することで実現できます。または、PIFオブジェクト内の値を設定することや、手動の静的構成の使用時にインストーラーを使用することもできます。
DHCPを有効にしてホスト名を割り当てることをお勧めします。ホスト名localhost
またはlinux
をホストに割り当てないでください。
警告:
XenServer環境内で一意のXenServerホスト名を使用する必要があります。
以下の点に注意してください:
-
XenServerでは、ホスト名に基づいたActive DirectoryエントリがActive Directoryデータベースに格納されます。同じホスト名を持つ2つのXenServerホストが同じActive Directoryドメインに属している場合、2つ目のXenServerは1つ目のXenServerのActive Directoryエントリを上書きします。上書きは、ホストが同じプールに属しているか異なるプールに属しているかにかかわらず行われます。これにより、1つ目のXenServerでのActive Directory認証が機能しなくなる可能性があります。
異なるActive Directoryドメインに属しているXenServerホストでは、同じホスト名を使用できます。
-
Active Directoryで比較されるのはUTC時間なので、異なるタイムゾーンに属しているXenServerホストを同じActive Directoryドメインに追加することができます。時計が同期するように、XenServerプールとActive Directoryサーバーで同じNTPサーバーを使用できます。
-
リソースプールで複数の認証方法を使用することはサポートされていません。プール内の一部のホストでのみActive Directory認証を有効にして、ほかのホストで無効にすることはできません。
-
XenServerのActive Directory統合機能では、Active Directoryサーバーとの通信にKerberosプロトコルが使用されます。このため、XenServerでは、Kerberosプロトコルが無効なActive Directoryサーバーはサポートされていません。
-
Active Directoryを使用して正しく外部認証が行われるようにするには、XenServerホストの時計がActive Directoryサーバーと同期している必要があります。XenServerをActive Directoryドメインに追加するときに時計が同期しているかどうかがチェックされ、同期していないと認証に失敗します。
警告:
ホスト名は、63文字以下の英数字で指定します。ただし、数字のみのホスト名を使用しないでください。
最近のSSHクライアントの制限により、ユーザー名に次のいずれかの文字が含まれている場合、SSHは機能しません:
{}[]|&
。ユーザー名とActive Directoryサーバー名にこれらの文字が含まれていないことを確認してください。
Active Directory認証を有効にした後にプールにホストを追加すると、そのホスト上でActive Directoryを設定するように求めるメッセージが表示されます。追加するホストの資格情報の入力を求められるので、ホストをドメインに追加するための特権があるActive Directory資格情報入力します。
Active Directoryの統合
XenServerからドメインコントローラーへのアクセスが遮断されないように、以下のファイアウォールポートが送信トラフィック用に開放されていることを確認してください。
ポート | プロトコル | 使用目的 |
---|---|---|
53 | UDP/TCP | DNS |
88 | UDP/TCP | Kerberos 5 |
123 | UDP | NTP |
137 | UDP | NetBIOSネームサービス |
139 | TCP | NetBIOSセッション(SMB) |
389 | UDP/TCP | LDAP |
445 | TCP | SMB over TCP |
464 | UDP/TCP | マシンパスワードの変更 |
636 | UDP/TCP | LDAP over SSL |
3268 | TCP | グローバルカタログ検索 |
詳しくは、「XenServerが使用する通信ポート」を参照してください。
メモ:
- Linuxコンピューター上でiptablesを使用してファイアウォール規則を確認するには、次のコマンドを実行します:
iptables -nL
。
Winbind
XenServerでは、ADサーバーでActive Directory(AD)ユーザーを認証し、ADサーバーとの通信を暗号化するのにWinbindを使用します。
Winbindは、以下のシナリオをサポートしていません:
- ドメインユーザーまたはドメイングループ名の先頭または末尾のスペース。
- 64文字以上のドメインユーザー名。
- 特殊文字(+<>”=/%@:,;\`)を含むドメインユーザー名。
- 特殊文字(,;\`)を含むドメイングループ名。
Winbindの構成
/etc/xapi.conf
ファイルに含められる次の構成オプションを使用して、Winbindの動作を構成します:
-
winbind_machine_pwd_timeout
:このオプションの値により、このXenServerホストでのマシンパスワードのローテーション間隔(秒数)を定義します。値を整数として定義します。デフォルト値は1209600秒(14日)です。ドメインコントローラー間で新しいパスワードを同期する十分な時間を確保するためには、既定値をそのまま使用するか、既定値よりも値を小さくしないことをお勧めします。
-
winbind_kerberos_encryption_type
:このオプションの値はstrong、legacy、およびallです。デフォルト値はallです。-
値
all
は、次の暗号スイートを許可します:aes256-cts-hmac-sha1-96
、aes128-cts-hmac-sha1-96
、およびarcfour-hmac-md5
-
値
strong
は、次の暗号スイートを許可します:aes256-cts-hmac-sha1-96
およびaes128-cts-hmac-sha1-96
-
値
legacy
は、次の暗号スイートを許可します:arcfour-hmac-md5
legacyオプションは安全ではないため、問題のデバッグにのみ使用することをお勧めします。
セキュリティを向上させるために、AES暗号化を強制することをお勧めします。これを行うには、次のようにします。
- ドメインコントローラーが
aes256-cts-hmac-sha1-96
およびaes128-cts-hmacsha1-96
をサポートしていることを確認します。 -
ドメインの信頼の [ほかのドメインがKerberos AES暗号化をサポートする] が有効になるように、ドメインコントローラーを構成します。
詳しくは、Microsoftドキュメントの「方法3:RC4暗号化の代わりにAES 128およびAES 256暗号化をサポートする信頼を構成する」を参照してください。
- 値
strong
を使用するようにwinbind_kerberos_encryption_type
オプションを更新します。 -
ツールスタックを再起動します。
HAが有効になっている間はツールスタックを再起動しないでください。可能であれば、ツールスタックを再起動する前に、HAを一時的に無効にします。
-
-
winbind_cache_time
:Winbindでは、一部のドメイン情報がローカルにキャッシュされます。このオプションの値により、各キャッシュ更新の間の秒数を定義します。デフォルト値は60秒です。
これらの構成オプションのいずれかを更新したら、ツールスタックを再起動します。
XenServerによるActive Directory統合でのマシンアカウントパスワードの管理
Windowsクライアントマシンと同様に、Winbindでは、マシンアカウントパスワードが自動的に更新されます。Winbindは、14日ごとに、または構成オプションwinbind_machine_pwd_timeout
で指定されたとおりに、マシンアカウントのパスワードを自動的に更新します。
リソースプールの外部認証を有効にする
Active Directoryによる外部認証は、XenCenter、または以下のCLIコマンドを使用して設定します。
xe pool-enable-external-auth auth-type=AD \
service-name=full-qualified-domain \
config:user=username \
config:pass=password
<!--NeedCopy-->
指定されたユーザーにはAdd/remove computer objects or workstations
の特権が必要です。これはドメイン管理者のデフォルトです。
Active DirectoryおよびXenServerホストが使用するネットワークでDHCPを使用しない場合は、以下の方法でDNSを設定します。
-
非完全修飾ドメイン名エントリを解決できるように、ドメインのDNSサフィックスの検索順を設定します:
xe pif-param-set uuid=pif_uuid_in_the_dns_subnetwork \ "other-config:domain=suffix1.com suffix2.com suffix3.com" <!--NeedCopy-->
-
XenServerホスト上で使用するDNSを設定するには、次のコマンドを実行します。
xe pif-reconfigure-ip mode=static dns=dnshost ip=ip \ gateway=gateway netmask=netmask uuid=uuid <!--NeedCopy-->
-
DNSサーバーと同じネットワーク上にあるPIFを使用するように管理インターフェイスを手動で設定します:
xe host-management-reconfigure pif-uuid=pif_in_the_dns_subnetwork <!--NeedCopy-->
注:
外部認証はホストごとのプロパティです。ただし、プール単位で外部認証を有効または無効にすることをお勧めします。プール単位に設定すると、特定のホスト上で認証を有効にした場合に発生する障害にXenServerで対処できます。また、XenServerで、必要である可能性がある変更がロールバックされ、必ずプール全体にわたり一貫性のある構成となります。
host-param-list
コマンドを実行して、ホストの外部認証が有効かどうかを確認できます。
Active Directory認証を無効にするには、XenCenterを使用するか、次のxeコマンドを実行します:
xe pool-disable-external-auth
<!--NeedCopy-->
ユーザー認証
ほかの管理者ユーザーがXenServerホストにアクセスできるようにするには、そのユーザーまたはグループ用のサブジェクトを追加します(推移的グループメンバーシップも通常の方法でチェックされます。たとえば、グループA
にグループB
が含まれ、user 1
がグループB
のメンバーである場合に、グループA
のサブジェクトを追加すると、user 1
へのアクセスが許可されます)。Active Directoryでユーザー権限を管理する場合は、単一のグループを作成してから、そのグループのユーザーを追加または削除できます。または、XenServerで個々のユーザーを追加および削除することや、認証要件に応じてユーザーとグループの組み合わせを追加および削除することができます。次のセクションで説明するように、XenCenterから、またはCLIを使用して、サブジェクトリストを管理できます。
ユーザーを認証するとき、資格情報は最初にローカルルートアカウントと照合され、Active Directoryサーバーに障害が発生したシステムを回復できます。資格情報(ユーザー名とパスワード)が一致しない場合は、Active Directoryサーバーに対して認証要求が行われます。認証が成功すると、ユーザーの情報が取得され、ローカルのサブジェクトリストに対して検証されます。認証が失敗した場合、アクセスは拒否されます。サブジェクトリストでの検証は、そのユーザー、またはそのユーザーの推移的グループメンバシップのグループがリスト上に見つかると成功します。
注:
Active Directoryグループにプール管理者の役割を割り当ててホストへのSSHアクセスを許可する場合、そのADグループのユーザー数は500以下である必要があります。
Active DirectoryサブジェクトをXenServerに追加するには:
xe subject-add subject-name=entity_name
<!--NeedCopy-->
entity_nameは、アクセスを付与するユーザーまたはグループの名前です。明確にする必要がない限り、エンティティのドメインを含めることができますが(たとえば、 「user1」ではなく「xendt\user1」)、動作は同じです。
ユーザーのサブジェクト識別子を確認します。サブジェクト識別子は、ユーザー、またはそのユーザーが属しているグループの名前です。グループを削除すると、ユーザーが明示的に指定してある場合を除き、そのグループに属しているすべてのユーザーのアクセスが無効になります。ユーザーのサブジェクト識別子を確認するには、subject list
コマンドを使用します:
xe subject-list
<!--NeedCopy-->
このコマンドでは、すべてのユーザーの一覧が表示されます。
サブジェクトリストにフィルターを適用する場合、たとえば、testad
ドメイン内のユーザーuser1
のサブジェクト識別子を検索するには、次のコマンドを実行します:
xe subject-list other-config:subject-name='testad\user1'
<!--NeedCopy-->
取得したサブジェクト識別子を指定し、subject-remove
コマンドを使用してユーザーを削除します:
xe subject-remove subject-uuid=subject_uuid
<!--NeedCopy-->
このユーザーの実行中のセッションを終了できます。詳しくは、「CLIを使用してすべての認証済みセッションを終了するには」および「CLIを使用して特定ユーザーのセッションを終了するには」を参照してください。実行中のセッションを終了しないと、そのユーザーがセッションからログアウトするまでアクセスできてしまうことに注意してください。
XenServerのホストやリソースプールへのアクセスが許可されているユーザーやグループを確認するには、次のコマンドを実行します。
xe subject-list
<!--NeedCopy-->
ユーザーのアクセスを削除する
ユーザーが認証されると、そのセッションを終了するか、ほかの管理者がそのユーザーのセッションを終了するまで、ホストへのアクセスが保持されます。ユーザーをサブジェクトリストから削除したり、アクセスが付与されたグループから削除したりしても、実行中のセッションが無効になるわけではありません。ユーザーは、XenCenterまたは作成済みのほかのAPIセッションを使用して、引き続きプールにアクセスできます。XenCenterとCLIには、個々のセッション、またはアクティブなすべてのセッションを強制的に終了する機能が用意されています。XenCenterでこれを行う方法については、XenCenterのドキュメントを参照してください。次のセクションでは、CLIを使用する方法について説明します。
CLIを使用してすべての認証済みセッションを終了する
xeを使用してすべての認証済みセッションを終了するには、次のCLIコマンドを実行します:
xe session-subject-identifier-logout-all
<!--NeedCopy-->
CLIを使用して特定ユーザーのセッションを終了する
-
対象ユーザーのサブジェクト識別子を確認します。サブジェクト識別子を確認するには、
session-subject-identifier-list
またはsubject-list
xeコマンドを使用します。最初のコマンドは、セッションを持っているユーザーを表示します。2つ目のコマンドではすべてのユーザーが表示されますが、フィルターを適用できます。たとえば、xe subject-list other-config:subject-name=xendt\\user1
のようなコマンドを使用します。シェルによってはこのようにバックスラッシュを2つ入力します。 -
取得したサブジェクト識別子をパラメーターとして指定して、
session-subject-logout
コマンドを実行します。例:xe session-subject-identifier-logout subject-identifier=subject_id <!--NeedCopy-->
Active Directoryドメインからプールを削除する
警告:
ドメインからホストやプールを削除すると、Active Directoryの資格情報でログインした管理者ユーザーが切断されます。
プールでのActive Directory認証を無効にするには、XenCenterを使用してActive Directoryドメインからプールを削除します。詳しくは、XenCenterのドキュメントを参照してください。または、必要に応じてプールのUUIDを指定し、pool-disable-external-auth
コマンドを実行します。
注:
リソースプールをActive Directoryドメインから削除しても、Active Directoryデータベースからホストオブジェクトが削除されることはありません。無効になっているホストエントリを検出して削除する方法について詳しくは、Active Directoryのドキュメントを参照してください。