限制Tableua中Postgresql的公共架构的表可见性

时间:2019-01-16 20:24:57

标签: postgresql tableau

我的要求是,当用户将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中可见。

0 个答案:

没有答案