小编Jay*_*Eye的帖子

PostgreSQL 行级安全性涉及视图或带有连接的选择

(欢迎提出更好或更描述性标题的建议)。

我想知道在 PostgreSQL 中是否可以使用 RLS(或任何其他机制)进行以下操作。如果用户名与另一个表中的列匹配,我希望用户能够更新表的某些行。在下面的示例中,我希望在 table 中nene显示为列的user能够更新列 和table 。我想表达的是将策略应用于 t2 中的行,该行将由以下 select 语句匹配: ut0apt2SELECT a, p FROM t2 INNER JOIN t1 ON (t2.t1id = t1.id) INNER JOIN t0 ON (t1.t0id = t0.id) WHERE t0.u = 'nene';

这可能吗?有关如何进行的任何建议?一个明显的解决方法是在表 t2 上复制用户名,但这会在 t2 上添加无关信息并需要额外的约束来强制执行。

这是我的三个表(在实际情况中字段更多,表 t1 无法排除问题;我将其留在示例中,因为需要两个连接可能会改变解决方案空间)。

  • t0是用创建的CREATE TABLE t0 (id TEXT PRIMARY KEY, u TEXT UNIQUE, pn TEXT);,现在包含:

    => SELECT * FROM t0;
      id  |  u  |  pn  
    ------+------+------
     b321 | …
    Run Code Online (Sandbox Code Playgroud)

database postgresql row-level-security relational-database

6
推荐指数
1
解决办法
2429
查看次数

当还需要 libstdc++ 时,如何使用 bazel 创建 Go docker 映像?

我正在尝试从主要使用的源代码库中创建一个 docker 映像。问题是go代码还调用了一个C++库(libsodium),所以生成的容器缺少libstdc++。

这是我的方法:首先,我将 distroless go 图像与使用以下方法创建的一些内容捆绑在一起pkg_tar()

container_image(
    name = "new_base_image",
    base = "@go_image_base//image",
    tars = [
      ":bash_static_tar",
      ":passwd_tar",
      ":dirs_tar",
    ],
    visibility = ["//:__subpackages__"],
)
Run Code Online (Sandbox Code Playgroud)

然后我创建我的 go 镜像,打包它,并将它推送到我的注册表:

go_image(
    name = "alice-go-image",
    embed = [":alice_lib"],
    base = "//:new_base_image",
    visibility = ["//visibility:public"],
)


container_image(
    name = "alice-image",
    base = ":alice-go-image",
    user = "alice",
    entrypoint = "/bin/sh",
    directory = "/opt/alice",
    workdir = "/opt/alice",
)

container_push(
    name = "alice-push",
    format = "Docker",
    image = ":alice-image",
    registry = "us-central1-docker.pkg.dev",
    repository = "mycoolproject/pub-docker/alice", …
Run Code Online (Sandbox Code Playgroud)

c++ go docker bazel

6
推荐指数
1
解决办法
490
查看次数

如何处理sqlalchemy + psycopg2中不断变化的密码?

我继承了一些将sqlalchemy与psycopg2一起使用的代码,该代码需要在AWS上运行。RDS Postgres支持基于Iam的身份验证,但这样做的方式相当笨拙:您使用AWS RDS API请求一个临时密码,该密码的有效时间约为15分钟,然后将其作为密码传递。

我有效地执行了代码e = create_engine(make_sqlalchemy_string()),在其中make_sqlalchemy_string()进行aws api调用,获取了临时密码,并且一切正常。除了什么以外,sqlalchemy代码中的某处关闭了连接,然后密码不再有效。是否已经有一种方法可以使sqlalchemy每次需要重新连接时都请求一个新的连接字符串?

我可以想到许多解决方法,但是都不是令人满意的方法。是否有实现这一目标的标准方法?

谢谢

python postgresql sqlalchemy amazon-web-services amazon-aurora

3
推荐指数
1
解决办法
86
查看次数