コンテンツにスキップ

Guanceデータ転送のためのDorisユーザー権限設定

Guanceデータ転送機能は、Apache Doris Stream Load方式でDorisデータベースにデータを書き込みます。データを正常にインポートするには、Doris内でGuance用に適切な権限を持つユーザーを作成する必要があります。

ご自身のロールを確認してください

お使いの環境に合った操作手順を選択してください。


前提条件

  • Apache Dorisクラスター(1.2.x以降)がデプロイされていること
  • ターゲットデータベース名(例:guance_data)が決定されていること
  • ターゲットテーブル名(例:log_archive、またはGuanceが自動作成)が決定されていること
  • Doris FEのHTTPポート(デフォルト8030)にGuanceサービスから到達可能であること

最小権限の説明

Guanceデータ転送のDorisユーザーには以下の権限が必要です。

権限 用途 必須か
INSERT_PRIV ターゲットテーブルへのデータ挿入 はい
LOAD_PRIV データ書き込み権限(Insert、Deleteなどを含む)。Stream Loadシナリオをカバー はい(INSERT_PRIVと同時に付与し、互換性を確保)
CREATE_PRIV 「自動テーブル作成」機能を使用する場合、テーブル作成が必要 自動テーブル作成シナリオでは必須
権限の関係

Doris公式ドキュメントでは、Stream Loadの最小権限はINSERT_PRIVと明記されています。LOAD_PRIVはより広範なデータ書き込み権限パッケージ(Insert、Deleteなどを含む)であり、同時に付与することで各バージョン間の互換性を確保します。CREATE_PRIVはGuanceが自動でテーブルを作成する場合にのみ必要です。


パスA:管理者による操作手順

手順1:Doris管理ノードに接続

MySQLクライアントを使用してDoris FE管理ポートに接続します。

mysql -h <Doris_FE_IP> -P 9030 -u root -p
注意

管理操作にはMySQLプロトコルポート(デフォルト9030)を使用し、HTTPポート(8030)は使用しません。HTTPポートはStream Loadのデータインポートにのみ使用されます。

手順2:ターゲットデータベースを作成(存在しない場合)

CREATE DATABASE IF NOT EXISTS guance_data;

手順3:専用ユーザーを作成

CREATE USER 'guance_writer'@'%' IDENTIFIED BY 'your_secure_password';
推奨事項
  • ユーザー名にはguanceプレフィックスを含め、用途を識別しやすくすることを推奨します。
  • パスワードは16文字以上で、大文字小文字、数字、特殊文字を含めることを推奨します。
  • '%'は任意のIPからの接続を許可します。送信元を制限する必要がある場合は、Guanceサービスの出口IPまたはネットワークセグメント(例:'guance_writer'@'10.0.0.%')に変更してください。

手順4:権限付与

シナリオA:「自動テーブル作成」を使用する場合(推奨)

Guanceはデータタイプに基づいてターゲットテーブルを自動的に作成します。データベースレベルの権限を付与する必要があります。

-- データベースレベルの権限を付与(テーブル作成、インポートを含む)
GRANT CREATE_PRIV, INSERT_PRIV, LOAD_PRIV ON guance_data.* TO 'guance_writer'@'%';

シナリオB:「既存のテーブル」を使用する場合

ターゲットテーブルは事前に作成済みです。テーブルレベルの書き込み権限のみを付与します。

-- テーブルレベルの権限を付与(インポート)
GRANT INSERT_PRIV, LOAD_PRIV ON guance_data.log_archive TO 'guance_writer'@'%';
注意

複数のテーブルに書き込む必要がある場合は、各テーブルに個別に権限を付与するか、guance_data.*を使用してデータベース全体に権限を付与してください。

手順5:権限を確認

1. ユーザーログインを確認

mysql -h <Doris_FE_IP> -P 9030 -u guance_writer -p

パスワードを入力して正常にログインできれば、ユーザー作成は成功です。

