5.4. Active Directory および Ceph Object Gateway の設定
Ceph Object Gateway ユーザーを認証するように Active Directory サーバーを設定するには、以下の手順を実施します。
5.4.1. Microsoft Active Directory の使用
Ceph Object Gateway の LDAP 認証は、Microsoft Active Directory を含む単純なバインド用に設定できる LDAP 準拠のディレクトリーサービスと互換性があります。Active Directory の使用は、Ceph Object Gateway が rgw_ldap_binddn
設定に設定されたユーザーとしてバインドし、LDAP を使用してセキュリティーを確保する RH Directory サーバーの使用と似ています。
Active Directory を設定するプロセスは基本的に LDAP および Ceph Object Gateway の設定 と同じですが、Windows 固有の使用方法がいくつかある可能性があります。
5.4.2. LDAPS の Active Directory の設定
Active Directory LDAP サーバーは、デフォルトで LDAP を使用するように設定されています。Windows Server 2012 以降では、Active Directory 証明書サービスを使用できます。Active Directory LDAP で使用する SSL 証明書を生成してインストールする手順は、MS TechNet の記事 LDAP over SSL (LDAPS) Certificate を参照してください。
ポート 636
が Active Directory ホストで開いていることを確認します。
5.4.3. ゲートウェイユーザーの有無の確認
ゲートウェイユーザーを作成する前に、Ceph Object Gateway にユーザーがまだ存在していないことを確認してください。
例
[ceph: root@host01 /]# radosgw-admin metadata list user
このユーザー名は、このユーザーリストには記載しないでください。
5.4.4. ゲートウェイユーザーの追加
LDAP ユーザーへの Ceph Object Gateway ユーザーを作成します。
手順
-
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 Object Gateway コンテナーにパッチし、Ceph Object Gateway 仕様を再適用します。
例
service_type: rgw service_id: rgw.1 service_name: rgw.rgw.1 placement: label: rgw extra_container_args: - -v - /etc/bindpass:/etc/bindpass
注記/etc/bindpass
は Red Hat Ceph Storage に自動的に同梱されないため、すべての Ceph Object Gateway インスタンスノードでコンテンツが利用可能であることを確認する必要があります。
5.4.5. Active Directory を使用するようにゲートウェイを設定
rgw_ldap_secret
の設定後に、以下のオプションを追加します。構文
ceph config set client.rgw OPTION VALUE
例
[ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_uri ldaps://_FQDN_:636 [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_binddn "_BINDDN_" [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_searchdn "_SEARCHDN_" [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_dnattr "cn" [ceph: root@host01 /]# ceph config set client.rgw 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 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.4.6. S3 ユーザーの LDAP サーバーへの追加
LDAP サーバーの管理コンソールで S3 ユーザーを少なくとも 1 つ作成し、S3 クライアントが LDAP ユーザーの認証情報を使用できるようにします。認証情報を S3 クライアントに渡すときに使用するユーザー名およびシークレットを書き留めておきます。
5.4.7. 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.4.8. S3 クライアントを使用した設定のテスト
Python Boto などのスクリプトを使用して、Ceph Object Gateway クライアントで設定をテストします。
手順
RGW_ACCESS_KEY_ID
環境変数を使用して、Ceph Object Gateway クライアントを設定します。または、base-64 でエンコードされた文字列をコピーし、アクセスキーとして指定することもできます。以下は、設定された S3 クライアントの例です。例
cat .aws/credentials [default] aws_access_key_id = ewogICaGbnjlwe9UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAiYWQiLAogICAgICAgICJpZCI6ICJjZXBoIiwKICAgICAgICAia2V5IjogInBhc3M0Q2VwaCIKICAgIH0KfQo= aws_secret_access_key =
注記シークレットキーは不要になりました。
aws s3 ls
コマンドを実行してユーザーを確認します。例
[root@host01 ~]# aws s3 ls --endpoint http://host03 2023-12-11 17:08:50 mybucket 2023-12-24 14:55:44 mybucket2
オプション:
radosgw-admin user
コマンドを実行して、ディレクトリー内のユーザーを確認することもできます。例
[root@host01 ~]# radosgw-admin user info --uid dir1 { "user_id": "dir1", "display_name": "dir1", "email": "", "suspended": 0, "max_buckets": 1000, "subusers": [], "keys": [], "swift_keys": [], "caps": [], "op_mask": "read, write, delete", "default_placement": "", "default_storage_class": "", "placement_tags": [], "bucket_quota": { "enabled": false, "check_on_raw": false, "max_size": -1, "max_size_kb": 0, "max_objects": -1 }, "user_quota": { "enabled": false, "check_on_raw": false, "max_size": -1, "max_size_kb": 0, "max_objects": -1 }, "temp_url_keys": [], "type": "ldap", "mfa_ids": [] }