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 ユーザーを作成します。

手順

  1. Ceph Object Gateway の LDAP ユーザーを作成し、binddn を書き留めます。Ceph オブジェクトゲートウェイは ceph ユーザーを使用するため、ceph をユーザー名として使用することを検討してください。ユーザーに、ディレクトリーを検索するパーミッションが必要です。Ceph Object Gateway は、rgw_ldap_binddn での指定に従ってこのユーザーにバインドします。
  2. ユーザーの作成が正常に機能することをテストします。cephPeople の下のユーザー 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'
  3. 各ゲートウェイノードで、ユーザーのシークレットのファイルを作成します。たとえば、シークレットは /etc/bindpass という名前のファイルに保存される場合があります。セキュリティー上の理由から、このファイルの所有者を ceph ユーザーおよびグループに変更し、グローバルに読み取りができないようにします。
  4. rgw_ldap_secret オプションを追加します。

    構文

    ceph config set client.rgw OPTION VALUE

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_secret /etc/bindpass

  5. バインドパスワードファイルを 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 を使用するようにゲートウェイを設定

  1. 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"
  2. Ceph Object Gateway を再起動します。

    注記

    NAME 列の ceph orch ps コマンドの出力を使用して、SERVICE_TYPE.ID 情報を取得します。

    1. ストレージクラスター内の個別のノードで 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

    2. ストレージクラスター内のすべてのノードで 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 トークンとしてエクスポートします。

  1. アクセスキーをエクスポートします。

    構文

    export RGW_ACCESS_KEY_ID="USERNAME"

  2. シークレットキーをエクスポートします。

    構文

    export RGW_SECRET_ACCESS_KEY="PASSWORD"

  3. トークンをエクスポートします。LDAP の場合は、トークンタイプ (ttype) に ldap を使用します。

    radosgw-token --encode --ttype=ldap

    Active Directory の場合は、トークンタイプとして ad を使用します。

    radosgw-token --encode --ttype=ad

    結果として、アクセストークンである base-64 でエンコードされた文字列になります。このアクセストークンを、アクセスキーの代わりに S3 クライアントに提供します。シークレットキーは不要になりました。

  4. オプション:S3 クライアントが環境変数を使用している場合は、利便性を高めるために base-64 でエンコードされた文字列を環境変数 RGW_ACCESS_KEY_ID にエクスポートします。

    export RGW_ACCESS_KEY_ID="ewogICAgIlJHV19UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAibGRhcCIsCiAgICAgICAgImlkIjogImNlcGgiLAogICAgICAgICJrZXkiOiAiODAwI0dvcmlsbGEiCiAgICB9Cn0K"

5.4.8. S3 クライアントを使用した設定のテスト

Python Boto などのスクリプトを使用して、Ceph Object Gateway クライアントで設定をテストします。

手順

  1. RGW_ACCESS_KEY_ID 環境変数を使用して、Ceph Object Gateway クライアントを設定します。あるいは、Base-64 でエンコードされた文字列をコピーし、それをアクセスキーとして指定することもできます。以下は、設定された S3 クライアントの例です。

    cat .aws/credentials
    
    [default]
    aws_access_key_id = ewogICaGbnjlwe9UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAiYWQiLAogICAgICAgICJpZCI6ICJjZXBoIiwKICAgICAgICAia2V5IjogInBhc3M0Q2VwaCIKICAgIH0KfQo=
    aws_secret_access_key =

    注記

    シークレットキーは不要になりました。

  2. 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

  3. オプション: 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": []
    }