Guanceデータ転送のためのDorisユーザー権限設定¶
Guanceデータ転送機能は、Apache Doris Stream Load方式でDorisデータベースにデータを書き込みます。データを正常にインポートするには、Doris内でGuance用に適切な権限を持つユーザーを作成する必要があります。
ご自身のロールを確認してください¶
お使いの環境に合った操作手順を選択してください。
- パスA:Doris管理者(
rootまたはADMIN権限を持つ)→ SQLで直接権限付与を実行 - パスB:管理者ではないため、DBA/運用担当者に依頼する必要がある → ワンクリックスクリプトをDBAに送信
前提条件¶
- 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プロトコルポート(デフォルト9030)を使用し、HTTPポート(8030)は使用しません。HTTPポートはStream Loadのデータインポートにのみ使用されます。
手順2:ターゲットデータベースを作成(存在しない場合)¶
手順3:専用ユーザーを作成¶
推奨事項
- ユーザー名には
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. ユーザーログインを確認¶
パスワードを入力して正常にログインできれば、ユーザー作成は成功です。
2. ユーザー権限を表示¶
期待される出力には以下が含まれます。
+--------------------------------------------------+
| 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"}'
期待される戻り値:
注意
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画面での確認を優先してください。
- Guanceコンソールにログイン → 管理 → データ転送 → ルールを作成
- 手順1:ルール名を入力
- 手順2:転送ルールを定義(オプション、例:フィルター条件)
- 手順3:
- アーカイブタイプに Apache Doris を選択
- 接続アドレスを入力(例:
192.168.1.1:8030) - データベース名を入力(例:
guance_data) - ユーザー名を入力(例:
guance_writer) - パスワードを入力
- ターゲットテーブル名を入力(例:
log_archive)
- 「接続テスト」ボタンをクリック
確認結果の判断:
| 表示 | 意味 | 次の手順 |
|---|---|---|
| 接続成功 | 権限とネットワークは正常 | ルール設定を続行 |
| 接続タイムアウト | ネットワーク不通またはポートエラー | ファイアウォールを確認、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:接続テストで「権限不足」と表示される¶
確認手順:
- Dorisで
SHOW GRANTS FOR 'guance_writer'@'%'を実行し、権限が付与されていることを確認 - 「自動テーブル作成」を使用する場合、
CREATE_PRIV権限が付与されていることを確認 - 「既存のテーブル」を使用する場合、そのテーブルに対して
INSERT_PRIVとLOAD_PRIV権限が付与されていることを確認 - Guance設定のデータベース名、テーブル名が権限付与対象と一致していることを確認
Q3:Stream Loadが「Fail」を返すが、権限は設定済み¶
確認手順:
- Doris BEノードにアクセス可能か確認(Stream LoadはFEからBEにリダイレクトされる)
- ターゲットテーブルが存在するか確認(自動テーブル作成シナリオでは、初回書き込み時に自動でテーブルが作成される)
- テーブルのフィールドタイプがデータと互換性があるか確認(厳格モードではタイプ不一致により失敗する)
- ラベルが重複していないか確認(同じラベルは24時間以内に再利用できない)
Q4:「自動テーブル作成」を使用する際にテーブル作成に失敗する¶
確認手順:
- ユーザーに
CREATE_PRIV権限があることを確認 - データベースが存在することを確認(
CREATE DATABASE IF NOT EXISTS) - テーブル名が衝突していないことを確認(システムは
CREATE TABLE IF NOT EXISTSを使用するため、既存のテーブルを上書きしない) - Dorisクラスターのディスク容量が十分にあることを確認
Q5:Guanceで「接続タイムアウト」と表示される¶
確認手順:
- Doris FEのHTTPアドレスとポート(8030)が正しく入力されていることを確認
- GuanceサービスからDorisへのネットワーク到達性を確認(ファイアウォール、セキュリティグループ、VPCピア接続など)
- 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'@'%' |