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