2. ユーザー権限を表示

SHOW GRANTS FOR 'guance_writer'@'%';

期待される出力には以下が含まれます。

+--------------------------------------------------+
| Grants for guance_writer@%                       |
+--------------------------------------------------+
| GRANT INSERT_PRIV, LOAD_PRIV ON guance_data.*    |
| GRANT CREATE_PRIV ON guance_data.*               |  -- 自動テーブル作成シナリオのみ
+--------------------------------------------------+

3. Stream Loadを確認(オプション)

curlを使用してStream Loadリクエストをシミュレートします(Guanceバックエンドの動作と同じ)。

curl --location-trusted -u guance_writer:your_secure_password \
  -H "label:test_guance_001" \
  -H "format:json" \
  -H "strip_outer_array:true" \
  -X PUT \
  http://<Doris_FE_IP>:8030/api/guance_data/log_archive/_stream_load \
  -d '{"host":"test","message":"hello"}'

期待される戻り値:

{
    "Status": "Success",
    "NumberLoadedRows": 1,
    "NumberFilteredRows": 0
}
注意

FailまたはLabel Already Existsが返された場合は、ネットワーク接続とラベルの一意性を確認してください。


パスB:DBA向けワンクリック権限付与スクリプト

Doris管理者でない場合は、以下のスクリプトを完全にコピーして、会社のDBAまたは運用担当者に送信し実行してもらってください。

-- ============================================
-- Guanceデータ転送 - Dorisユーザー権限付与スクリプト
--
-- DBAは実行後、以下の情報を申請者にフィードバックしてください。
--   1. ユーザーが作成されたことを確認:guance_writer
--   2. データベースが作成されたことを確認:guance_data(または申請者が指定したデータベース名)
--   3. FEのHTTPポート8030がGuanceサービスに開放されていることを確認
-- ============================================

-- 手順 1:データベースを作成(存在しない場合)
CREATE DATABASE IF NOT EXISTS guance_data;

-- 手順 2:専用ユーザーを作成(パスワードは強力なものに変更してください)
CREATE USER IF NOT EXISTS 'guance_writer'@'%' IDENTIFIED BY '強力なパスワードに置き換えてください';

-- 手順 3:権限付与
-- Guanceにテーブルを自動作成させる場合(推奨):
GRANT CREATE_PRIV, INSERT_PRIV, LOAD_PRIV ON guance_data.* TO 'guance_writer'@'%';

-- テーブルが既に存在し、書き込み権限のみ必要な場合(次の行のコメントを解除し、上の行をコメントアウト):
-- GRANT INSERT_PRIV, LOAD_PRIV ON guance_data.* TO 'guance_writer'@'%';

-- 手順 4:確認(オプション)
SHOW GRANTS FOR 'guance_writer'@'%';

DBA実行後の確認事項

  • ユーザー guance_writer が作成され、ロックされていないこと
  • データベース guance_data が存在すること
  • 権限が有効であること(SHOW GRANTS の出力に INSERT_PRIV, LOAD_PRIV が含まれていること)
  • Doris FE の HTTP ポート(8030)に Guanceサービスからネットワーク到達可能であること

確認方法(推奨:Guance画面)

