5.3. LDAP および Ceph Object Gateway の設定
Ceph Object Gateway ユーザーを認証するように Red Hat Directory Server を設定するには、以下の手順を実施します。
5.3.1. Red Hat Directory Server のインストール
Java Swing GUI Directory および管理コンソールを使用するには、グラフィカルユーザーインターフェイス (GUI) を使用する Red Hat Enterprise Linux 8 に Red Hat Directory Server をインストールする必要があります。ただし、Red Hat Directory Server にはコマンドラインインターフェイス (CLI) から排他的にサービスを提供できます。
前提条件
- Red Hat Enterprise Linux (RHEL) がサーバーにインストールされている。
-
Directory Server ノードの FQDN は、DNS または
/etc/hosts
ファイルを使用して解決可能です。 - Directory Server ノードを Red Hat サブスクリプション管理サービスに登録します。
- お使いの Red Hat アカウントに有効な Red Hat Directory Server サブスクリプションが利用できます。
関連情報
- 詳細は、Red Hat Director Server インストールガイド を参照してください。
5.3.2. Directory Server ファイアウォールの設定
LDAP ホストで、LDAP クライアントが Directory Server にアクセスできるように、ファイアウォールが Directory Server のセキュアな (636
) ポートにアクセスできることを確認します。デフォルトのセキュアでないポート (389
) を閉じたままにしておきます。
# firewall-cmd --zone=public --add-port=636/tcp # firewall-cmd --zone=public --add-port=636/tcp --permanent
5.3.3. SELinux のラベルポート
SELinux が要求をブロックしないようにするには、SELinux のポートにラベルを付けます。詳細は、Red Hat Directory Server 10 のAdministration Guideの Changing Directory Server Port Numbers を参照してください。
5.3.4. LDAPS の設定
Ceph Object Gateway は単純な ID およびパスワードを使用して LDAP サーバーとの認証を行うため、接続には LDAP の SSL 証明書が必要です。LDAP 用 Directory Server を設定するには、Red Hat Directory Server 11 の Administration Guide で Configuring Secure Connections の章を参照してください。
LDAP が動作したら、Ceph Object Gateway サーバーが Directory Server の証明書を信頼するように設定します。
- LDAP サーバーの SSL 証明書に署名した認証局 (CA) の PEM 形式の証明書を抽出/ダウンロードします。
-
/etc/openldap/ldap.conf
にTLS_REQCERT
が設定されていないことを確認します。 -
/etc/openldap/ldap.conf
にTLS_CACERTDIR /etc/openldap/certs
設定が含まれていることを確認します。 certutil
コマンドを使用して、AD CA を/etc/openldap/certs
のストアに追加します。たとえば、CA が msad-frog-MSAD-FROG-CA で、PEM 形式の CA ファイルがldap.pem
の場合は、以下のコマンドを使用します。例
# certutil -d /etc/openldap/certs -A -t "TC,," -n "msad-frog-MSAD-FROG-CA" -i /path/to/ldap.pem
すべてのリモート LDAP サイトで SELinux を更新します。
例
# setsebool -P httpd_can_network_connect on
注記これは、SELinux が Permissive モードであっても、引き続き設定する必要があります。
certs
データベースを誰でも読めるようにします。例
# chmod 644 /etc/openldap/certs/*
root 以外のユーザーとして ldapwhoami コマンドを使用してサーバーに接続します。
例
$ ldapwhoami -H ldaps://rh-directory-server.example.com -d 9
-d 9
オプションは、SSL ネゴシエーションで何らかの問題が発生した場合にデバッグ情報を提供します。
5.3.5. ゲートウェイユーザーの有無の確認
ゲートウェイユーザーを作成する前に、Ceph Object Gateway にユーザーがまだ存在していないことを確認してください。
例
[ceph: root@host01 /]# radosgw-admin metadata list user
このユーザー名は、このユーザー一覧には記載しないでください。
5.3.6. ゲートウェイユーザーの追加
Ceph Object Gateway の LDAP ユーザーを作成し、binddn
を書き留めます。Ceph オブジェクトゲートウェイは ceph
ユーザーを使用するため、ceph
をユーザー名として使用することを検討してください。ユーザーに、ディレクトリーを検索するパーミッションが必要です。
Ceph Object Gateway は、rgw_ldap_binddn
で指定したようにこのユーザーにバインドします。
ユーザーの作成が正常に機能することをテストします。ceph
が People
の下のユーザー ID で、example.com
がドメインの場合は、ユーザーの検索を行うことができます。
# ldapsearch -x -D "uid=ceph,ou=People,dc=example,dc=com" -W -H ldaps://example.com -b "ou=People,dc=example,dc=com" -s sub 'uid=ceph'
各ゲートウェイノードで、ユーザーのシークレットのファイルを作成します。たとえば、シークレットは /etc/bindpass
という名前のファイルに保存されます。セキュリティー上の理由から、このファイルの所有者を ceph
ユーザーおよびグループに変更し、グローバルに読み取りができないようにします。
rgw_ldap_secret
オプションを追加します。
構文
ceph config set client.rgw OPTION VALUE
例
[ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_secret /etc/bindpass
更新された設定ファイルを各 Ceph ノードにコピーします。
構文
scp /etc/ceph/ceph.conf NODE:/etc/ceph
5.3.7. LDAP を使用するようにゲートウェイを設定
Ceph 設定ファイルの
[global]
セクションに、以下の設定を追加します。以下に例を示します。構文
[global] rgw_ldap_uri = ldaps://FQDN:636 rgw_ldap_binddn = "BINDING_DOMAIN" rgw_ldap_secret = "/etc/bindpass" rgw_ldap_searchdn = "SEARCH_DOMAIN" rgw_ldap_dnattr = "uid" rgw_s3_auth_use_ldap = true
rgw_ldap_uri
設定の場合は、FQDN
を LDAP サーバーの完全修飾ドメイン名に置き換えます。複数の LDAP サーバーがある場合には、各ドメインを指定します。rgw_ldap_binddn
設定の場合は、<binddn>
をバインドドメインに置き換えます。users
およびaccounts
の下にexample.com
のドメインおよびceph
ユーザーが使用されている場合には、以下のようになります。例
rgw_ldap_binddn = "uid=ceph,cn=users,cn=accounts,dc=example,dc=com"
rgw_ldap_searchdn
設定の場合は、<searchdn>
を検索ドメインに置き換えます。users
およびaccounts
の下にexample.com
のドメインおよびユーザーがある場合は、以下のようになります。例
rgw_ldap_searchdn = "cn=users,cn=accounts,dc=example,dc=com"
更新された設定ファイルを各 Ceph ノードにコピーします。
構文
scp /etc/ceph/ceph.conf HOSTNAME:/etc/ceph
Ceph Object Gateway を再起動します。
注記NAME
列のceph orch ps
コマンドの出力を使用して、SERVICE_TYPE.ID 情報を取得します。ストレージクラスター内の個別のノードで Ceph Object Gateway を再起動するには、以下を実行します。
構文
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
例
[root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
ストレージクラスター内のすべてのノードで Ceph Object Gateway を再起動するには、以下を実行します。
構文
ceph orch restart SERVICE_TYPE
例
[ceph: root@host01 /]# ceph orch restart rgw
5.3.8. カスタム検索フィルターの使用
rgw_ldap_searchfilter
設定を使用すると、ユーザーアクセスを制限するカスタム検索フィルターを作成できます。この設定は、Ceph 設定ファイル (/etc/ceph/ceph.conf
) の [global]
セクションに指定します。rgw_ldap_searchfilter
設定には、2 つの方法があります。
部分フィルターの指定
例
"objectclass=inetorgperson"
Ceph Object Gateway は、トークンのユーザー名および
rgw_ldap_dnattr
の値を使用して検索フィルターを生成します。構築されたフィルターは、rgw_ldap_searchfilter
の値の一部フィルターと組み合わされます。たとえば、ユーザー名と設定により、最終的な検索フィルターが生成されます。例
"(&(uid=joe)(objectclass=inetorgperson))"
ユーザー
joe
は、LDAP ディレクトリーで見つかった場合にのみアクセスが許可され、inetorgperson
のオブジェクトクラスがあり、有効なパスワードを指定します。Complete フィルターの指定
完全なフィルターには、認証の試行中にユーザー名に置き換えられる
USERNAME
トークンが含まれている必要があります。この場合、rgw_ldap_dnattr
設定は使用されません。たとえば、有効なユーザーを特定のグループに制限するには、以下のフィルターを使用します。例
"(&(uid=@USERNAME@)(memberOf=cn=ceph-users,ou=groups,dc=mycompany,dc=com))"
5.3.9. S3 ユーザーの LDAP サーバーへの追加
LDAP サーバーの管理コンソールで S3 ユーザーを少なくとも 1 つ作成し、S3 クライアントが LDAP ユーザーの資格情報を使用できるようにします。認証情報を S3 クライアントに渡すときに使用するユーザー名およびシークレットを書き留めておきます。
5.3.10. LDAP トークンのエクスポート
LDAP で Ceph Object Gateway を実行する場合は、アクセストークンのみが必要です。ただし、アクセストークンは、アクセスキーとシークレットキーから作成されます。アクセスキーとシークレットキーを LDAP トークンとしてエクスポートします。
アクセスキーをエクスポートします。
構文
export RGW_ACCESS_KEY_ID="USERNAME"
シークレットキーをエクスポートします。
構文
export RGW_SECRET_ACCESS_KEY="PASSWORD"
トークンをエクスポートします。LDAP の場合は、トークンタイプ (
ttype
) にldap
を使用します。例
radosgw-token --encode --ttype=ldap
Active Directory の場合は、トークンタイプとして
ad
を使用します。例
radosgw-token --encode --ttype=ad
結果として、アクセストークンである base-64 でエンコードされた文字列になります。このアクセストークンを、アクセスキーの代わりに S3 クライアントに提供します。シークレットキーは不要になりました。
オプション:S3 クライアントが環境変数を使用している場合は、利便性を高めるために base-64 でエンコードされた文字列を環境変数
RGW_ACCESS_KEY_ID
にエクスポートします。例
export RGW_ACCESS_KEY_ID="ewogICAgIlJHV19UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAibGRhcCIsCiAgICAgICAgImlkIjogImNlcGgiLAogICAgICAgICJrZXkiOiAiODAwI0dvcmlsbGEiCiAgICB9Cn0K"
5.3.11. S3 クライアントを使用した設定のテスト
Python Boto などの Ceph Object Gateway クライアントを選択します。RGW_ACCESS_KEY_ID
環境変数を使用するように設定します。base-64 でエンコードされた文字列をコピーし、アクセスキーとして指定できます。次に、Ceph クライアントを実行します。
シークレットキーは不要になりました。