如何将 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›
结构——即完全可用作包的权限目标粒度。
为了让 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 回购是完全散列的:
这个(权限目标)应该如何用于回购协议,如 PIP 和 NPM?
您的屏幕截图显示了一个虚拟 PyPI 存储库,它是生成的,因此是散列结构的。
通常,这些由 物理 存储库支持,使用 twine upload
填充,因此具有 ‹pkg›/‹version›/‹file›
结构——即完全可用作包的权限目标粒度。