手動のcurlではなく、Guance画面での確認を優先してください。

  1. Guanceコンソールにログイン → 管理 → データ転送 → ルールを作成
  2. 手順1:ルール名を入力
  3. 手順2:転送ルールを定義(オプション、例:フィルター条件)
  4. 手順3:
    • アーカイブタイプに Apache Doris を選択
    • 接続アドレスを入力(例:192.168.1.1:8030
    • データベース名を入力(例:guance_data
    • ユーザー名を入力(例:guance_writer
    • パスワードを入力
    • ターゲットテーブル名を入力(例:log_archive
  5. 「接続テスト」ボタンをクリック

確認結果の判断

表示 意味 次の手順
接続成功 権限とネットワークは正常 ルール設定を続行
接続タイムアウト ネットワーク不通またはポートエラー ファイアウォールを確認、8030ポートが開放されていることを確認
認証失敗 ユーザー名またはパスワードが間違っている パスワードに特殊文字が含まれていないか確認、ユーザーが存在することを確認
権限不足 INSERT_PRIV / LOAD_PRIV / CREATE_PRIV が不足している DBAに権限付与スクリプトを再実行してもらう
テーブルが存在しない 自動テーブル作成に失敗 ユーザーにCREATE_PRIV権限があることを確認、または「既存のテーブルを使用」に変更して手動でテーブルを作成

権限の取り消し(削除する場合)

-- すべての権限を取り消す
REVOKE ALL PRIVILEGES ON guance_data.* FROM 'guance_writer'@'%';

-- ユーザーを削除
DROP USER 'guance_writer'@'%';

よくある質問

Q1:接続テストで「認証失敗」と表示される

確認手順: 1. Guance設定のユーザー名、パスワードがDorisで作成したものと一致していることを確認 2. パスワードにエスケープ問題を引き起こす特殊文字(@#$など)が含まれていないことを確認(引用符で囲むか、使用を避けることを推奨) 3. ユーザーがロックされていないことを確認:

```sql
SELECT user, host, password_expired FROM mysql.user WHERE user='guance_writer';
```

Q2:接続テストで「権限不足」と表示される

確認手順

  1. Dorisで SHOW GRANTS FOR 'guance_writer'@'%' を実行し、権限が付与されていることを確認
  2. 「自動テーブル作成」を使用する場合、CREATE_PRIV 権限が付与されていることを確認
  3. 「既存のテーブル」を使用する場合、そのテーブルに対して INSERT_PRIVLOAD_PRIV 権限が付与されていることを確認
  4. Guance設定のデータベース名、テーブル名が権限付与対象と一致していることを確認

Q3:Stream Loadが「Fail」を返すが、権限は設定済み

確認手順

  1. Doris BEノードにアクセス可能か確認(Stream LoadはFEからBEにリダイレクトされる)
  2. ターゲットテーブルが存在するか確認(自動テーブル作成シナリオでは、初回書き込み時に自動でテーブルが作成される)
  3. テーブルのフィールドタイプがデータと互換性があるか確認(厳格モードではタイプ不一致により失敗する)
  4. ラベルが重複していないか確認(同じラベルは24時間以内に再利用できない)

Q4:「自動テーブル作成」を使用する際にテーブル作成に失敗する

確認手順

  1. ユーザーに CREATE_PRIV 権限があることを確認
  2. データベースが存在することを確認(CREATE DATABASE IF NOT EXISTS
  3. テーブル名が衝突していないことを確認(システムは CREATE TABLE IF NOT EXISTS を使用するため、既存のテーブルを上書きしない)
  4. Dorisクラスターのディスク容量が十分にあることを確認

Q5:Guanceで「接続タイムアウト」と表示される

確認手順

  1. Doris FEのHTTPアドレスとポート(8030)が正しく入力されていることを確認
  2. GuanceサービスからDorisへのネットワーク到達性を確認(ファイアウォール、セキュリティグループ、VPCピア接続など)
  3. Dorisが内部ネットワークにある場合、GuanceワークスペースがDorisと同じネットワーク環境にあるか、ネットワークが接続されていることを確認

最小権限クイックリファレンス

シナリオ 必要な権限 SQL例
自動テーブル作成 + 書き込み CREATE_PRIV, INSERT_PRIV, LOAD_PRIV GRANT CREATE_PRIV, INSERT_PRIV, LOAD_PRIV ON db.* TO 'user'@'%'
既存テーブルへの書き込みのみ INSERT_PRIV, LOAD_PRIV GRANT INSERT_PRIV, LOAD_PRIV ON db.table TO 'user'@'%'

参考ドキュメント


フィードバック

このページは役に立ちましたか?