11 コマンドラインによるユーザと役割の管理 #
このセクションでは、Cephダッシュボードによって使用されるユーザアカウントを管理する方法について説明します。これは、ユーザアカウントを作成または変更する場合や、適切なユーザ役割と許可を設定する場合に役立ちます。
11.1 パスワードポリシーの管理 #
デフォルトでは、次のチェックを含むパスワードポリシー機能が有効になっています。
パスワードはN文字より長いか。
古いパスワードと新しいパスワードは同じか。
次のコマンドにより、パスワードポリシー機能全体をON/OFFに切り替えることができます。
cephuser@adm >
ceph dashboard set-pwd-policy-enabled true|false
次のチェック項目を個別にON/OFFに切り替えることも可能です。
cephuser@adm >
ceph dashboard set-pwd-policy-check-length-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-oldpwd-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-username-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-exclusion-list-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-complexity-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-sequential-chars-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-repetitive-chars-enabled true|false
また、パスワードポリシーの動作設定に次のオプションを利用できます。
最小のパスワード長(デフォルトは8文字)。
cephuser@adm >
ceph dashboard set-pwd-policy-min-length N最低限のパスワードの複雑さ(デフォルトは10)。
cephuser@adm >
ceph dashboard set-pwd-policy-min-complexity Nパスワードの複雑さは、パスワードに含まれる各文字を分類することで算出されます。
パスワードに使用できない単語をカンマで区切ったリスト。
cephuser@adm >
ceph dashboard set-pwd-policy-exclusion-list word[,...]
11.2 ユーザアカウントの管理 #
Cephダッシュボードは、複数のユーザアカウントの管理をサポートしています。各ユーザアカウントは、ユーザ名、パスワード(bcrypt
を使用して暗号化された形式で保存)、オプションの名前、およびオプションの電子メールアドレスで構成されます。
ユーザアカウントはCeph Monitorの設定データベースに保存され、すべてのCeph Managerインスタンス間でグローバルに共有されます。
ユーザアカウントを管理するには、次のコマンドを使用します。
- 既存のユーザの表示
cephuser@adm >
ceph dashboard ac-user-show [USERNAME]- 新しいユーザの作成
cephuser@adm >
ceph dashboard ac-user-create USERNAME -i [PASSWORD_FILE] [ROLENAME] [NAME] [EMAIL]- ユーザの削除
cephuser@adm >
ceph dashboard ac-user-delete USERNAME- ユーザのパスワードの変更
cephuser@adm >
ceph dashboard ac-user-set-password USERNAME -i PASSWORD_FILE- ユーザの名前と電子メールの変更
cephuser@adm >
ceph dashboard ac-user-set-info USERNAME NAME EMAIL- ユーザの無効化
cephuser@adm >
ceph dashboard ac-user-disable USERNAME- ユーザの有効化
cephuser@adm >
ceph dashboard ac-user-enable USERNAME
11.3 ユーザの役割と許可 #
このセクションでは、ユーザの役割に割り当てることができるセキュリティスコープ、ユーザの役割を管理する方法、およびユーザの役割をユーザアカウントに割り当てる方法について説明します。
11.3.1 セキュリティスコープの定義 #
ユーザアカウントは、ユーザがダッシュボードのどの部分にアクセスできるかを定義する一連の役割に関連付けられます。ダッシュボードの各部分は、「セキュリティ」スコープ内でグループ化されます。セキュリティスコープは事前定義されていて静的です。現在のところ、次のセキュリティスコープを使用できます。
- hosts
- config-opt
Ceph設定オプションの管理に関連するすべての機能が含まれます。
- pool
プールの管理に関連するすべての機能が含まれます。
- osd
Ceph OSDの管理に関連するすべての機能が含まれます。
- monitor
Ceph Monitorの管理に関連するすべての機能が含まれます。
- rbd-image
RADOS Block Deviceイメージの管理に関連するすべての機能が含まれます。
- rbd-mirroring
RADOS Block Deviceのミラーリングの管理に関連するすべての機能が含まれます。
- iscsi
iSCSIの管理に関連するすべての機能が含まれます。
- rgw
Object Gatewayの管理に関連するすべての機能が含まれます。
- cephfs
CephFSの管理に関連するすべての機能が含まれます。
- manager (マネージャ)
Ceph Managerの管理に関連するすべての機能が含まれます。
- log
Cephのログの管理に関連するすべての機能が含まれます。
- grafana
Grafanaプロキシに関連するすべての機能が含まれます。
- prometheus
Prometheusアラート管理に関連するすべての機能が含まれます。
- dashboard-settings
ダッシュボードの設定を変更できます。
11.3.2 ユーザの役割の指定 #
「役割」は、「セキュリティスコープ」と一連の「許可」との間の一連のマッピングを指定するものです。許可には、「read」、「create」、「update」、および「delete」の4つのタイプがあります。
次の例では、ユーザがプールの管理に関連する機能に対して「read」許可と「create」許可を持ち、RBDイメージの管理に関連する機能に対して完全な許可を持つ役割を指定します。
{ 'role': 'my_new_role', 'description': 'My new role', 'scopes_permissions': { 'pool': ['read', 'create'], 'rbd-image': ['read', 'create', 'update', 'delete'] } }
ダッシュボードには、「システム役割」と呼ばれる、事前定義済みの一連の役割があらかじめ用意されています。これらの役割は、Cephダッシュボードを新規インストールした後ですぐに使用できます。
- 管理者
すべてのセキュリティスコープに対する完全な許可を提供します。
- 読み込み専用
ダッシュボード設定を除くすべてのセキュリティスコープの読み込み許可を提供します。
- block-manager
「rbd-image」、「rbd-mirroring」、および「iscsi」のスコープに対する完全な許可を提供します。
- rgw-manager
「rgw」スコープに対する完全な許可を提供します。
- cluster-manager
「hosts」、「osd」、「monitor」、「manager」、および「config-opt」のスコープに対する完全な許可を提供します。
- pool-manager
「pool」スコープに対する完全な許可を提供します。
- cephfs-manager
「cephfs」スコープに対する完全な許可を提供します。
11.3.2.1 カスタム役割の管理 #
次のコマンドを使用して、新しいユーザの役割を作成できます。
- 新規ロール(役割)を作成します:
cephuser@adm >
ceph dashboard ac-role-create ROLENAME [DESCRIPTION]- 役割の削除:
cephuser@adm >
ceph dashboard ac-role-delete ROLENAME- 役割へのスコープ許可の追加
cephuser@adm >
ceph dashboard ac-role-add-scope-perms ROLENAME SCOPENAME PERMISSION [PERMISSION...]- 役割からのスコープ許可の削除
cephuser@adm >
ceph dashboard ac-role-del-perms ROLENAME SCOPENAME
11.3.2.2 ユーザアカウントへの役割の割り当て #
役割をユーザに割り当てるには、次のコマンドを使用します。
- ユーザの役割の設定
cephuser@adm >
ceph dashboard ac-user-set-roles USERNAME ROLENAME [ROLENAME ...]- ユーザへの追加の役割の追加
cephuser@adm >
ceph dashboard ac-user-add-roles USERNAME ROLENAME [ROLENAME ...]- ユーザからの役割の削除
cephuser@adm >
ceph dashboard ac-user-del-roles USERNAME ROLENAME [ROLENAME ...]
カスタム役割を作成し、後でceph.purge
ランナを使ってCephクラスタを削除する場合、まずカスタム役割を消去する必要があります。詳細については、13.9項 「Cephクラスタ全体の削除」を参照してください。
11.3.2.3 例: ユーザとカスタム役割の作成 #
このセクションでは、RBDイメージの管理、Cephプールの表示と作成、および他のスコープへの読み込み専用アクセスを行うことができるユーザアカウントの作成手順について説明します。
tux
という名前の新しいユーザを作成します。cephuser@adm >
ceph dashboard ac-user-create tux PASSWORD役割を作成し、スコープ許可を指定します。
cephuser@adm >
ceph dashboard ac-role-create rbd/pool-managercephuser@adm >
ceph dashboard ac-role-add-scope-perms rbd/pool-manager \ rbd-image read create update deletecephuser@adm >
ceph dashboard ac-role-add-scope-perms rbd/pool-manager pool read create役割を
tux
ユーザに関連付けます。cephuser@adm >
ceph dashboard ac-user-set-roles tux rbd/pool-manager read-only
11.4 プロキシ設定 #
Cephダッシュボードへの固定URLを定めたい場合や、管理ノードへの直接接続を許可したくない場合は、プロキシを設定できます。このプロキシは受け取った要求現在をアクティブなceph-mgr
インスタンスへ自動的に転送します。
11.4.1 リバースプロキシによるダッシュボードへのアクセス #
リバースプロキシ設定を使用してダッシュボードにアクセスしている場合は、URLプレフィックスを使用してダッシュボードを提供しなければならないことがあります。ダッシュボードがプレフィックスを含むハイパーリンクを使用できるようにするには、url_prefix
設定を設定できます。
cephuser@adm >
ceph config set mgr mgr/dashboard/url_prefix URL_PREFIX
これにより、http://HOST_NAME:PORT_NUMBER/URL_PREFIX/
でダッシュボードにアクセスできます。
11.4.2 リダイレクションの無効化 #
CephダッシュボードがHAProxyのようなロードバランシングプロキシの背後にある場合、リダイレクション動作を無効化することで、内部URL(解決できないURL)がフロントエンドのクライアントに公開されないようにします。次のコマンドを使用することで、ダッシュボードがアクティブなダッシュボードへリダイレクトするのではなく、HTTPエラー(デフォルトでは500
)を返すようになります。
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_behaviour "error"
デフォルトのリダイレクション動作に設定をリセットするには、次のコマンドを使用します。
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_behaviour "redirect"
11.4.3 エラーステータスコードの設定 #
リダイレクション動作を無効化する場合、スタンバイダッシュボードのHTTPステータスコードをカスタマイズする必要があります。そのためには、次のコマンドを実行します。
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_error_status_code 503
11.4.4 HAProxyの設定例 #
以下に示す設定は、HAProxyを使用したTLS/SSLパススルーの例です。
この設定が効果を発揮する状況は次の通りです。ダッシュボードがフェールオーバーした際に、フロントエンドのクライアントはHTTPリダイレクト応答(303
)を受け取る可能性があります。この場合、クライアントは解決不能ホストにリダイレクトされてしまいます。
このような状況は、HAProxyの2つのヘルスチェック中にフェールオーバーが発生した場合に生じます。これは、それまでアクティブだったダッシュボードが、新しいアクティブノードをリダイレクト先とする303エラーで応答してしまうためです。このような状況を避けるため、スタンバイノードのリダイレクション動作を無効化することを検討する必要があります。
defaults log global option log-health-checks timeout connect 5s timeout client 50s timeout server 450s frontend dashboard_front mode http bind *:80 option httplog redirect scheme https code 301 if !{ ssl_fc } frontend dashboard_front_ssl mode tcp bind *:443 option tcplog default_backend dashboard_back_ssl backend dashboard_back_ssl mode tcp option httpchk GET / http-check expect status 200 server x HOST:PORT ssl check verify none server y HOST:PORT ssl check verify none server z HOST:PORT ssl check verify none
11.5 API要求の監査 #
CephダッシュボードのREST APIは、PUT、POST、およびDELETEの各要求をCeph監査ログに記録できます。ログはデフォルトでは無効ですが、次のコマンドで有効にできます。
cephuser@adm >
ceph dashboard set-audit-api-enabled true
ログが有効な場合、要求ごとに次のパラメータがログに記録されます。
- from
「https://[::1]:44410」などの要求の発信元。
- path
/api/auth
などのREST APIパス。- method
「PUT」、「POST」、または「DELETE」。
- user
ユーザの名前(または「None」)。
次に、ログエントリの例を示します。
2019-02-06 10:33:01.302514 mgr.x [INF] [DASHBOARD] \ from='https://[::ffff:127.0.0.1]:37022' path='/api/rgw/user/exu' method='PUT' \ user='admin' params='{"max_buckets": "1000", "display_name": "Example User", "uid": "exu", "suspended": "0", "email": "user@example.com"}'
要求ペイロード(引数とその値のリスト)のログは、デフォルトで有効になっています。これは、次のコマンドを使用して無効にできます。
cephuser@adm >
ceph dashboard set-audit-api-log-payload false
11.6 CephダッシュボードによるNFS Ganeshaの設定 #
Cephダッシュボードは、CephFSまたはObject Gatewayをバックストアとして使用するNFS Ganeshaエクスポートを管理できます。ダッシュボードはCephFSクラスタのRADOSオブジェクトに保存されたNFS Ganeshaの設定ファイルを管理します。NFS Ganeshaは設定の一部をCephクラスタに保存する必要があります。
NFS Ganeshaの設定オブジェクトの場所を設定するには、次のコマンドを実行します。
cephuser@adm >
ceph dashboard set-ganesha-clusters-rados-pool-namespace pool_name[/namespace]
これで、Cephダッシュボードを使用してNFS Ganeshaのエクスポートを管理できます。
11.6.1 複数のNFS Ganeshaクラスタの設定 #
Cephダッシュボードは、異なるNFS Ganeshaクラスタに属するNFS Ganeshaエクスポートの管理をサポートしています。各NFS Ganeshaクラスタの設定オブジェクトを異なるRADOSプール/ネームスペースに保存することをお勧めします。これは、設定を互いに分離するためです。
各NFS Ganeshaクラスタの設定の場所を指定するには、次のコマンドを使用します。
cephuser@adm >
ceph dashboard set-ganesha-clusters-rados-pool-namespace cluster_id:pool_name[/namespace](,cluster_id:pool_name[/namespace])*
Cluster_idは任意の文字列で、NFS Ganeshaクラスタを一意に識別します。
Cephダッシュボードと複数のNFS Ganeshaクラスタを設定した場合、エクスポートがどのクラスタに属しているかをWeb UIによって自動的に選択できるようになります。
11.7 デバッグ用プラグイン #
Cephダッシュボードのプラグインはダッシュボードの機能を拡張します。デバッグプラグインを使用すると、デバッグモードによってダッシュボードの動作をカスタマイズできるようになります。次のコマンドによって、デバッグモードの有効化、無効化、確認ができます。
cephuser@adm >
ceph dashboard debug status Debug: 'disabled'cephuser@adm >
ceph dashboard debug enable Debug: 'enabled'cephuser@adm >
dashboard debug disable Debug: 'disabled'
デフォルトでは、この機能は無効です。このモードは運用環境の展開に推奨される設定です。必要に応じて、再起動せずにデバッグモードを有効化できます。