5.5. Ceph Object Gateway および OpenStack Keystone

ストレージ管理者は、OpenStack の Keystone 認証サービスを使用して、Ceph Object Gateway 経由でユーザーを認証することができます。Ceph Object Gateway を設定する前に、最初に Keystone を設定する必要があります。これにより、Swift サービスが有効になり、Keystone サービスが Ceph Object Gateway を指すようになります。次に、Ceph Object Gateway が Keystone サービスからの認証要求を受け入れるように設定する必要があります。

5.5.1. 前提条件

  • 実行中の Red Hat OpenStack Platform 環境
  • 稼働中の Red Hat Ceph Storage 環境
  • 実行中の Ceph Object Gateway 環境。

5.5.2. Keystone 認証用のロール

OpenStack Keystone サービスは、adminmember、および reader の 3 つのロールを提供します。これらのロールは階層的です。admin ロールを持つユーザーは、member ロールの機能を、member ロールを持つユーザーは reader ロールの機能を継承します。

注記

member ロールの読み取りパーミッションは、所属するプロジェクトのオブジェクトにのみ適用されます。

admin

admin ロールは、特定のスコープ内で最も高い承認レベルとして予約されます。これには通常、リソースまたは API のすべての作成、読み取り、更新、または削除操作が含まれます。

member

member ロールは、デフォルトでは直接使用されません。柔軟にデプロイメントでき、管理者の責務を軽減するのに役立ちます。

たとえば、デフォルトの member ロールと単純なポリシーオーバーライドを使用してデプロイメントのポリシーを上書きし、system member がサービスとエンドポイントを更新できるようにすることができます。これにより、adminreader ロール間の承認の階層ができます。

reader

reader ロールは、スコープに関係なく読み取り専用の操作向けに予約されます。

警告

reader を使用してイメージライセンスキー、管理イメージデータ、管理ボリュームメタデータ、アプリケーション認証情報、シークレットなどの機密情報にアクセスする場合は、意図せずに機密情報を公開する可能性があります。そのため、これらのリソースを公開する API は、reader ロールの影響を慎重に考慮し、member および admin ロールへの適切なアクセスを継承する必要があります。

5.5.3. Keystone 認証および Ceph Object Gateway

OpenStack Keystone を使用してユーザーを認証する組織では、Keystone と Ceph Object Gateway を統合することができます。Ceph Object Gateway は、ゲートウェイが Keystone トークンを受け入れ、ユーザーを認証して対応する Ceph Object Gateway ユーザーを作成できるようにします。Keystone がトークンを検証すると、ゲートウェイはユーザーが認証されたを見なします。

利点

  • Keystone を持つユーザーに adminmember、および reader のロールを割り当てます。
  • Ceph Object Gateway でのユーザーの自動作成
  • Keystone でのユーザーの管理
  • Ceph Object Gateway は Keystone に対して、取り消されたトークンのリストを定期的にクエリーします。

5.5.4. Swift サービスの作成

Ceph Object Gateway を設定する前に、Swift サービスを有効にして Ceph Object Gateway を指定するように Keystone を設定します。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph ソフトウェアリポジトリーへのアクセス。
  • OpenStack コントローラーノードへの root レベルのアクセス。

手順

  • Swift サービスを作成します。

    [root@swift~]# openstack service create --name=swift --description="Swift Service" object-store

    このサービスを作成すると、サービス設定がエコーされます。

    表5.1 例

    フィールド

    description

    Swift サービス

    enabled

    True

    id

    37c4c0e79571404cb4644201a4a6e5ee

    name

    swift

    type

    object-store

5.5.5. Ceph Object Gateway エンドポイントの設定

Swift サービスを作成したら、サービスを Ceph Object Gateway に指定します。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph ソフトウェアリポジトリーへのアクセス。
  • Red Hat OpenStack Platform 17 の環境で稼働している Swift サービス

手順

  • Ceph Object Gateway を指定する OpenStack エンドポイントを作成します。

    構文

    openstack endpoint create --region REGION_NAME swift admin "URL"
    openstack endpoint create --region REGION_NAME swift public "URL"
    openstack endpoint create --region REGION_NAME swift internal "URL"

    REGION_NAME は、ゲートウェイのゾーングループ名またはリージョン名に置き換えます。URL は、Ceph Object Gateway に適した URL に置き換えます。

    [root@osp ~]# openstack endpoint create --region us-west swift admin "http://radosgw.example.com:8080/swift/v1"
    [root@osp ~]# openstack endpoint create --region us-west swift public "http://radosgw.example.com:8080/swift/v1"
    [root@osp ~]# openstack endpoint create --region us-west swift internal "http://radosgw.example.com:8080/swift/v1"

    フィールド

    adminurl

    http://radosgw.example.com:8080/swift/v1

    id

    e4249d2b60e44743a67b5e5b38c18dd3

    internalurl

    http://radosgw.example.com:8080/swift/v1

    publicurl

    http://radosgw.example.com:8080/swift/v1

    region

    us-west

    service_id

    37c4c0e79571404cb4644201a4a6e5ee

    service_name

    swift

    service_type

    object-store

    エンドポイントを設定すると、サービスエンドポイントの設定が出力されます。

5.5.6. Openstack が Ceph Object Gateway エンドポイントを使用していることを確認

