Ceph Object Gateway を使用した Keystone の使用ガイド

Red Hat Ceph Storage 4

OpenStack と Ceph Object Gateway がユーザー認証に Keystone を使用するように設定

Red Hat Ceph Storage Documentation Team

概要

本書では、OpenStack および Ceph Object Gateway がユーザー認証に Keystone を使用するように設定する方法を説明します。

第1章 Keystone 認証および Ceph Object Gateway

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

利点

  • Keystone でユーザーの管理
  • Ceph Object Gateway でのユーザーの自動作成
  • Ceph Object Gateway は Keystone に対して、取り消されたトークンの一覧を定期的にクエリーします。

第2章 Ceph Object Gateway 用 OpenStack の Keystone の設定

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

2.1. 前提条件

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

2.2. Swift サービスの作成

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

前提条件

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

手順

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

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

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

    表2.1 例

    フィールド

    description

    Swift サービス

    enabled

    True

    id

    37c4c0e79571404cb4644201a4a6e5ee

    name

    swift

    type

    object-store

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

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

前提条件

  • 稼働中の Red Hat Ceph Storage クラスター
  • Ceph ソフトウェアリポジトリーへのアクセス
  • Red Hat OpenStack Platform 13、15、または 16 の環境で稼働している Swift サービス

手順

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

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

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

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

前提条件

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

手順

  1. 構成ファイルの設定を確認します。
[root@swift~]# openstack endpoint show object-store

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

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

第3章 Ceph Object Gateway の設定

ストレージ管理者は、Keystone サービスからの認証要求を受け入れるように Ceph Object Gateway を設定する必要があります。

3.1. 前提条件

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

3.2. 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 ~]# mkdir /var/ceph/nss openssl x509 -in /etc/keystone/ssl/certs/ca.pem -pubkey | \
        certutil -d /var/ceph/nss -A -n ca -t "TCu,Cu,Tuw"
    [root@osp ~]# mkdir /var/ceph/nss 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 に設定すると、ゲートウェイは証明書の検証を試行しません。

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

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

前提条件

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

手順

  1. 管理ノードの Ceph 設定ファイルを編集します。
  2. [client.radosgw.INSTANCE_NAME] に移動します。ここで、INSTANCE_NAME は設定するゲートウェイインスタンスの名前です。
  3. 各ゲートウェイインスタンスで以下を行います。

    1. rgw_s3_auth_use_keystonetrue に設定します。
    2. nss_db_path 設定を、NSS データベースが保存されるパスに設定します。
  4. 認証証明書を指定します。

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

    重要

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

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

    rgw_keystone_admin_user = _KEYSTONE_TENANT_USER_NAME_
    rgw_keystone_admin_password = _KEYSTONE_TENANT_USER_PASSWORD_
    rgw_keystone_admin_tenant = _KEYSTONE_TENANT_NAME_

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

    通常の設定には、以下の設定があります。

    [client.radosgw.gateway]
    rgw_keystone_url = {keystone server url:keystone server admin port}
    ##Authentication using an admin token. Not preferred.
    #rgw_keystone_admin_token = {keystone admin token}
    ##Authentication using username, password and tenant. Preferred.
    rgw_keystone_admin_user = _KEYSTONE_TENANT_USER_NAME_
    rgw_keystone_admin_password =  _KEYSTONE_TENANT_USER_PASSWORD_
    rgw_keystone_admin_tenant =  _KEYSTONE_TENANT_NAME_
    rgw_keystone_accepted_roles = _KEYSTONE_ACCEPTED_USER_ROLES_
    ##
    rgw_keystone_token_cache_size = _NUMBER_OF_TOKENS_TO_CACHE_
    rgw_keystone_revocation_interval = _NUMBER_OF_SECONDS_BEFORE_CHECKING_REVOKED_TICKETS_
    rgw_keystone_make_new_tenants = _TRUE_FOR_PRIVATE_TENANT_FOR_EACH_NEW_USER_
    rgw_s3_auth_use_keystone = true
    nss_db_path = _PATH_TO_NSS_DB_

関連情報

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

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

前提条件

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

手順

  1. Ceph 設定ファイルを保存して各 Ceph ノードに分散したら、Ceph Object Gateway インスタンスを再起動します。
[root@ceph~]# systemctl restart ceph-radosgw
[root@ceph~]# systemctl restart ceph-radosgw@rgw.`hostname -s`

付録A Keystone の統合設定オプション

設定オプションは Keystone に統合できます。利用可能な Keystone 統合設定オプションの詳細は、以下を参照してください。

重要

Ceph 設定ファイルを更新したら、新しい Ceph 設定ファイルをストレージクラスター内の全 Ceph ノードにコピーする必要があります。

rgw_s3_auth_use_keystone

詳細
true に設定すると、Ceph Object Gateway は Keystone を使用してユーザーを認証します。
ブール値
デフォルト
false

nss_db_path

詳細
NSS データベースへのパス。
文字列
デフォルト
""

rgw_keystone_url

詳細
Keystone サーバーの管理 RESTful API の URL。
文字列
デフォルト
""

rgw_keystone_admin_token

詳細
管理リクエストのために Keystone の内部に設定されるトークンまたは共有シークレット。
文字列
デフォルト
""

rgw_keystone_admin_user

詳細
keystone 管理ユーザー名
文字列
デフォルト
""

rgw_keystone_admin_password

詳細
keystone 管理ユーザーのパスワード。
文字列
デフォルト
""

rgw_keystone_admin_tenant

詳細
keystone v2.0 用の Keystone 管理ユーザーテナント。
文字列
デフォルト
""

rgw_keystone_admin_project

詳細
keystone v3 の Keystone 管理ユーザープロジェクト。
文字列
デフォルト
""

rgw_keystone_admin_domain

詳細
Keystone 管理ユーザードメイン。
文字列
デフォルト
""

rgw_keystone_api_version

詳細
使用する Keystone API のバージョン。有効なオプションは 2 または 3 です。
整数
デフォルト
2

rgw_keystone_accepted_roles

詳細
要求を提供するのに必要なロール。
文字列
デフォルト
"Member, admin"

rgw_keystone_accepted_admin_roles

詳細
ユーザーが管理者権限を取得できるようにするロールの一覧。
文字列
デフォルト
""

rgw_keystone_token_cache_size

詳細
Keystone トークンキャッシュのエントリーの最大数。
整数
デフォルト
10000

rgw_keystone_revocation_interval

詳細
トークン失効チェックの間隔 (秒単位)。
整数
デフォルト
15 * 60

rgw_keystone_verify_ssl

詳細
true の場合、Ceph は Keystone の SSL 証明書を確認します。
ブール値
デフォルト
true

rgw_keystone_implicit_tenants

詳細
同じ名前の独自のテナントに新しいユーザーを作成します。ほとんどの場合は、true または false に設定します。以前のバージョンの Red Hat Ceph Storage との互換性を確保するには、これを s3 または swift に設定することもできます。これにより、ID 領域を分割し、指定されたプロトコルのみが暗黙的なテナントを使用します。Red Hat Ceph Storage の古いバージョンの一部は、Swift を使用する暗黙的なテナントのみをサポートします。
文字列
デフォルト
false

法律上の通知

Copyright © 2020 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.