Citrix XenServer Free:PAMおよびRBACによるHypervizorの強化

こんにちは、同僚。

XenServerは、現在最も人気のあるハイパーバイザーの1つです。

主に、「無料」で優れた機能を提供するためです。

したがって、エンタープライズ機能のない無料版では多くの決定が下されます。

また、「有料」チップの数には、ユーザー権利を区別する機能を備えたLDAPを使用した承認が含まれます。

はい、あなたは正しいと聞きました。 無料のXenServerでは、すべてのユーザーが平等です。 つまり、プール管理者の役割があります。

無料版でハイパーバイザーを「保護」する方法を考えてみましょう。









Citrixのポリシーに従って、FreeおよびAdvancedと呼ばれるXenServerバージョンは基本的にシングルユーザーです。 つまり、システムのすべてのユーザーは、XenAPIによってPoolAdminロールを持つユーザーとして認識されます。 これは、情報セキュリティの観点からハイパーバイザーにサービスを提供するプロセスに悪影響を及ぼします。

Enterpriseバージョンを購入せずにこの問題を解決するには、少なくとも2つの方法があります。

最初の、よりシンプルで理解しやすいものから始めましょう。



XenApiへのアクセス権を持つシステムのユーザーのサークルを制限します。

これを行うには、まずファイルを作成します。



[ root @ xenserver / ] #cd / etc /

[ root @ xenserverなど] #vi xapi_allow




その中に、ハイパーバイザーの管理を許可されているユーザーをリストします。





admin1

admin2

admin3




XenSourceの活動に感謝します。これは、ハイパーバイザーへのアクセスを制御するためのxapi PAMモジュールです。 しかし、デフォルトでは、システムで必要なものとは少し異なります。

したがって、そこからすべてのエントリを削除し、新しいエントリを追加します。



[ root @ xenserver / ] #cd /etc/pam.d/

[ root @ xenserver pam.d ] #vi xapi




#%PAM-1.0

authが必要pam_env.so

auth required pam_listfile.so item = user sense = allow file = / etc / xapi_allow

十分な認証pam_unix.so try_first_pass nullok

auth required pam_deny.so



アカウントが必要pam_unix.so



パスワードが必要pam_cracklib.so try_first_pass retry = 3

十分なパスワードpam_unix.so try_first_pass use_authtok nullok md5

パスワードが必要pam_deny.so



セッションオプションpam_keyinit.so revoke

セッションに必要なpam_limits.so

セッション[ 成功 = 1 デフォルト =無視] crond quiet use_uidのpam_succeed_if.soサービス

セッションが必要pam_unix.so





ここで、ユーザーがXenAPIに接続するには、ユーザーに関するレコードがxapi_allowファイルに含まれている必要があります。 これで、このファイルへのアクセスを制限する価値があります。



[ root @ xenserver / ] #chmod 600 / etc / xapi_allow




いいね! これで、ハイパーバイザーを制御したくないシステムのユーザーを「防ぐ」ことができます。 無料/高度なライセンスの下では、おそらくこれで十分です。

しかし、さらに先へ進むことができます。 RBACシステムの使用を有効にできます。 これを行うには、システムで外部認証を有効にする必要があります。 ここでライセンスの制限が発生し、LDAPに接続できません。 しかし、誰もPAMを介してこれを行うことを気にしません。



[ root @ xenserver / ] #xe pool-enable-external-auth auth-type = PAM service-name = pam




次に、ユーザーにロールを割り当てる必要があります。

しかし、残念ながら、無料/高度なライセンスではこれが許可されていません。

さて、ライセンスに違反することなくこれを実行してみましょう。



開始するには、すべての仮想マシンをオフにします。 後続の操作はそれらを損傷する可能性があります。

次に、サーバー上のロールの現在のリストを見つける必要があります。



[ root @ xenserver / ] #xe役割リスト

uuid RO :7955168d-7bec-10ed-105f-c6a7e6e63249

名前 RO :vm-power-admin

説明 RO :VM電源管理者の役割は、VMおよびテンプレート管理への完全なアクセス権を持ち、VMを開始する場所を選択し、動的メモリ制御およびVMスナップショット機能を使用できます





uuid RO :aaa00ab5- 7340 -bfbc-0d1b-7cf342639a6e

名前 RO :vm-admin

説明 RO :VM管理者ロールはVMとテンプレートを管理できます





