メインコンテンツまでスキップ
バージョン: 3.13

ユーザーの認証と認可

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

ScalarDB Cluster には、ユーザーを認証および認可するメカニズムがあります。

このガイドでは、ScalarDB Cluster で認証と認可を使用する方法について説明します。

概要

認証と認可を使用することで、ユーザーを作成し、その権限を付与または取り消すことができます。CREATE USER コマンドを使用してユーザーを作成し、GRANT コマンドまたは REVOKE コマンドを使用して、それぞれテーブルまたは名前空間に対する権限を付与または取り消すことができます。このようなデータ制御言語 (DCL) コマンドの詳細については、DCL を参照してください。

ユーザーは、必要な権限を持っている場合、ユーザー名とパスワードを使用して ScalarDB Cluster にログインし、SQL ステートメントを実行できます。

認証と認可では、次の 2 種類のユーザーがサポートされます。

  • スーパーユーザー: このタイプのユーザーにはすべての権限があります。スーパーユーザーのみが他のユーザーや名前空間を作成または削除できます。
  • 通常のユーザー: このタイプのユーザーには最初は権限がないため、スーパーユーザーまたは GRANT 権限を持つ別のユーザーによって権限を付与する必要があります。

認証と認可を使用する場合、次の権限が利用できます。

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • CREATE
  • DROP
  • TRUNCATE
  • ALTER
  • GRANT

権限の詳細については、各タイプの操作に必要な権限を参照してください。

構成

このセクションでは、認証と認可に使用できる構成について説明します。

ScalarDB Cluster ノードの構成

認証と認可を有効にするには、scalar.db.cluster.auth.enabledtrue に設定する必要があります。

名前説明デフォルト
scalar.db.cluster.auth.enabled認証と認可が有効かどうか。false

次の構成を設定することもできます。

名前説明デフォルト
scalar.db.cluster.auth.cache_expiration_time_millis認証および認可情報のキャッシュ有効期限(ミリ秒単位)。60000 (1 分)
scalar.db.cluster.auth.auth_token_expiration_time_minutes認証および認可トークンの有効期限(分単位)。1440 (1 日)
scalar.db.cluster.auth.auth_token_gc_thread_interval_minutes認証および認可トークンのガベージコレクション (GC) スレッド間隔 (分単位)。360(6 時間)
scalar.db.cluster.auth.pepperハッシュ化の前にパスワードに追加されるシークレットの値。指定しない場合、パスワードはペッパーなしでハッシュ化されます。
注記

認証と認可を有効にする場合は、認証と認可によって内部的にパーティション間スキャンが実行されるため、システム名前空間 (デフォルトでは scalardb) の scalar.db.cross_partition_scan.enabledtrue に設定する必要もあります。

ScalarDB Cluster Java Client SDK 構成

クライアント側で認証と認可を有効にするには、scalar.db.cluster.auth.enabledtrue に設定する必要があります。

名前説明デフォルト
scalar.db.cluster.auth.enabled認証と認可が有効かどうか。false

ScalarDB Cluster SQL クライアント構成 セクションの構成に加えて、クライアントのユーザー名とパスワードを指定するために scalar.db.sql.cluster_mode.usernamescalar.db.sql.cluster_mode.password も設定する必要があります。

名前説明デフォルト
scalar.db.sql.cluster_mode.usernameクライアントのユーザー名。
scalar.db.sql.cluster_mode.passwordクライアントのパスワード。

初期ユーザー

認証と認可を有効にすると、初期ユーザー admin が作成され、そのユーザーの初期パスワードは admin になります。このユーザーはスーパーユーザーであり、すべての権限を持ちます。このユーザーでログインし、必要に応じて他のユーザーを作成できます。

警告

セキュリティ上の理由から、特に実稼働環境にデプロイする前に、初期ユーザーのパスワードを必ず変更してください。

各タイプの操作に必要な権限

次の表は、各タイプの操作に必要な権限を示しています。

DDL