Swift サービスを作成し、エンドポイントを設定したら、すべての設定が正しいことを確認します。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph ソフトウェアリポジトリーへのアクセス。

手順

  1. Swift サービスの下のエンドポイントをリスト表示します。

    [root@swift~]# openstack endpoint list --service=swift
  2. 前のコマンドでリスト表示されたエンドポイントの設定を確認します。

    構文

    [root@swift~]# openstack endpoint show ENDPOINT_ID

    エンドポイントを表示すると、エンドポイントの設定とサービス設定が表示されます。

    表5.2 例

    フィールド

    adminurl

    http://radosgw.example.com:8080/swift/v1

    enabled

    True

    id

    e4249d2b60e44743a67b5e5b38c18dd3

    internalurl

    http://radosgw.example.com:8080/swift/v1

    publicurl

    http://radosgw.example.com:8080/swift/v1

    region

    us-west

    service_id

    37c4c0e79571404cb4644201a4a6e5ee

    service_name

    swift

    service_type

    object-store

関連情報

  • エンドポイントの詳細を取得する方法の詳細は、Red Hat OpenStack ガイドの エンドポイントの表示 を参照してください。

5.5.7. Keystone SSL を使用するように Ceph Object Gateway を設定

Keystone が使用する OpenSSL 証明書を変換すると、Ceph Object Gateway が Keystone と連携するように設定されます。Ceph Object Gateway が OpenStack の Keystone 認証と対話すると、Keystone は自己署名 SSL 証明書で終了します。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph ソフトウェアリポジトリーへのアクセス。

手順

  1. OpenSSL 証明書を nss db 形式に変換します。

    [root@osp ~]# mkdir /var/ceph/nss
    
    [root@osp ~]# openssl x509 -in /etc/keystone/ssl/certs/ca.pem -pubkey | \
        certutil -d /var/ceph/nss -A -n ca -t "TCu,Cu,Tuw"
    
    [root@osp ~]# openssl x509 -in /etc/keystone/ssl/certs/signing_cert.pem -pubkey | \
        certutil -A -d /var/ceph/nss -n signing_cert -t "P,P,P"

  2. Ceph Object Gateway を実行しているノードに Keystone の SSL 証明書をインストールします。設定可能な rgw_keystone_verify_ssl の値を false に設定します。

    rgw_keystone_verify_sslfalse に設定すると、ゲートウェイは証明書の検証を試行しません。

5.5.8. Keystone 認証を使用するように Ceph Object Gateway を設定

OpenStack の Keystone 認証を使用するように Red Hat Ceph Storage を設定します。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph ソフトウェアリポジトリーへのアクセス。
  • 実稼働環境への admin 権限がある。

手順

  1. 各ゲートウェイインスタンスで以下を行います。

    1. rgw_s3_auth_use_keystone オプションを true に設定します。

      [ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_keystone true

    2. nss_db_path 設定を、NSS データベースが保存されるパスに設定します。

      [ceph: root@host01 /]# ceph config set client.rgw nss_db_path "/var/lib/ceph/radosgw/ceph-rgw.rgw01/nss"

  2. 認証証明書を指定します。

    システム管理者が OpenStack サービスを設定する方法と同様に、OpenStack Identity API 用の Keystone サービステナント、ユーザー、およびパスワードを設定することができます。ユーザー名とパスワードを指定することで、共有の秘密を rgw_keystone_admin_token 設定に提供するのを防ぎます。

    重要

    Red Hat は、実稼働環境で管理トークンによる認証を無効にすることを推奨します。サービステナントの認証情報には、admin 権限が必要です。

    必要な設定オプションは以下のとおりです。

    構文

    ceph config set client.rgw rgw_keystone_url KEYSTONE_URL:ADMIN_PORT
    ceph config set client.rgw rgw_keystone_admin_user KEYSTONE_TENANT_USER_NAME
    ceph config set client.rgw rgw_keystone_admin_password KEYSTONE_TENANT_USER_PASSWORD
    ceph config set client.rgw rgw_keystone_admin_tenant KEYSTONE_TENANT_NAME
    ceph config set client.rgw rgw_keystone_accepted_roles KEYSTONE_ACCEPTED_USER_ROLES
    ceph config set client.rgw rgw_keystone_token_cache_size NUMBER_OF_TOKENS_TO_CACHE
    ceph config set client.rgw rgw_keystone_revocation_interval NUMBER_OF_SECONDS_BEFORE_CHECKING_REVOKED_TICKETS
    ceph config set client.rgw rgw_keystone_implicit_tenants TRUE_FOR_PRIVATE_TENANT_FOR_EACH_NEW_USER

    Ceph Object Gateway ユーザーは Keystone の tenant にマッピングされます。Keystone ユーザーには、複数のテナントで異なるロールが割り当てられている可能性があります。Ceph Object Gateway がチケットを取得する際には、テナントと、そのチケットに割り当てられたユーザーロールを確認し、設定可能な rgw_keystone_accepted_roles に従って要求を受け入れるか拒否します。

関連情報

5.5.9. Ceph Object Gateway デーモンの再起動

Ceph Object Gateway を再起動すると、アクティブな設定変更を行う必要があります。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph ソフトウェアリポジトリーへのアクセス。
  • 実稼働環境への admin 権限

手順

  • Ceph 設定ファイルを保存して各 Ceph ノードに分散したら、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