IBM Cloud Docs
ユーザーとロールの管理

ユーザーとロールの管理

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 ロールは、 adminread 、および write のアクセス権限を提供し、ユーザーがすべてのコマンドおよび操作を完全に制御できるようにします。
  • read 役割は、コマンドへの読み取り専用アクセスを許可します。 この役割を持つユーザーは、読み取り操作を実行できますが、書き込み操作は実行できません。
  • write 役割は、コマンドへの書き込み専用アクセスを許可します。 このロールを持つユーザーは、書き込み操作を実行できますが、読み取り操作は実行できません。

管理コマンド config getconfig resetacl whoamiacl catacl usersacl genpassacl log、および acl helpadmin および all で使用できますが、他のすべての acl および config コマンドは使用できません。

これらの役割を組み合わせて、ユーザーのアクセス・レベルを構成することもできます。

RBAC 役割の組み合わせ

+ に含まれるコマンド

- はコマンドを除外します

+@ には、コマンド・カテゴリーが含ま

-@ はコマンド・カテゴリーを除外します

  • admin + read: read 操作を実行する機能を備えた完全な admin 制御。
  • admin + write: write 操作を実行する機能を備えた完全な admin 制御。
  • admin + all: all を単純化します。これには、 adminread、および write が含まれます。
  • read + write: readwrite の両方の役割を持つユーザーは、 readwrite の両方の操作を実行できますが、管理特権は持ちません。
  • read + all: all を単純化します。これには、 adminread、および write が含まれます。
  • write + all: all を単純化します。これには、 adminread、および write が含まれます。
  • admin + read + write: readwrite の両方の操作を実行できる完全な admin 制御。
  • admin + read + all: all( adminread、および write を含む) に単純化します。
  • admin + write + all: all( adminread、および write を含む) に単純化します。
  • read + write + all: all( adminread、および 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 getconfig resetacl whoamiacl catacl usersacl genpassacl log、および acl help が使用可能です。

Redis 6.x以降では、サービス・クレデンシャル、CLI、API、Redis 内の直接アクセスなど、作成したユーザはすべて同じアクセス権を持ちます。 Redis自体を使用して、特定のキーまたはキーの範囲に限定されたアクセスを持つユーザーまたはロールを作成することはできません。 ユーザーを管理する他のすべての手段により、クラスター全体での伝播が確実になります。

UIからユーザーを作成する

  1. サービスのダッシュボードに移動します。
  2. Service Credentials を選択します。
  3. New Credential を選択する。
  4. 新規資格情報にわかりやすい名前を選びます。
  5. (オプション) 新規資格情報でパブリック・エンドポイントまたはプライベート・エンドポイントのどちらを使用するかを指定します。 *「インラインの構成パラメーターの追加」*フィールドで { "service-endpoints": "public" } / { "service-endpoints": "private" } のいずれかを使用すると、指定したエンドポイントを使用した接続文字列を生成できます。 そのエンドポイントを使用することが強制されるわけではありません。 接続文字列に含まれるホスト名が制御されるだけです。 パブリック・エンドポイントはデフォルトで生成されます。
  6. 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- インスタンスにアクセスするために提供されるデフォルト・ユーザー。