5.4. Ceph キーリングの管理
ストレージ管理者として、Ceph ユーザーキーの管理は、Red Hat Ceph Storage クラスターにアクセスする際に重要です。キーリングを作成したり、キーリングにユーザーを追加したり、キーリングでユーザーを修正したりすることができます。
5.4.1. 前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ceph Monitor または Ceph クライアントノードへのアクセス
5.4.2. キーリングの作成
Ceph クライアントにユーザーキーを指定して、Ceph クライアントで、指定したユーザーのキーを取得して Ceph Storage Cluster で認証できるようにする必要があります。Ceph クライアントはキーリングにアクセスしてユーザー名を検索し、ユーザーのキーを取得します。
ceph-authtool
ユーティリティーを使用すると、キーリングを作成できます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- ノードへのルートレベルのアクセス。
手順
空のキーリングを作成するには、
--create-keyring
または-C
を使用します。例
[root@mon ~]# ceph-authtool --create-keyring /path/to/keyring
複数のユーザーでキーリングを作成する場合は、クラスター名を使用することが推奨されます。例えば、キーリングファイル名に
CLUSTER_NAME.keyring`
を指定し、/etc/ceph/
ディレクトリーに保存することで、Ceph 設定ファイルのローカルコピーで指定しなくても、キーリング
設定のデフォルト設定によりファイル名が指定されます。以下のコマンドを実行して
ceph.keyring
を作成します。[root@mon ~]# ceph-authtool -C /etc/ceph/ceph.keyring
1 人のユーザーでキーリングを作成する場合は、クラスター名、ユーザータイプ、およびユーザー名を使用して、/etc/ceph/
ディレクトリーに保存することが推奨されます。たとえば、client.admin
ユーザーの場合は ceph.client.admin.keyring
です。
/etc/ceph/
でキーリングを作成するには、root
として設定する必要があります。これは、そのファイルには root
ユーザーのみに rw
パーミッションが付与されることを意味し、キーリングに管理者キーが含まれている場合にはこれが適切です。ただし、特定のユーザーまたはユーザーグループにキーリングを使用する場合は、chown
または chmod
を実行して、適切なキーリングの所有権とアクセスを確立するようにしてください。
5.4.3. キーリングへのユーザーの追加
ユーザーを Ceph Storage クラスターに追加する際に、get
手順を使用してユーザー、キー、およびケイパビリティーを取得し、ユーザーをキーリングファイルに保存します。キーリングごとに 1 人のユーザーのみを使用する場合には、-o
オプションを使用した Ceph ユーザー情報の表示 手順により、出力がキーリングファイル形式で保存されます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- ノードへのルートレベルのアクセス。
手順
client.admin
ユーザーにキーリングを作成するには、以下を実行します。[root@mon ~]# ceph auth get client.admin -o /etc/ceph/ceph.client.admin.keyring
個々のユーザーに推奨されるファイル形式を使用することに注意してください。
ユーザーをキーリングにインポートする場合には、
ceph-authtool
を使用して、宛先キーリングとソースキーリングを指定することができます。[root@mon ~]# ceph-authtool /etc/ceph/ceph.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
5.4.4. キーリングを使用した Ceph ユーザーの作成
Ceph は、Red Hat Ceph Storage クラスターでユーザーを直接作成する機能を提供します。ただし、Ceph クライアントキーリングでユーザー、キー、およびケイパビリティーを直接作成することもできます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- ノードへのルートレベルのアクセス。
手順
ユーザーをキーリングにインポートします。
例
[root@mon ~]# ceph-authtool -n client.ringo --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.keyring
キーリングを作成し、キーリングに新規ユーザーを同時に追加します。
以下に例を示します。
[root@mon ~]# ceph-authtool -C /etc/ceph/ceph.keyring -n client.ringo --cap osd 'allow rwx' --cap mon 'allow rwx' --gen-key
前述のシナリオでは、新しいユーザー
client.ringo
はキーリングにのみ使用されます。新規ユーザーを Ceph Storage クラスターに追加するには、以下を実行します。
[root@mon ~]# ceph auth add client.ringo -i /etc/ceph/ceph.keyring
関連情報
- ケイパビリティーの詳細は、Ceph ユーザー管理の背景 を参照してください。
5.4.5. キーリングを使用した Ceph ユーザーの変更
コマンドラインインターフェイスを使用して、Ceph ユーザーとそのキーリングを変更することができます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- ノードへのルートレベルのアクセス。
手順
- キーリングでユーザーレコードのケイパビリティーを変更するには、キーリングを指定し、ユーザーがその後のケイパビリティーを指定します。以下に例を示します。
[root@mon ~]# ceph-authtool /etc/ceph/ceph.keyring -n client.ringo --cap osd 'allow rwx' --cap mon 'allow rwx'
- ユーザーを Red Hat Ceph Storage クラスターに更新するには、キーリングのユーザーを Red Hat Ceph Storage クラスターのユーザーエントリーに更新する必要があります。
[root@mon ~]# ceph auth import -i /etc/ceph/ceph.keyring
また、ストレージクラスターでユーザー機能を直接変更し、結果をキーリングファイルに保存してから、キーリングをメインの ceph.keyring
ファイルにインポートすることもできます。
関連情報
- キーリングから Red Hat Ceph Storage クラスターユーザーを更新する方法は、ユーザーの更新 を参照してください。
5.4.6. Ceph ユーザーのコマンドライン使用方法
Ceph では、ユーザー名およびシークレットについて、以下の用途がサポートされます。
--id
| --user
- 詳細
-
Ceph は、種別と ID を持つユーザーを識別します。たとえば、
TYPE.ID
またはclient.admin
、client.user1
です。id
オプション、name
オプション、および-n
オプションを使用すると、ユーザー名の ID 部分を指定できます。たとえば、admin
、user1
、foo
などです。--id
でユーザーを指定し、タイプを省略できます。たとえば、ユーザーclient.foo
を指定するには、次のコマンドを実行します。
[root@mon ~]# ceph --id foo --keyring /path/to/keyring health [root@mon ~]# ceph --user foo --keyring /path/to/keyring health
--name
| -n
- 詳細
-
Ceph は、種別と ID を持つユーザーを識別します。たとえば、
TYPE.ID
またはclient.admin
、client.user1
です。--name
オプションおよび-n
オプションを使用すると、完全修飾ユーザー名を指定できます。ユーザータイプ (通常はclient
) をユーザー ID で指定する必要があります。以下に例を示します。
[root@mon ~]# ceph --name client.foo --keyring /path/to/keyring health [root@mon ~]# ceph -n client.foo --keyring /path/to/keyring health
--keyring
- 詳細
-
1 つ以上のユーザー名およびシークレットが含まれるキーリングへのパス。
--secret
オプションは、同じ機能を提供しますが、別の目的で--secret
を使用する Ceph RADOS Gateway では機能しません。ceph auth get-or-create
でキーリングを取得して、ローカルに保存する場合があります。キーリングパスを切り替えなくてもユーザー名を切り替えることができるため、これは優先されます。以下に例を示します。
[root@mon ~]# rbd map foo --pool rbd myimage --id client.foo --keyring /path/to/keyring
5.4.7. Ceph ユーザー管理の制限
cephx
プロトコルは、Ceph クライアントとサーバーを相互に認証します。これは、人間のユーザーの認証や、ユーザーに代わって実行されるアプリケーションプログラムを扱うことを意図したものではありません。アクセス制御のニーズの処理に効果が必要な場合は、Ceph オブジェクトストアへのアクセスに使用されるフロントエンドに固有の別のメカニズムが必要です。この他のメカニズムは、Ceph がオブジェクトストアへのアクセスを許可するマシン上で、許容されるユーザーとプログラムのみが実行できるようにするロールを持っています。
Ceph クライアントおよびサーバーの認証に使用される鍵は、通常信頼できるホストの適切なパーミッションを持つプレーンテキストファイルに保存されます。
プレーンテキストファイルにキーを保存するにはセキュリティー上の欠陥がありますが、Ceph がバックグラウンドで使用する基本的な認証方法により、その回避は困難です。Ceph システムを構築する方は、これらの欠点を認識しておく必要があります。
特に、任意のユーザーマシン (特にポータブルマシン) は Ceph と直接対話するように設定することはできません。これは、このようなモードにはセキュアでないマシンにプレーンテキスト認証キーのストレージが必要になるためです。そのマシンを盗んだ者や秘密のアクセス権を得た者は、自分のマシンを Ceph に認証させる鍵を手に入れることができます。
潜在的にセキュアでないマシンが Ceph オブジェクトストアに直接アクセスできるようにするのではなく、目的のために十分なセキュリティーを提供する方法を使用して、環境内の信頼済みマシンにログインする必要があります。信頼されるマシンには、ユーザー用のプレーンテキストの Ceph キーが保存されます。Ceph の今後のバージョンでは、これらの特定の認証に関する問題に対処する場合があります。
現時点では、Ceph 認証プロトコルのいずれの場合でも、転送中のメッセージの機密性は提供されていません。このように、ネットワーク上の盗聴者は、たとえ作成や変更ができなくても、Ceph 内のクライアントとサーバーとの間で送信されるすべてのデータを聞いて理解することができます。Ceph に機密データを保存する場合には、Ceph システムにデータを提供する前に、データを暗号化する必要があります。
例えば、Ceph Object Gateway は S3 API サーバー側暗号化 を提供しており、Ceph Object Gateway クライアントから受け取った未暗号化のデータを暗号化してから Ceph Storage クラスターに保存し、同様に Ceph Storage クラスターから取得したデータを復号してからクライアントに送信します。クライアントと Ceph Object Gateway 間の移行で暗号化を確実に行うために、Ceph Object Gateway は SSL を使用するように設定する必要があります。