6.2. Ceph ユーザー管理の背景
認証と承認を有効にして Ceph を実行する場合は、ユーザー名を指定する必要があります。ユーザー名を指定しない場合、Ceph は client.admin
管理ユーザーをデフォルトのユーザー名として使用します。
ユーザー名およびシークレットの再入力を避けるために、CEPH_ARGS
環境変数を使用できます。
Ceph クライアントのタイプ (ブロックデバイス、オブジェクトストア、ファイルシステム、ネイティブ API、Ceph コマンドラインなど) に関係なく、Ceph はすべてのデータをオブジェクトとしてプールに保存します。データの読み取りおよび書き込みを行うには、Ceph ユーザーはプールにアクセスできる必要があります。また、管理用 Ceph ユーザーには、Ceph の管理コマンドを実行するパーミッションが必要です。
Ceph ユーザー管理の概念は以下のとおりです。
ストレージクラスターユーザー
Red Hat Ceph Storage クラスターのユーザーは、個別またはアプリケーションです。ユーザーを作成することで、誰がストレージクラスター、そのプール、およびそれらのプール内のデータにアクセスできるかを制御することができます。
Ceph の概念にはユーザーの タイプ
があります。ユーザー管理の目的で、タイプは常に client
になります。Ceph は、ユーザータイプとユーザー ID で設定されるピリオド (.) で区切られたユーザーを識別します。たとえば、TYPE.ID
、client.admin
、client.user1
などです。ユーザーの入力は、Ceph Monitor および OSD も Cephx プロトコルを使用しますが、それらはクライアントではないために必要になります。ユーザータイプの分類することにより、クライアントユーザーと他のユーザーを区別でき、アクセス制御、ユーザーの監視および追跡可能性をさらに単純化します。
Ceph コマンドラインを使用すると、コマンドラインでの使用に応じて、タイプを使用せずにユーザーを指定できるため、Ceph のユーザータイプが混乱する場合があります。--user
または --id
を指定した場合は、タイプを省略できます。そのため、client.user1
は user1
として簡単に入力できます。--name
または -n
を指定する場合は、client.user1
などのタイプおよび名前を指定する必要があります。Red Hat は、可能な限り、タイプと名前をベストプラクティスとして使用することを推奨します。
Red Hat Ceph Storage クラスターユーザーは、Ceph Object Gateway ユーザーと同じではありません。オブジェクトゲートウェイは Red Hat Ceph Storage クラスターユーザーを使用してゲートウェイデーモンとストレージクラスター間の通信を行いますが、ゲートウェイにはエンドユーザー向けの独自のユーザー管理機能があります。
構文
DAEMON_TYPE 'allow CAPABILITY' [DAEMON_TYPE 'allow CAPABILITY']
Monitor Caps: モニターのケイパビリティーには、
r
、w
、x
、allow profile CAP
、およびprofile rbd
があります。例
mon 'allow rwx` mon 'allow profile osd'
OSD Caps: OSD ケイパビリティーには、
r
、w
、x
、class-read
、class-write
、profile osd
、profile rbd
、およびprofile rbd-read-only
があります。さらに OSD ケイパビリティーは、プールおよび namespace の設定も許可します。構文
osd 'allow CAPABILITY' [pool=POOL_NAME] [namespace=NAMESPACE_NAME]
Ceph Object Gateway デーモン (radosgw
) は Ceph ストレージクラスターのクライアントであるため、Ceph Storage クラスターデーモンタイプとしては表示されません。
以下のエントリーは、それぞれのケイパビリティーについて説明します。
| デーモンのアクセス設定の前に使用してください。 |
| ユーザーに読み取り権限を付与します。CRUSH マップを取得するためにモニターで必要です。 |
| ユーザーがオブジェクトへの書き込みアクセス権を付与します。 |
|
クラスメソッド (読み取りおよび書き込みの両方) をユーザーに呼び出し、モニターで |
|
クラスの読み取りメソッドを呼び出すケイパビリティーを提供します。 |
|
クラスの書き込みメソッドを呼び出すケイパビリティーを提供します。 |
| 特定のデーモンまたはプールに対する読み取り、書き込み、実行のパーミッション、および admin コマンドの実行権限をユーザーに付与します。 |
| OSD として他の OSD またはモニターに接続するためのパーミッションをユーザーに付与します。OSD がレプリケーションのハートビートトラフィックおよびステータス報告を処理できるようにするために OSD に付与されました。 |
| OSD のブートストラップ時にキーを追加するパーミッションを持つように、OSD をブートストラップするユーザーパーミッションを付与します。 |
| ユーザーに、Ceph ブロックデバイスへの読み取り/書き込み権限を付与します。 |
| ユーザーに、Ceph ブロックデバイスへの読み取り専用アクセス権を付与します。 |
プール
プールは Ceph クライアントのストレージストラテジーを定義し、そのストラテジーの論理パーティションとして機能します。
Ceph デプロイメントでは、さまざまな種類のユースケースをサポートするプールを作成することが一般的です。たとえば、クラウドボリュームまたはイメージ、オブジェクトストレージ、ホットストレージ、コールドストレージなど。OpenStack のバックエンドとして Ceph をデプロイする場合、標準的なデプロイメントにはボリューム、イメージ、バックアップと、client.glance
、client.cinder
などユーザーのプールが含まれます。
namespace
プール内のオブジェクトは、プール内のオブジェクトの論理グループである namespace に関連付けることができます。ユーザーのプールへのアクセスは、ユーザーによる読み書きが名前空間内でのみ行われるように、その名前空間と関連付けることができます。プール内の名前空間に書き込まれたオブジェクトには、その名前空間にアクセスできるユーザーのみがアクセスできます。
現在、名前空間は、librados
に記述されたアプリケーションにのみ役立ちます。ブロックデバイスやオブジェクトストレージなどの Ceph クライアントでは、この機能は現在サポートされていません。
名前空間の合理的な理由は、各プールが OSD にマッピングされる配置グループのセットを作成するため、プールはユースケース別にデータを分離するために計算量の多い方法になる可能性があるからです。複数のプールが同じ CRUSH 階層とルールセットを使用する場合、OSD のパフォーマンスは負荷の増加に応じて低下する可能性があります。
たとえば、プールには、OSD ごとに約 100 個の配置グループが必要です。そのため、1000 個 の OSD を持つ模範的なクラスターは、1 つのプールに対して 10 万個の配置グループを持つことになります。同じ CRUSH 階層とルールセットにマップされた各プールは、例示的なクラスターにさらに 10 万個の配置グループを作成します。一方、namespace にオブジェクトを書き込むと、別のプールの計算オーバーヘッドを排除して、namespace をオブジェクト名に関連付けられます。ユーザーまたはユーザーセットに個別のプールを作成するのではなく、名前空間を使用できます。
現時点では、librados
のみを使用できます。
関連情報
- 認証の使用に関する詳細は、Red Hat Ceph Storage Configuration Guide を参照してください。