显示所有表的所有红移外部模式.如何限制外部架构中外部表的可见性



我有一个AWS红移集群(比如集群a(和一个数据库(比如db a(。我创建了一个外部架构(比如sch a(,并在其中创建了几个内部表,它们的数据在s3中。

现在,我想创建另一个外部模式(比如sch B(,在那里我想创建一些其他的外部表。我的意图是从管理员用户创建这些模式,并使用GRANT USAGE ON为单独的用户提供对单独模式的访问。

但是,在创建sch B之后,我发现我在sch A中创建的所有表都是可见的,并且可以查询。

关于为什么会发生这种情况以及如何防止这种情况的任何想法。请提出建议。

注意-我使用相同的IAM角色创建了两个外部架构,IAM角色具有读取数据所在的s3存储桶的策略。我不认为这是问题所在。

你遇到了很多人遇到的困惑。

一个外部模式被严重误名了——它根本不像一个模式。

外部模式现在是并且只是指向外部数据库的指针。外部表元数据存储在该扩展数据库中。

您可以让任意数量的外部模式指向同一个外部数据库,当您使用这些外部模式中的任何一个创建表时,表元数据将被写入外部模式所指向的外部数据库——这当然意味着,它将通过所有其他外部模式看到,因为它们都指向同一外部数据库。

如果希望模式的内容仅在一个模式中可见,则需要为每个模式创建一个新的外部数据库。请注意,有太多的外部数据库似乎(我还没有进行适当的调查,但看起来很像(会使携带外部表信息的系统表非常缓慢——返回查询需要几十分钟。我从来没有为SQL使用GUI工具,但我可以想象他们正在查询这个系统表,这对他们来说可能是一个问题。

最新更新