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を使用できました。
みなさん、こんにちは、ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J135303/


All Articles