如何将 Artifactory Permission Target 应用于 pip 和其他 non-human-predicatable/readable 回购协议?

How to apply Artifactory Permission Target to pip, and other non-human-predicatable/readable repo's?

为了让 Artifactory 尽可能为我们的用户提供自助服务,允许用户使用他们的个人或团队帐户部署到部分存储库,我正在尝试弄清楚如何配置它。 对于基于可读目录结构的存储库,如 java 世界中的任何东西,Permission Targets 工作完美 (https://www.jfrog.com/confluence/display/RTF/Managing+Permissions)。但是我找不到任何关于如何将其用于 non-human-predicatable/readable 目录结构(如 PIP)或平面目录结构(如 NPM)的文档。

在 java 世界中,存储库有一个结构良好的树,例如:

~/.m2/repository$ tree org/ | head -20
org/
├── antlr
│   ├── antlr4-master
│   │   └── 4.7.1
│   │       ├── antlr4-master-4.7.1.pom
│   │       ├── antlr4-master-4.7.1.pom.sha1
│   │       └── _remote.repositories
│   └── antlr4-runtime
│       └── 4.7.1
│           ├── antlr4-runtime-4.7.1.jar
│           ├── antlr4-runtime-4.7.1.jar.sha1
│           ├── antlr4-runtime-4.7.1.pom
│           ├── antlr4-runtime-4.7.1.pom.sha1
│           └── _remote.repositories
├── apache
│   ├── ant
│   │   ├── ant
│   │   │   ├── 1.10.1
│   │   │   │   ├── ant-1.10.1.jar
│   │   │   │   ├── ant-1.10.1.jar.sha1

例如,要授予teamantl仅读取、注释和写入org/antlr/antlr4-master/**的权限,可以将以下json PUT 到 Artifactory REST API( PUT /api/security/permissions/{permissionTargetName})

{
  "includesPattern": "org/antlr/antlr4-master/**",
  "repositories": [
    "libs-release-local",
    "libs-snapshot-local"
  ],
  "principals": {
    "groups" : {
      "teamantl": ["r","n","w"]
    }
  }
}

但是例如 pip 回购是完全散列的: 这在权限目标 "includesPattern".

中完全没用

这个(权限目标)应该如何用于回购协议,如 PIP 和 NPM?

您的屏幕截图显示了一个虚拟 PyPI 存储库,它是生成的,因此是散列结构的。

通常,这些由 物理 存储库支持,使用 twine upload 填充,因此具有 ‹pkg›/‹version›/‹file› 结构——即完全可用作包的权限目标粒度。