7.6. ユーザー管理
Ceph Object Storage ユーザー管理とは、Ceph Storage Cluster のクライアントアプリケーションとしての Ceph Object Gateway ではなく、Ceph Object Storage サービスのクライアントアプリケーションであるユーザーを指します。クライアントアプリケーションが Ceph Object Gateway サービスと対話できるようにするには、ユーザー、アクセスキー、およびシークレットを作成する必要があります。
ユーザータイプが 2 つあります。
- User: user という用語は、S3 インターフェイスのユーザーを反映しています。
- Subuser: subuser という用語は、Swift インターフェイスのユーザーを反映しています。サブユーザーがユーザーに関連付けられています。
ユーザーとサブユーザーを作成、変更、表示、一時停止、および削除できます。
マルチサイトデプロイメントでユーザーを管理する場合は、常にマスターゾーングループのマスターゾーン内の Ceph Object Gateway ノードで radosgw-admin
コマンドを発行して、ユーザーがマルチサイトクラスター全体で同期するようにします。マルチサイトクラスター上のユーザーをセカンダリーゾーンまたはセカンダリーゾーングループから作成、変更、または削除しないでください。
ユーザーおよびサブユーザー ID の作成に加え、ユーザーの表示名およびメールアドレスを追加することができます。キーおよびシークレットを指定するか、キーおよびシークレットを自動的に生成できます。キーを生成または指定した際には、ユーザー ID が S3 キータイプに対応し、サブユーザー ID が Swift キータイプに対応することに注意してください。Swift キーには、アクセスレベルの read
、write
、readwrite
、および full
もあります。
ユーザー管理コマンドライン構文は、通常、パターン user COMMAND USER_ID
に従います。ここで、USER_ID
は、--uid=
オプションの後にユーザー ID (S3) が続くか、--subuser=
オプションの後にユーザー名 (Swift) が続きます。
構文
radosgw-admin user <create|modify|info|rm|suspend|enable|check|stats> <--uid=USER_ID|--subuser=SUB_USER_NAME> [other-options]
発行するコマンドによっては、追加のオプションが必要になる場合があります。
7.6.1. マルチテナンシー
Ceph Object Gateway は S3 および Swift API の両方に対するマルチテナンシーをサポートします。この場合、各ユーザーとバケットはテナント下に置かれます。マルチテナンシーは、複数のテナントが共通のバケット名 (例: test、main など) を使用している場合に、名前空間のクラッシュを防ぎます。
各ユーザーとバケットはテナントの下にあります。下位互換性のために、空の名前を持つレガシーテナントが追加されます。テナントを具体的に指定せずにバケットを参照する場合は常に、Swift API はレガシーテナントを想定します。既存のユーザーもレガシーテナントに保存されるため、以前のリリースと同様にバケットとオブジェクトにアクセスします。
このようなテナントの場合、テナント自体には何の操作もありません。ユーザーが管理されている場合には、必要に応じて表示および非表示になります。明示的なテナントを持つユーザーを作成、変更、および削除するには、追加のオプション --tenant
を指定するか、radosgw-admin
コマンドのパラメーターで構文 "TENANT$USER"
を使用します。
S3 用のユーザー testx$tester
を作成するには、以下のコマンドを実行します。
例
[root@host01 ~]# radosgw-admin --tenant testx --uid tester \ --display-name "Test User" --access_key TESTER \ --secret test123 user create
Swift のユーザー testx$tester
を作成するには、以下のコマンドのいずれかを実行します。
例
[root@host01 ~]# radosgw-admin --tenant testx --uid tester \ --display-name "Test User" --subuser tester:swift \ --key-type swift --access full subuser create [root@host01 ~]# radosgw-admin key create --subuser 'testx$tester:swift' \ --key-type swift --secret test123
明示的なテナントを持つサブユーザーは、シェルで引用する必要がありました。
7.6.2. ユーザーを作成します。
user create
コマンドを使用して S3-interface ユーザーを作成します。ユーザー ID と表示名を指定する必要があります。メールアドレスを指定することもできます。key または secret を指定しないと、radosgw-admin
によって自動的に生成されます。ただし、生成されたキー/シークレットのペアを使用しない場合は、キーやシークレットを指定できます。
構文
radosgw-admin user create --uid=USER_ID \ [--key-type=KEY_TYPE] [--gen-access-key|--access-key=ACCESS_KEY]\ [--gen-secret | --secret=SECRET_KEY] \ [--email=EMAIL] --display-name=DISPLAY_NAME
例
[root@host01 ~]# radosgw-admin user create --uid=janedoe --access-key=11BS02LGFB6AL6H1ADMW --secret=vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY --email=jane@example.com --display-name=Jane Doe
{ "user_id": "janedoe", "display_name": "Jane Doe", "email": "jane@example.com", "suspended": 0, "max_buckets": 1000, "auid": 0, "subusers": [], "keys": [ { "user": "janedoe", "access_key": "11BS02LGFB6AL6H1ADMW", "secret_key": "vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY"}], "swift_keys": [], "caps": [], "op_mask": "read, write, delete", "default_placement": "", "placement_tags": [], "bucket_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1}, "user_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1}, "temp_url_keys": []}
キーの出力を確認します。radosgw-admin
が JSON エスケープ (\
) 文字を生成することがあり、一部のクライアントは JSON エスケープ文字の処理方法を知りません。対処法には、JSON エスケープ文字 (\
) の削除、文字列の引用符でのカプセル化、キーの再生成、JSON エスケープ文字が含まれていないことの確認、またはキーとシークレットの手動指定が含まれます。
7.6.3. サブユーザーの作成
サブユーザー (Swift インターフェイス) を作成するには、ユーザー ID (--uid=USERNAME
)、サブユーザー ID、およびサブユーザーのアクセスレベルを指定する必要があります。key または secret を指定しないと、radosgw-admin
によって自動的に生成されます。ただし、生成されたキー/シークレットのペアを使用しない場合は、キーかシークレットまたはその両方を指定できます。
アクセス制御ポリシーも含まれるため、full
は readwrite
ではありません。
構文
radosgw-admin subuser create --uid=USER_ID --subuser=SUB_USER_ID --access=[ read | write | readwrite | full ]
例
[root@host01 ~]# radosgw-admin subuser create --uid=janedoe --subuser=janedoe:swift --access=full { "user_id": "janedoe", "display_name": "Jane Doe", "email": "jane@example.com", "suspended": 0, "max_buckets": 1000, "auid": 0, "subusers": [ { "id": "janedoe:swift", "permissions": "full-control"}], "keys": [ { "user": "janedoe", "access_key": "11BS02LGFB6AL6H1ADMW", "secret_key": "vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY"}], "swift_keys": [], "caps": [], "op_mask": "read, write, delete", "default_placement": "", "placement_tags": [], "bucket_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1}, "user_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1}, "temp_url_keys": []}
7.6.4. ユーザー情報の取得
ユーザーに関する情報を取得するには、user info
ユーザー ID (--uid=USERNAME
) を指定します。
例
[root@host01 ~]# radosgw-admin user info --uid=janedoe
テナントユーザーに関する情報を取得するには、ユーザー ID とテナントの名前の両方を指定します。
[root@host01 ~]# radosgw-admin user info --uid=janedoe --tenant=test
7.6.5. ユーザー情報の変更
ユーザーに関する情報を変更するには、ユーザー ID (--uid=USERNAME
) と変更する属性を指定する必要があります。変更は通常、キーとシークレット、電子メールアドレス、表示名、およびアクセスレベルに対して行われます。
例
[root@host01 ~]# radosgw-admin user modify --uid=janedoe --display-name="Jane E. Doe"
サブユーザーの値を変更するには、subuser modify
とサブユーザー ID を指定します。
例
[root@host01 ~]# radosgw-admin subuser modify --subuser=janedoe:swift --access=full
7.6.6. ユーザーの有効化および一時停止
ユーザーを作成すると、ユーザーはデフォルトで有効になります。ただし、ユーザー特権を一時停止して、後で再度有効にすることができます。ユーザーを一時停止するには、user suspend
とユーザー ID を指定します。
[root@host01 ~]# radosgw-admin user suspend --uid=johndoe
一時停止ユーザーを再度有効にするには、user enable
とユーザー ID を指定します。
[root@host01 ~]# radosgw-admin user enable --uid=johndoe
ユーザーを無効にすると、サブユーザーが無効になります。
7.6.7. ユーザーの削除
ユーザーを削除すると、ユーザーとサブユーザーはシステムから削除されます。ただし、必要に応じてサブユーザーのみを削除できます。ユーザー (およびサブユーザー) を削除するには、user rm
とユーザー ID を指定します。
構文
radosgw-admin user rm --uid=USER_ID[--purge-keys] [--purge-data]
例
[ceph: root@host01 /]# radosgw-admin user rm --uid=johndoe --purge-data
サブユーザーのみを削除するには、subuser rm
およびサブユーザー名を指定します。
例
[ceph: root@host01 /]# radosgw-admin subuser rm --subuser=johndoe:swift --purge-keys
オプションには以下が含まれます。
-
データのパージ:
--purge-data
オプションは、UID に関連付けられたすべてのデータをパージします。 -
キーのパージ:
--purge-keys
オプションは、UID に関連付けられたすべてのキーをパージします。
7.6.8. サブユーザーの削除
サブユーザーを削除すると、Swift インターフェイスへのアクセスが削除されます。ユーザーがシステムに残ります。サブユーザーを削除するには、subuser rm
およびサブユーザー ID を指定します。
構文
radosgw-admin subuser rm --subuser=SUB_USER_ID
例
[root@host01 /]# radosgw-admin subuser rm --subuser=johndoe:swift
オプションには以下が含まれます。
-
キーのパージ:
--purge-keys
オプションは、UID に関連付けられたすべてのキーをパージします。
7.6.9. ユーザーの名前を変更します。
ユーザーの名前を変更するには、radosgw-admin user rename
コマンドを使用します。このコマンドにかかる時間は、ユーザーが持つバケットおよびオブジェクトの数によって異なります。この数字が大きい場合、Red Hat は、screen
パッケージが提供する Screen
ユーティリティーでコマンドを使用することを推奨します。
前提条件
- 稼働中の Ceph クラスター。
-
Ceph Object Gateway を実行しているホストへの
root
またはsudo
アクセス。 - インストールされた Ceph Object Gateway。
手順
ユーザーの名前を変更します。
構文
radosgw-admin user rename --uid=CURRENT_USER_NAME --new-uid=NEW_USER_NAME
例
[ceph: root@host01 /]# radosgw-admin user rename --uid=user1 --new-uid=user2 { "user_id": "user2", "display_name": "user 2", "email": "", "suspended": 0, "max_buckets": 1000, "auid": 0, "subusers": [], "keys": [ { "user": "user2", "access_key": "59EKHI6AI9F8WOW8JQZJ", "secret_key": "XH0uY3rKCUcuL73X0ftjXbZqUbk0cavD11rD8MsA" } ], "swift_keys": [], "caps": [], "op_mask": "read, write, delete", "default_placement": "", "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": "rgw" }
ユーザーがテナント内にある場合は、ユーザー名とテナントの両方を指定します。
構文
radosgw-admin user rename --uid USER_NAME --new-uid NEW_USER_NAME --tenant TENANT
例
[ceph: root@host01 /]# radosgw-admin user rename --uid=test$user1 --new-uid=test$user2 --tenant test 1000 objects processed in tvtester1. Next marker 80_tVtester1_99 2000 objects processed in tvtester1. Next marker 64_tVtester1_44 3000 objects processed in tvtester1. Next marker 48_tVtester1_28 4000 objects processed in tvtester1. Next marker 2_tVtester1_74 5000 objects processed in tvtester1. Next marker 14_tVtester1_53 6000 objects processed in tvtester1. Next marker 87_tVtester1_61 7000 objects processed in tvtester1. Next marker 6_tVtester1_57 8000 objects processed in tvtester1. Next marker 52_tVtester1_91 9000 objects processed in tvtester1. Next marker 34_tVtester1_74 9900 objects processed in tvtester1. Next marker 9_tVtester1_95 1000 objects processed in tvtester2. Next marker 82_tVtester2_93 2000 objects processed in tvtester2. Next marker 64_tVtester2_9 3000 objects processed in tvtester2. Next marker 48_tVtester2_22 4000 objects processed in tvtester2. Next marker 32_tVtester2_42 5000 objects processed in tvtester2. Next marker 16_tVtester2_36 6000 objects processed in tvtester2. Next marker 89_tVtester2_46 7000 objects processed in tvtester2. Next marker 70_tVtester2_78 8000 objects processed in tvtester2. Next marker 51_tVtester2_41 9000 objects processed in tvtester2. Next marker 33_tVtester2_32 9900 objects processed in tvtester2. Next marker 9_tVtester2_83 { "user_id": "test$user2", "display_name": "User 2", "email": "", "suspended": 0, "max_buckets": 1000, "auid": 0, "subusers": [], "keys": [ { "user": "test$user2", "access_key": "user2", "secret_key": "123456789" } ], "swift_keys": [], "caps": [], "op_mask": "read, write, delete", "default_placement": "", "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": "rgw" }
ユーザーの名前が正常に変更されたことを確認します。
構文
radosgw-admin user info --uid=NEW_USER_NAME
例
[ceph: root@host01 /]# radosgw-admin user info --uid=user2
ユーザーがテナント内にある場合は、TENANT$USER_NAME 形式を使用します。
構文
radosgw-admin user info --uid= TENANT$USER_NAME
例
[ceph: root@host01 /]# radosgw-admin user info --uid=test$user2
関連情報
-
man ページの
screen(1)
7.6.10. キーの作成
ユーザーのキーを作成するには、key create
を指定する必要があります。ユーザーには、ユーザー ID と s3
キータイプを指定します。サブユーザーのキーを作成するには、サブユーザー ID と swift
キータイプを指定する必要があります。
例
[ceph: root@host01 /]# radosgw-admin key create --subuser=johndoe:swift --key-type=swift --gen-secret { "user_id": "johndoe", "rados_uid": 0, "display_name": "John Doe", "email": "john@example.com", "suspended": 0, "subusers": [ { "id": "johndoe:swift", "permissions": "full-control"}], "keys": [ { "user": "johndoe", "access_key": "QFAMEDSJP5DEKJO0DDXY", "secret_key": "iaSFLDVvDdQt6lkNzHyW4fPLZugBAI1g17LO0+87"}], "swift_keys": [ { "user": "johndoe:swift", "secret_key": "E9T2rUZNu2gxUjcwUBO8n\/Ev4KX6\/GprEuH4qhu1"}]}
7.6.11. アクセスキーの追加および削除
ユーザーおよびサブユーザーには、S3 インターフェイスおよび Swift インターフェイスを使用するためのアクセスキーが必要です。ユーザーまたはサブユーザーを作成し、アクセスキーおよびシークレットを指定しない場合、キーおよびシークレットが自動的に生成されます。キーを作成し、アクセスキーやシークレットを指定または生成することができます。アクセスキーおよびシークレットを削除することもできます。オプションには以下が含まれます。
-
--secret=SECRET_KEY
は、たとえば手動で生成されたシークレットキーを指定します。 -
--geen-access-key
は、ランダムなアクセスキーを生成します (デフォルトでは S3 ユーザー用)。 -
--geen-secret
は、ランダムな秘密鍵を生成します。 -
--key-type=KEY_TYPE
は、キータイプを指定します。オプションは swift および s3 です。
キーを追加するには、ユーザーを指定します。
例
[root@host01 ~]# radosgw-admin key create --uid=johndoe --key-type=s3 --gen-access-key --gen-secret
鍵とシークレットを指定することもできます。
アクセスキーを削除するには、ユーザーとキーを指定する必要があります。
特定ユーザーのアクセスキーを検索します。
例
[root@host01 ~]# radosgw-admin user info --uid=johndoe
アクセスキーは、出力の
"access_key"
値になります。例
[root@host01 ~]# radosgw-admin user info --uid=johndoe { "user_id": "johndoe", ... "keys": [ { "user": "johndoe", "access_key": "0555b35654ad1656d804", "secret_key": "h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q==" } ], ... }
前の手順のユーザー ID とアクセスキーを指定して、アクセスキーを削除します。
構文
radosgw-admin key rm --uid=USER_ID --access-key ACCESS_KEY
例
[root@host01 ~]# radosgw-admin key rm --uid=johndoe --access-key 0555b35654ad1656d804
7.6.12. 管理機能の追加および削除
Ceph Storage Cluster は、ユーザーが REST API を介して管理機能を実行できるようにする管理 API を提供します。デフォルトでは、ユーザーはこの API にアクセスできません。ユーザーが管理機能を実行できるようにするには、ユーザーに管理機能を提供します。
ユーザーに管理ケイパビリティーを追加するには、以下のコマンドを実行します。
構文
radosgw-admin caps add --uid=USER_ID--caps=CAPS
ユーザー、バケット、メタデータ、および使用状況 (使用率) に、読み取り、書き込み、またはすべての機能を追加できます。
構文
--caps="[users|buckets|metadata|usage|zone]=[*|read|write|read, write]"
例
[root@host01 ~]# radosgw-admin caps add --uid=johndoe --caps="users=*"
ユーザーから管理ケイパビリティーを削除するには、以下のコマンドを実行します。
例
[root@host01 ~]# radosgw-admin caps remove --uid=johndoe --caps={caps}