我的要求是,当用户将db_host,db_port,db_name,db_username和db_password赋予tableau时,仅显示一个特定的表或实例化视图。
当前,Tableau显示所有存在默认公共模式的表。因此,我试图创建另一个架构和另一个角色,并将该垂直表或异构视图保留在该新架构中。
k_c_pairs_df <- expand.grid(kerna=kerna, c_value=1:100, stringsAsFactors = FALSE)
model_fct <- function(ker, c) {
model <- ksvm(V11~V1+V2+V3+V4+V5+V6+V7+V8+V9+V10,
data = credit_card_data,
type ="C-svc",
kernel = ker,
C=c,
scaled =TRUE)
pred <- predict(model,credit_card_data[,1:10])
accuracy <- sum(pred== credit_card_data$V11)/nrow(credit_card_data)
print(paste("kernal:",ker, "c=",cValues[i],"accuracy=",accuracyValues[i]))
return(data.frame(kernel = ker, cValues = c, accuracyValues = accuracy))
}
df_list <- Map(model_fct, k_c_pairs_df$ker, k_c_pairs_df$c_value)
final_df <- do.call(rbind, df_list)
我撤消了该新用户在公共架构上的访问权限
CREATE SCHEMA alok_schema;
CREATE ROLE alok LOGIN PASSWORD 'alok';
GRANT USAGE ON SCHEMA alok_schema TO alok;
CREATE MATERIALIZED VIEW alok_schema.mview_alok as SELECT name, location from sometable;
GRANT SELECT ON alok_schema.mview_alok TO alok;
现在,用户REVOKE ALL PRIVILEGES ON SCHEMA public FROM PUBLIC;
REVOKE ALL PRIVILEGES ON SCHEMA public FROM alok;
不能看到alok
模式中存在的表,并且当他尝试时只能看到public
中存在的表/视图
alok_schema
但是,即使对于新用户psql -h localhost -U alok db_name
,此行为也不会反映在tableau中。在tableau中,postgresql用户alok
仍在查看公共模式中存在的所有表,因为tableau通过查询系统目录的alok
列出了表名,并且我猜不允许它添加行级安全策略>
pg_catalog.pg_namespace
所以我看不到tableau中的所有表或所有表。
有什么办法可以限制Tableau中公共模式的表列表?我只希望create policy restrict_rows_for_alok on pg_catalog.pg_namespace to alok using (nspname = alok_schema);
ERROR: permission denied: "pg_namespace" is a system catalog
在模式mview_alok
中存在的Tableau中可见。