Privilege FAQ
必要なロールがユーザーに割り当てられているにもかかわらず、「no permission」というエラーメッセージが報告されるのはなぜですか?
このエラーは、ロールがアクティブ化されていない場合に発生することがあります。select current_role(); を実行して、現在のセッションでユーザーにアクティブ化されているロールを確認できます。必要なロールがアクティブ化されていない場合は、SET ROLE を実行してこのロールをアクティブ化し、このロールを使用して操作を行ってください。
ログイン時にロールを自動的にアクティブ化したい場合、user_admin ロールは SET DEFAULT ROLE または ALTER USER DEFAULT ROLE を実行して、各ユーザーのデフォルトロールを設定できます。デフォルトロールが設定されると、ユーザーがログイ ンしたときに自動的にアクティブ化されます。
すべてのユーザーに割り当てられたすべてのロールをログイン時に自動的にアクティブ化したい場合は、次のコマンドを実行できます。この操作には、システムレベルでの OPERATE 権限が必要です。
SET GLOBAL activate_all_roles_on_login = TRUE;
しかし、潜在的なリスクを防ぐために、権限が制限されたデフォルトロールを設定する「最小権限」の原則に従うことをお勧めします。例えば:
- 一般ユーザーは、SELECT 権限のみを持つ
read_onlyロールをデフォルトロールとして設定し、ALTER、DROP、INSERT などの権限を持つロールをデフォルトロールとして設定しないようにします。 - 管理者は、
db_adminロールをデフォルトロールとして設定し、ノードの追加や削除の権限を持つnode_adminロールをデフォルトロールとして設定しないようにします。
このアプローチは、ユーザーに適切な権限を持つロールを割り当 てるのに役立ち、意図しない操作のリスクを軽減します。
GRANT を実行して、必要な権限やロールをユーザーに割り当てることができます。
データベース内のすべてのテーブルに対する権限をユーザーに付与しました(GRANT ALL ON ALL TABLES IN DATABASE <db_name> TO USER <user_identity>;)が、ユーザーがデータベース内でテーブルを作成できません。なぜですか?
データベース内でテーブルを作成するには、データベースレベルの CREATE TABLE 権限が必要です。この権限をユーザーに付与する必要があります。
GRANT CREATE TABLE ON DATABASE <db_name> TO USER <user_identity>;
データベースに対するすべての権限をユーザーに付与しました(GRANT ALL ON DATABASE <db_name> TO USER <user_identity>;)が、ユーザーがこのデータベースで SHOW TABLES; を 実行しても何も返されません。なぜですか?
SHOW TABLES; は、ユーザーが何らかの権限を持っているテーブルのみを返します。ユーザーがテーブルに対して権限を持っていない場合、そのテーブルは返されません。このデータベース内のすべてのテーブルに対して(例えば SELECT を使用して)ユーザーに何らかの権限を付与できます。
GRANT SELECT ON ALL TABLES IN DATABASE <db_name> TO USER <user_identity>;
上記のステートメントは、v3.0 より前のバージョンで使用されていた GRANT select_priv ON db.* TO <user_identity>; と同等です。
StarRocks Web Console http://<fe_ip>:<fe_http_port> にアクセスするために必要な権限は何ですか?
ユーザーは db_admin と user_admin ロールを持っている必要があります。
StarRocks v3.0 の前後で権限保持メカニズムはどのように変わりましたか?
v3.0 より前は、ユーザーがテーブルに対して権限を付与された後、そのテーブルが削除され再作成されても権限は保持されていました。v3.0 以降、テーブルが削除され再作成された場合、権限は保持されなくなります。
StarRocks でユーザーと付与された権限をどのように照会しますか?
システムビュー sys.grants_to_users を照会するか、SHOW USERS を実行して完全なユーザーリストを取得し、その後、SHOW GRANTS FOR <user_identity> を使用して各ユーザーを個別に照会できます。