uuid RO :fb8d4ff9-310c-a959-0613-54101535d3d5

名前 RO :vm-operator

説明 RO :VMオペレーターロールはVMを使用し、VMコンソールと対話できます





uuid RO :7233b8e3-eacb-d7da-2c95-f2e581cdbf4e

名前 RO :読み取り専用

説明 RO :読み取り専用ロールは、基本的な読み取り専用アクセスでログインできます





uuid RO :b9ce9791-0604-50cd-0649-09b3284c7dfd

名前 RO :プール演算子

説明 RO :プールオペレーターの役割は、ストレージのセットアップ、リソースプールの作成とパッチの管理、高可用性 HA およびワークロードバランシング WLB を含む、ホストおよびプール全体のリソースを管理します





uuid RO :0165f154-ba3e-034e-6b27-5d271af109ba

名前 RO :プール管理者

説明 RO :プール管理者の役割は、Dom0へのアクセス、サブジェクト、役割、外部認証の管理を含む、すべての機能と設定へのフルアクセス権




これらは、サーバーで使用できるロールです。

ユーザーエンティティを追加します。



[ root @ xenserver / ] #xe subject-addサブジェクト名= admin1

932d3540-d08c-bbf8-adf8-03c0f9aaaf43




そして、すべてが正しく行われ、新しいサブジェクトがデフォルトでプール管理者権限を受け取っていることを確認してください。



[ root @ xenserver / ] #xeサブジェクトリスト

uuid RO :932d3540-d08c-bbf8-adf8-03c0f9aaaf43

サブジェクト識別子 RO :u501

other-config MRO :サブジェクト名:admin1; subject-uid:u501; subject-gid:g501; subject-gecos:; サブジェクト表示名:admin1; subject-is-group: false ; subject-account-disabled: false ; subject-account-expired: false ; subject-account-locked: false ; subject-password-expired: false

ロール SRO :プール管理者





今、私たちは彼に必要な権利を設定する必要があります。 残念ながら、このツールはライセンスによってブロックされています。 しかし、 state.dbデータベースファイルを編集して「手動」でこれを行うことを気にする人はいません。

便利な方法として、説明したものと同様の「ミニ」プログラムを使用することをお勧めします

こっち

次に、手動で行う方法を説明します。 まず、XenAPIを停止します。



[ root @ xenserver /]#/etc/init.d/xapi stop




次に、お気に入りのエディターでファイル/var/xapi/state.dbを開きます。



[ root @ xenserver / ] #vi /var/xapi/state.db




ここで、「admin1」ファイル(追加したユーザーの名前)を検索します。 次の行に興味があります。



other_config = "(( 'subject-name' 'admin1')( 'subject-uid' 'u501')( 'subject-gid' 'g501')( 'subject-gecos' '')( 'subjec

t-displayname '' admin1 ')(' subject-is-group '' false ')(' subject-account-disabled '' false ')(' subject-account-expired '' false ')(' subject-account-ロックされた '

'false')( 'subject-password-expired' 'false')) " subject_identifier = " u501 " uuid = " 932d3540-d08c-bbf8-adf8-03c0f9aaaf43 " roles = "




ご覧のとおり、「roles =」セクションでロールを手動で変更することもできます。ユーザーロールを「pool-admin」から「read-only」に変更します。



roles = "( 'OpaqueRef:7233b8e3-eacb-d7da-2c95-f2e581cdbf4e')"




わかった 次に、XenAPIを実行し、結果を確認します。



[ root @ xenserver /]#/etc/init.d/xapi start

xapiの開始:.... 1日の開始が完了しました。 [ OK ]

[ root @ xenserver / ] #xeサブジェクトリスト

uuid RO :932d3540-d08c-bbf8-adf8-03c0f9aaaf43

サブジェクト識別子 RO :u501

other-config MRO :サブジェクト名:admin1; subject-uid:u501; subject-gid:g501; subject-gecos:; サブジェクト表示名:admin1; subject-is-group: false ; subject-account-disabled: false ; subject-account-expired: false ; subject-account-locked: false ; subject-password-expired: false

ロール SRO :読み取り専用



以上です。 仮想マシンを再起動できます。

したがって、ライセンスに違反することなく、PAMによる認証でRBACを使用できました。

みなさん、こんにちは、ご清聴ありがとうございました。



All Articles