コマンドスーパーユーザーが必要です必要な権限
CREATE NAMESPACEtrue
DROP NAMESPACEtrue
CREATE TABLECREATE
DROP TABLEDROP
CREATE INDEXCREATE
DROP INDEXDROP
TRUNCATE TABLETRUNCATE
ALTER TABLEALTER
CREATE COORDINATOR TABLEStrue
DROP COORDINATOR TABLEStrue
TRUNCATE COORDINATOR TABLEStrue

DML

コマンドスーパーユーザーが必要です必要な権限
SELECTSELECT
INSERTINSERT
UPSERTINSERT
UPDATESELECTUPDATE
DELETESELECTDELETE

DCL

コマンドスーパーユーザーが必要です必要な権限
CREATE USERtrue
ALTER USERtrue (ユーザーは自分のパスワードを変更できます。)
DROP USERtrue
GRANTGRANT (ユーザーは自分が持っている権限のみを付与できます。)
REVOKEGRANT (ユーザーは自分が持っている権限のみを取り消すことができます。)

ワイヤ暗号化

ScalarDB Cluster は、トランスポート層セキュリティ (TLS) を使用したワイヤ暗号化もサポートしています。認証と認可を有効にする場合は、ユーザー資格情報を保護するために、運用環境でワイヤ暗号化を有効にすることを強くお勧めします。

このワイヤ暗号化機能では、次のものが暗号化されます:

  • ScalarDB Cluster ノードとクライアント間の通信。
  • すべての ScalarDB Cluster ノード間の通信 (クラスターの内部通信)。

この機能では、gRPC の TLS サポートが使用されます。詳細については、公式の gRPC セキュリティポリシー を参照してください。

構成

このセクションでは、ワイヤ暗号化に使用できる構成について説明します。

ScalarDB Cluster ノードの構成

ワイヤ暗号化を有効にするには、scalar.db.cluster.tls.enabledtrue に設定する必要があります。

名前説明デフォルト
scalar.db.cluster.tls.enabledワイヤ暗号化 (TLS) が有効かどうか。false

次の構成も設定する必要があります。

名前説明デフォルト
scalar.db.cluster.tls.ca_root_cert_pemTLS 通信用のカスタム CA ルート証明書 (PEM データ)。
scalar.db.cluster.tls.ca_root_cert_pathTLS 通信用のカスタム CA ルート証明書 (ファイルパス)。
scalar.db.cluster.tls.override_authorityTLS 通信のカスタム権限。これは、実際に接続されているホストを変更するものではありません。これはテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、scalar.db.cluster.node.tls.cert_chain_path に設定した証明書チェーンファイルで提示されるホスト名を指定できます。
scalar.db.cluster.node.tls.cert_chain_pathTLS 通信に使用される証明書チェーンファイル。
scalar.db.cluster.node.tls.private_key_pathTLS 通信に使用されるシークレット鍵ファイル。

証明機関 (CA) ルート証明書を指定するには、scalar.db.cluster.tls.ca_root_cert_pem または scalar.db.cluster.tls.ca_root_cert_path のいずれかを設定する必要があります。両方を設定すると、scalar.db.cluster.tls.ca_root_cert_pem が使用されます。

ScalarDB Cluster Java Client SDK 構成

クライアント側でワイヤ暗号化を有効にするには、scalar.db.cluster.tls.enabledtrue に設定する必要があります。

名前説明デフォルト
scalar.db.cluster.tls.enabledワイヤ暗号化 (TLS) が有効かどうか。false

次の構成も設定する必要があります。

名前説明デフォルト
scalar.db.cluster.tls.ca_root_cert_pemTLS 通信用のカスタム CA ルート証明書 (PEM データ)。
scalar.db.cluster.tls.ca_root_cert_pathTLS 通信用のカスタム CA ルート証明書 (ファイルパス)。
scalar.db.cluster.tls.override_authorityTLS 通信のカスタム権限。これは、実際に接続されているホストを変更するものではありません。これはテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、scalar.db.cluster.node.tls.cert_chain_path に設定した証明書チェーンファイルで提示されるホスト名を指定できます。

CA ルート証明書を指定するには、scalar.db.cluster.tls.ca_root_cert_pem または scalar.db.cluster.tls.ca_root_cert_path のいずれかを設定する必要があります。両方を設定すると、scalar.db.cluster.tls.ca_root_cert_pem が使用されます。