ユーザーとロールの管理
IBM Cloud® Databases for Redisインスタンスは認証を有効にし、Redisの組み込みアクセス制御を使用します。 Redis 5.x 以前では、単一の admin
ユーザーのみがサポートされます。 Redis 6 では、 アクセス制御リスト(ACL)サポートが導入されました。 複数のユーザーと認証を利用するには、アップグレードします。
Redisユーザーの管理
管理者ユーザー
IBM Cloudで新しいインスタンスをプロビジョニングすると、自動的にAdminユーザへのアクセスが与えられます。 Redis 5.x以前を使用している場合、インスタンスで使用できるユーザーはAdminユーザーのみです。 Redis 6.x以降を使用している場合は、Adminユーザーと、ユーザーと認証情報を作成する機能があります。
管理者ユーザーを使用してインスタンスに接続するには、最初に管理者パスワードを設定します。
UIで管理者パスワードを設定する
IBM Cloud Dashboardリソースリストからインスタンスを選択し、UIから管理者パスワードを設定します。 次に、 「設定」 を選択します。 次に、 *「データベース管理者パスワードの変更」*を選択します。
CLIでadminパスワードを設定する
Cloud Databases CLI プラグイン から cdb user-password
コマンドを使用して、 admin
パスワードを設定します。
例えば、インスタンスの管理者パスワードを設定するには、以下のコマンドを使用する:
ibmcloud cdb user-password <INSTANCE_NAME_OR_CRN> admin <NEWPASSWORD>
APIで管理者パスワードを設定する
サービスの「Overview Deployment Details」セクションに表示されるFoundation Endpointは、APIを通じてこのインスタンスにアクセスするためのベースURLを提供します。 これを 「指定されたユーザーのパスワードの設定」 エンドポイントとともに使用して、管理者パスワードを設定します。
curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \
default
ユーザー
ACL サポートが Redis 6に到着する前は、 default
ユーザーは広範な権限を持っており、 Cloud Databases および外部ユーザーが Databases for Redis インスタンスを管理するために内部で使用されていました。
Redis 6.xでは、 Databases for Redis は default
ユーザーを内部で使用しなくなりました。 代わりに、 Databases for Redis インスタンスは Cloud Databases ibm-user
によって管理されます。
ご使用のインスタンスが現在 default
ユーザー (Redis 5.x) を使用している場合は、 6.2などの新しいバージョンでも引き続き使用できます。 ただし、 v6.2 にアップグレードした後に default
ユーザーを引き続き使用するには、パスワードを変更する必要があります。これにより、許可が制限されることが予想されます。 これらの許可の制限は、メジャー・バージョン・アップグレードの一部として予期される動作変更です。
具体的には、 Redis v6.2: 以降では、 default
ユーザーに対して以下の権限が制限されています。
config
:default
ユーザーは、データベース構成を表示、追加、更新、または削除できません。 また、default
ユーザーは、データベース・ユーザーおよび役割を作成したり管理したりすることもできません。acl
:default
ユーザーは新規ユーザーを作成できません。
Redis 6.2 および default
ユーザーへのアップグレード
Redis 5 を使用している場合は、直接 Redis 6.2にアップグレードします。 アップグレード後、 default
ユーザーを使用してアプリケーションを徹底的にテストし、アプリケーションが完全に機能していることを確認します。 v6.2 にアップグレードし、引き続き default
ユーザーを使用するには、パスワードを変更する必要があります。
default
ユーザー・パスワードを更新するには、次のようなコマンドを使用します。
ibmcloud cdb deployment-user-password <INSTANCE_NAME_OR_CRN> default <NEW PASSWORD>
詳しくは、 新しいメジャー・バージョンへのアップグレードを参照してください。
Redisのロールの管理
役割ベースのアクセス制御 (RBAC)
役割ベースのアクセス制御 (RBAC) を使用すると、各ユーザーが持つアクセス・レベルを構成できます。
Databases for Redis は現在、以下の役割をサポートしています。
admin
ロールは、すべての管理コマンドおよび操作に対する完全な制御とアクセス権限を提供します。all
ロールは、admin
、read
、およびwrite
のアクセス権限を提供し、ユーザーがすべてのコマンドおよび操作を完全に制御できるようにします。read
役割は、コマンドへの読み取り専用アクセスを許可します。 この役割を持つユーザーは、読み取り操作を実行できますが、書き込み操作は実行できません。write
役割は、コマンドへの書き込み専用アクセスを許可します。 このロールを持つユーザーは、書き込み操作を実行できますが、読み取り操作は実行できません。
管理コマンド config get
、 config reset
、 acl whoami
、 acl cat
、 acl users
、 acl genpass
、 acl log
、および acl help
は admin
および all
で使用できますが、他のすべての acl
および config
コマンドは使用できません。
これらの役割を組み合わせて、ユーザーのアクセス・レベルを構成することもできます。
RBAC 役割の組み合わせ
+
に含まれるコマンド
-
はコマンドを除外します
+@
には、コマンド・カテゴリーが含ま
-@
はコマンド・カテゴリーを除外します
admin
+read
:read
操作を実行する機能を備えた完全なadmin
制御。admin
+write
:write
操作を実行する機能を備えた完全なadmin
制御。admin
+all
:all
を単純化します。これには、admin
、read
、およびwrite
が含まれます。read
+write
:read
とwrite
の両方の役割を持つユーザーは、read
とwrite
の両方の操作を実行できますが、管理特権は持ちません。read
+all
:all
を単純化します。これには、admin
、read
、およびwrite
が含まれます。write
+all
:all
を単純化します。これには、admin
、read
、およびwrite
が含まれます。admin
+read
+write
:read
とwrite
の両方の操作を実行できる完全なadmin
制御。admin
+read
+all
:all
(admin
、read
、およびwrite
を含む) に単純化します。admin
+write
+all
:all
(admin
、read
、およびwrite
を含む) に単純化します。read
+write
+all
:all
(admin
、read
、およびwrite
を含む) に単純化します。
これらの組み合わせは、さまざまなレベルのアクセス制御を提供します。 お客様固有の要件とセキュリティー上の考慮事項に合わせた組み合わせを選択してください。
API を使用した RBAC 役割を持つユーザーの作成
RBAC 役割を使用してユーザーを作成するには、次のようなコマンドを使用します。
Create User
POST /deployments/{id}/users/{user_type}
{
"user": {
"username": "#{USER}",
"password": "<PASSWORD>",
"role": "<+/-@all> <+/-@read> <+/-@write> <+/-@admin>"
}
}
CLI を使用した RBAC 役割を持つユーザーの作成
RBAC 役割を使用してユーザーを作成するには、次のようなコマンドを使用します。
ibmcloud cdb deployment-user-create <INSTANCE_NAME_OR_CRN> <USERNAME> <PASSWORD> -r "+@read +@write"
-r USER_ROLE
の場合は、 <+/-@all>
<+/-@read>
<+/-@write>
<+/-@admin>
の組み合わせを使用してアクセス権限を付与します。
タスクが終了したら、新しいユーザーの接続文字列を'ibmcloud cdb deployment-connections
コマンドで取得する。
Terraform を使用した RBAC 役割を持つユーザーの作成
RBAC 役割を使用してユーザーを作成するには、以下のような構成を使用します。
resource "ibm_database" "redis" {
name = "example-redis"
plan = "standard"
location = "us-south"
service = "databases-for-redis"
resource_group_id = data.ibm_resource_group.group.id
tags = ["tag1", "tag2"]
version = "6"
users {
name = "<user_name>"
password = "securepassword123"
role = "-@all +@read"
}
}
role
の場合は、 <+/-@all>
<+/-@read>
<+/-@write>
<+/-@admin>
の組み合わせを使用してアクセス権限を付与します。
Redis の役割
Admin ユーザーおよびインスタンス上の他のすべてのユーザーは、 Redis コマンドのセットに対する全アクセス権限を持ちます。ただし、サブコマンド config
および acl
は除きます。これには Admin ユーザーが含まれます。 config get
、 config reset
、 acl whoami
、 acl cat
、
acl users
、 acl genpass
、 acl log
、および acl help
が使用可能です。
Redis 6.x以降では、サービス・クレデンシャル、CLI、API、Redis 内の直接アクセスなど、作成したユーザはすべて同じアクセス権を持ちます。 Redis自体を使用して、特定のキーまたはキーの範囲に限定されたアクセスを持つユーザーまたはロールを作成することはできません。 ユーザーを管理する他のすべての手段により、クラスター全体での伝播が確実になります。
UIからユーザーを作成する
- サービスのダッシュボードに移動します。
- Service Credentials を選択します。
- New Credential を選択する。
- 新規資格情報にわかりやすい名前を選びます。
- (オプション) 新規資格情報でパブリック・エンドポイントまたはプライベート・エンドポイントのどちらを使用するかを指定します。 *「インラインの構成パラメーターの追加」*フィールドで
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
のいずれかを使用すると、指定したエンドポイントを使用した接続文字列を生成できます。 そのエンドポイントを使用することが強制されるわけではありません。 接続文字列に含まれるホスト名が制御されるだけです。 パブリック・エンドポイントはデフォルトで生成されます。 - Addをクリックして、新しいクレデンシャルをプロビジョニングする。 ユーザー名、パスワード、および関連ユーザーが自動生成されます。
新しい資格情報が表に表示されます。接続文字列は JSON として*「資格情報の表示」*のクリックしてコピーできるフィールドに表示されます。
API を使用したユーザーの作成
サービスの_概要_に表示される_Foundation Endpoint_は、APIを通じてこのインスタンスにアクセスするためのベースURLを提供します。 ユーザーを作成および管理するには、users エンドポイントを持つベースURLを使用します:
curl -X POST https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/{user_type} \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d "{"user": {"username": "user", "password": "v3ry-1-secUre-pAssword-2"}}" \
ユーザーの接続文字列を取得するには、基本 URL に /users/{userid}/connections
エンドポイントを付けて使用します。
内部ユーザー -Redis 6.x以降
インスタンスには4人の予約ユーザーがいます。 これらのユーザーを変更すると、インスタンスが不安定になったり、使用できなくなったりします。
ibm-user
- インスタンスを管理し、メトリクスを公開するための内部 'admin
ユーザー。replication-user
- レプリケーションに使用されるユーザー・アカウント。sentinel-user
- モニターおよびフェイルオーバーを処理するためのセンチネル用のユーザー・アカウント。admin
- インスタンスにアクセスするために提供されるデフォルト・ユーザー。