关于 huawei-cloud-swr-image-governance
通过 hcloud CLI 管理 Huawei Cloud SWR 镜像仓库治理事务的技能,适用于负责容器镜像访问控制和共享策略的团队。功能涵盖权限、保留规则、共享域和委托,并要求写入操作经用户确认。
主要功能
- 01管理命名空间和仓库权限
- 02创建与维护镜像保留规则
- 03管理共享下载域和共享仓库
- 04检查并创建 SWR 委托
- 05列出仓库附件与引用
适用场景
- 01向用户授予或撤销仓库访问权限
- 02设置镜像标签自动清理规则
- 03为跨组织访问配置共享下载域
- 04检查 SWR 共享功能或委托状态
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-swr-image-governance安装后在 Claude Code 中输入/huawei-cloud-swr-image-governance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/acceptance-criteria.mdcli-installation-guide.mdcommon-pitfalls.mdiam-policies.mdoutput-format.mdswr-governance-api-guide.mdtask-image-sharing.mdtask-namespace-permissions.mdtask-repository-permissions.mdtask-retention-management.mdtask-shared-domains.mdverification-method.md详细介绍
华为云 SWR 镜像治理
概述
此技能使用 hcloud CLI 为华为云 SWR(容器软件仓库)提供治理能力,涵盖权限、保留策略、共享和委托授权。
架构:hcloud CLI → SWR 服务 API → 权限/保留/域名/共享/委托授权资源
相关技能:
huawei-cloud-swr-image-management- 镜像生命周期管理(命名空间、仓库、标签、认证、配额)huawei-cloud-swr-image-automation- 镜像自动化操作(同步、触发器、域名)huawei-cloud-swr-enterprise-instance- 企业实例管理
不在范围内:
此技能不支持以下操作。如果用户提出这些请求,请告知他们,并建议使用正确的技能:
| 操作 | 改用 | 原因 |
|---|---|---|
| 创建/删除/列出命名空间 | huawei-cloud-swr-image-management | 命名空间生命周期管理,不属于治理 |
| 创建/删除仓库或标签 | huawei-cloud-swr-image-management | 仓库/标签生命周期管理,不属于治理 |
| 推送/拉取镜像(docker login) | huawei-cloud-swr-image-management | 镜像操作,不属于治理 |
| 创建授权令牌 | huawei-cloud-swr-image-management | 令牌管理,不属于治理 |
| 列出 SWR 配额 | huawei-cloud-swr-image-management | 配额查询,不属于治理 |
| 创建镜像同步规则 | huawei-cloud-swr-image-automation | 同步属于自动化,不属于治理 |
| 创建/删除触发器 | huawei-cloud-swr-image-automation | 触发器属于自动化,不属于治理 |
| 启动安全扫描 | huawei-cloud-swr-image-automation | 扫描属于自动化,不属于治理 |
| 创建不可变规则 | N/A(当前没有任何技能支持) | 使用华为云 SWR 控制台 |
| 查看审计日志 | 使用华为云控制台或 CES | 审计日志不属于治理操作 |
| 创建/删除企业实例 | huawei-cloud-swr-enterprise-instance | 实例生命周期管理,不属于治理 |
功能:
- 授予、查询、修改和撤销命名空间级权限
- 授予、查询、修改和撤销仓库级权限
- 创建和管理镜像保留规则,以实现自动清理
- 创建和管理共享下载域名,以支持跨组织访问
- 列出共享仓库并检查共享功能门控状态
- 检查并创建用于 SWR 操作的委托授权
- 列出仓库附件和引用
典型用例:
- “向用户‘dev-team’授予对命名空间‘group-dev’的编辑权限”
- “列出所有有权访问命名空间‘group-dev’的用户”
- “设置保留规则,仅保留仓库‘nginx’中最新的 10 个标签”
- “为仓库‘my-app’创建共享下载域名”
- “列出所有共享仓库”
- “检查是否已启用镜像共享功能”
- “检查 SWR 的委托授权状态”
- “撤销用户对仓库的权限”
工作流
- ⚠️ 账单确认(必须) — 执行任何操作前,告知用户可能产生的账单影响,并征得明确同意:
- 治理操作:权限管理、保留规则和共享配置均免费。不过,删除图片的保留规则会降低存储成本,而共享下载域名可能会增加流量成本。
- 代理委托:创建 SWR 代理委托不会产生直接费用,但会启用可能产生账单影响的跨服务操作。
- 请用户确认:“您是否了解账单影响并希望继续?(是/否)”
- 只有在用户明确确认后才能继续。如果用户拒绝,请停止,不要执行任何操作。
- 解析用户请求 — 确定治理操作类型(权限、保留规则、域名、共享、代理)
- 检查范围 — 如果请求的操作列在范围外中,告知用户并建议使用正确的技能。不要执行该操作。
- 验证前提条件 — 检查 hcloud CLI 是否已安装,以及凭证是否已配置
- 确认参数 — 向用户显示操作、目标资源和参数,以便用户确认
- 执行读取操作 — 对于查询操作(Show、List、Check),直接运行 hcloud CLI
- 确认写入操作 — 对于写入操作(Create、Update、Delete),执行前请用户确认(参见参数确认)
- 解析并整理输出 — 提取相关字段,并以表格或结构化格式展示
- 报告结果 — 提供结果及其背景信息(例如权限变更、保留规则详情)
- 建议后续操作 — 推荐相关操作(例如授予权限后,建议使用 Show 进行验证)
参数确认
所有写操作(创建、更新、删除)都必须在执行前获得用户明确确认。
执行任何写操作前,技能必须:
- 显示即将执行的完整 hcloud 命令
- 显示目标资源(命名空间、仓库、域名等)
- 显示要应用的变更(权限级别、保留规则、域名设置)
- 等待用户确认(“yes” / “confirm”)后再继续
- 如果用户拒绝,则中止操作并返回第 1 步
需要确认的写操作:
| 操作 | 命令 | 风险级别 | 描述 |
|---|---|---|---|
| 授予命名空间权限 | CreateNamespaceAuth | 🟡 中 | 授予对命名空间下所有仓库的访问权限。如果 auth=7,则授予完全控制权限(创建/删除仓库、管理权限) — 请相应地提醒用户 |
| 更新命名空间权限 | UpdateNamespaceAuth | 🟡 中 | 更改命名空间的访问级别。降低权限可能会导致用户无法执行现有操作,影响业务工作流 |
| 撤销命名空间权限 | DeleteNamespaceAuth | 🟠 高 | 移除对命名空间的所有访问权限。可能导致业务中断 — 使用此命名空间的任何 CI/CD 流水线或服务都将立即失去访问权限 |
| 授予仓库权限 | CreateUserRepositoryAuth | 🟡 中 | 授予对特定仓库的访问权限。如果 auth=7,则授予对此仓库的完全控制权限 |
| 更新仓库权限 | UpdateUserRepositoryAuth | 🟡 中 | 更改仓库的访问级别。降低权限可能会破坏依赖当前访问级别的现有工作流 |
| 撤销仓库权限 | DeleteUserRepositoryAuth | 🟠 高 | 移除对仓库的所有访问权限。可能导致业务中断 — 从此仓库拉取内容的服务将立即失去访问权限 |
| 创建保留规则 | CreateRetention | 🟠 高 | 创建自动清理策略。规则执行时,不符合保留条件的标签将被自动删除,且数据无法恢复 |
| 更新保留规则 | UpdateRetention | 🟠 高 | 修改清理策略。更改条件可能导致之前保留的标签被删除 — 数据无法恢复 |
| 删除保留规则 | DeleteRetention | 🟡 中 | 移除自动清理策略。现有标签会保留,但之后不再执行清理 |
| 创建共享域名 | CreateRepoDomains | 🟡 中 | 通过跨组织访问与另一个账户共享镜像 |
| 更新共享域名 | UpdateRepoDomains | 🟡 中 | 更改共享设置(例如,过期时间、权限) |
| 删除共享域名 | DeleteRepoDomains | 🟠 高 | 撤销跨账户访问权限。目标组织中的用户将立即失去通过此域名拉取镜像的能力 |
| 创建委托 | CreateAgency | 🟠 高 | 创建 SWR 委托。授予 SWR 代表你访问其他服务(OBS、CCE)的权限 — 请在继续前确认委托范围 |
前提条件
1. hcloud CLI 要求(必需)
- 已安装 hcloud CLI(版本 >= 7.2.2)
- 运行
hcloud version验证安装 - 首次使用:运行
printf "y\n" | hcloud version以接受隐私声明
2. 凭证配置
hcloud CLI 支持通过环境变量配置两种凭证模式,并会在运行时自动检测:
模式 A — 长期 AK/SK(永久访问):
export HUAWEI_CLOUD_AK=<your-ak>
export HUAWEI_CLOUD_SK=<your-sk>
export HUAWEI_CLOUD_REGION=cn-north-4
模式 B — 临时 AK/SK + SecurityToken(建议用于临时或委托访问):
export HUAWEI_CLOUD_AK=<your-temp-ak>
export HUAWEI_CLOUD_SK=<your-temp-sk>
export HUAWEI_CLOUD_SECURITY_TOKEN=<your-security-token>
export HUAWEI_CLOUD_REGION=cn-north-4
当存在
HUAWEI_CLOUD_SECURITY_TOKEN时,hcloud CLI 会自动使用临时凭证进行身份验证。仅设置 AK/SK 时,则使用长期凭证进行身份验证。
- 安全规则:
- 🚫 切勿在代码、对话或命令中暴露 AK/SK/SecurityToken 值
- 🚫 切勿使用
echo $HUAWEI_CLOUD_AK或echo $HUAWEI_CLOUD_SK检查凭证 - ✅ 使用环境变量:
HUAWEI_CLOUD_AK、HUAWEI_CLOUD_SK、HUAWEI_CLOUD_REGION、HUAWEI_CLOUD_SECURITY_TOKEN - ✅ 云操作优先使用 IAM 用户,而非根账户
- ✅ 为敏感操作启用 MFA
⚠️ 重要安全提示:
- 切勿将凭证提交到版本控制系统
- 使用权限满足最低必要要求的 IAM 用户
- 为敏感操作启用 MFA
- 定期轮换 AK/SK
3. IAM 权限要求
| API 操作 | 权限 | 用途 |
|---|---|---|
swr:namespace:auth:create | 创建命名空间授权 | 授予命名空间权限 |
swr:namespace:auth:get | 获取命名空间授权 | 查询命名空间权限 |
swr:namespace:auth:update | 更新命名空间授权 | 修改命名空间权限 |
swr:namespace:auth:delete | 删除命名空间授权 | 撤销命名空间权限 |
swr:repository:auth:create | 创建仓库授权 | 授予仓库权限 |
swr:repository:auth:get | 获取仓库授权 | 查询仓库权限 |
swr:repository:auth:update | 更新仓库授权 | 修改仓库权限 |
swr:repository:auth:delete | 删除仓库授权 | 撤销仓库权限 |
swr:retention:create | 创建保留规则 | 创建保留规则 |
swr:retention:list | 列出保留规则 | 列出保留规则 |
swr:retention:get | 获取保留规则 | 查看保留规则详情 |
swr:retention:update | 更新保留规则 | 修改保留规则 |
swr:retention:delete | 删除保留规则 | 移除保留规则 |
swr:domain:create | 创建域名 | 创建共享下载域名 |
swr:domain:list | 列出域名 | 列出共享下载域名 |
swr:domain:get | 获取域名 | 查看域名详情 |
swr:domain:update | 更新域名 | 修改域名设置 |
swr:domain:delete | 删除域名 | 移除共享下载域名 |
swr:share:list | 列出共享仓库 | 列出共享仓库 |
swr:share:get | 获取共享仓库 | 查看共享仓库详情 |
swr:share:feature:get | 获取共享功能 | 检查共享功能门控 |
swr:global:feature:get | 获取全局功能 | 检查全局功能门控 |
swr:agency:check | 检查委托 | 检查委托状态 |
swr:agency:create | 创建委托 | 创建委托 |
swr:accessory:list | 列出附件 | 列出仓库附件 |
swr:reference:list | 列出引用 | 列出仓库引用 |
请参阅 IAM 权限策略 查看完整的策略 JSON。
权限失败处理:
- 当任何命令因权限错误而失败时,请读取
references/iam-policies.md - 向用户显示所需权限列表和策略 JSON
- 指导用户在 IAM 控制台中创建自定义策略并授予授权
- 暂停执行,并等待用户确认权限已授予
KooCLI 命令格式标准
所有命令均遵循标准的 hcloud KooCLI 格式:
hcloud SWR <Operation> --param1=value1 --param2=value2 --cli-region=<region>
主要约定:
- 服务名称:
SWR(大写,与 KooCLI 服务列表一致) - 操作名称:PascalCase(例如,
ShowNamespaceAuth、CreateRetention、ListRepoDomains) - 区域参数:
--cli-region=<value>(默认值:cn-north-4,或使用HUAWEI_CLOUD_REGION环境变量) - 输出格式:
--cli-output=json(用于 Agent 处理) - JMESPath 过滤:
--cli-query="<expression>"(缩减输出) - 数组形式参数:
--1.auth=7 --1.user_id=xxx(索引从 1 开始,而非 0) - 嵌套对象参数:
--rules.1.template=tag_rule --rules.1.params='{"num":"10"}'
示例 — 读取操作:
hcloud SWR ShowNamespaceAuth --namespace=pancake --cli-region=cn-north-4 --cli-output=json
示例 — 写入操作(需要用户确认):
# Step 1: Display command and parameters for user confirmation
# Step 2: After user confirms, execute:
hcloud SWR CreateNamespaceAuth --namespace=pancake --1.auth=7 --1.user_id=<user-id> --1.user_name=<user-name> --cli-region=cn-north-4
核心命令
1. 命名空间权限
有关详细工作流,请参阅任务:命名空间权限。
# Show namespace permissions (who has access and their auth levels)
hcloud SWR ShowNamespaceAuth --namespace=pancake --cli-region=cn-north-4
# Grant namespace permission to a user
hcloud SWR CreateNamespaceAuth --namespace=pancake --1.auth=7 --1.user_id=05949eb5350010e21f85c017722182de --1.user_name=hwstaff_p00506267 --cli-region=cn-north-4
# Update namespace permission for a user
hcloud SWR UpdateNamespaceAuth --namespace=pancake --1.auth=3 --1.user_id=05949eb5350010e21f85c017722182de --1.user_name=hwstaff_p00506267 --cli-region=cn-north-4
# Revoke namespace permission for a user (DELETE uses array<string>, not array<object>)
hcloud SWR DeleteNamespaceAuth --namespace=pancake --1=05949eb5350010e21f85c017722182de --cli-region=cn-north-4
权限值:7 = 管理(完全控制),3 = 编辑(推送/拉取),1 = 读取(仅拉取)
⚠️ 数组形式参数:权限操作使用不同的数组格式:
- 创建/更新(array):使用
--[N].auth、--[N].user_id、--[N].user_name格式,其中[N]是数组索引(从 1 开始)。对于单个用户,使用--1.auth=7 --1.user_id=xxx --1.user_name=xxx。 - 删除(array):使用
--[N]=<user_id>格式——数组元素直接是用户 ID 字符串。对于单个用户,使用--1=<user_id>。删除操作中不要使用--1.user_id=或--1.user_name=。 详情请参阅常见问题。
2. 仓库权限
有关详细工作流,请参阅任务:仓库权限。
# Show repository permissions
hcloud SWR ShowUserRepositoryAuth --namespace=pancake --repository=openclaw-sandbox --cli-region=cn-north-4
# Grant repository permission to a user
hcloud SWR CreateUserRepositoryAuth --namespace=pancake --repository=openclaw-sandbox --1.auth=7 --1.user_id=05949eb5350010e21f85c017722182de --1.user_name=hwstaff_p00506267 --cli-region=cn-north-4
# Update repository permission for a user
hcloud SWR UpdateUserRepositoryAuth --namespace=pancake --repository=openclaw-sandbox --1.auth=3 --1.user_id=05949eb5350010e21f85c017722182de --1.user_name=hwstaff_p00506267 --cli-region=cn-north-4
# Revoke repository permission for a user (DELETE uses array<string>, not array<object>)
hcloud SWR DeleteUserRepositoryAuth --namespace=pancake --repository=openclaw-sandbox --1=05949eb5350010e21f85c017722182de --cli-region=cn-north-4
权限值:与命名空间权限相同:7 = 管理,3 = 编辑,1 = 读取
3. 委托授权
# Check if agency delegation is enabled
hcloud SWR CheckAgency --cli-region=cn-north-4
# Create agency delegation for SWR
hcloud SWR CreateAgency --cli-region=cn-north-4
使用场景:
- 委托授权允许 SWR 代表你访问其他服务(OBS、CCE)
- 图片同步到 OBS 和触发 CCE 部署等功能需要此授权
CheckAgency会返回委托是否已配置;CreateAgency会创建委托
4. 保留规则
有关详细工作流,请参阅任务:保留管理。
# List retention rules for a repository
hcloud SWR ListRetentions --namespace=pancake --repository=openclaw-sandbox --cli-region=cn-north-4
# Create a retention rule (keep last 10 tags)
hcloud SWR CreateRetention --namespace=pancake --repository=openclaw-sandbox --algorithm=or --rules.1.template=tag_rule --rules.1.params='{"num":"10"}' --rules.1.tag_selectors.1.kind=label --rules.1.tag_selectors.1.pattern=latest --cli-region=cn-north-4
# Create a retention rule (keep tags from last 30 days)
hcloud SWR CreateRetention --namespace=pancake --repository=openclaw-sandbox --algorithm=or --rules.1.template=date_rule --rules.1.params='{"days":"30"}' --rules.1.tag_selectors.1.kind=label --rules.1.tag_selectors.1.pattern=latest --cli-region=cn-north-4
# Show retention rule details
hcloud SWR ShowRetention --namespace=pancake --repository=openclaw-sandbox --retention_id=<id> --cli-region=cn-north-4
# Update a retention rule
hcloud SWR UpdateRetention --namespace=pancake --repository=openclaw-sandbox --retention_id=<id> --algorithm=or --rules.1.template=tag_rule --rules.1.params='{"num":"5"}' --rules.1.tag_selectors.1.kind=label --rules.1.tag_selectors.1.pattern=latest --cli-region=cn-north-4
# Delete a retention rule
hcloud SWR DeleteRetention --namespace=pancake --repository=openclaw-sandbox --retention_id=<id> --cli-region=cn-north-4
# List retention execution histories
hcloud SWR ListRetentionHistories --namespace=pancake --repository=openclaw-sandbox --retention_id=<id> --cli-region=cn-north-4
保留规则模板:
tag_rule:保留最近指定数量的标签(params.num)date_rule:保留在指定天数内创建的标签(params.days)
标签选择器类型:
label:精确匹配标签名称(例如,latest、v1.0)regexp:正则表达式匹配(例如,v\d+\.\d+\.\d+)
算法:or 表示规则以 OR 逻辑组合(标签只要匹配任意一条规则就会被保留)
5. 共享下载域名
有关详细工作流,请参阅任务:共享域名。
# List shared download domains for a repository
hcloud SWR ListRepoDomains --namespace=pancake --repository=openclaw-sandbox --cli-region=cn-north-4
# Create a shared download domain
# --access_domain: Huawei Cloud IAM domain name (tenant name/account name) of the target account to share with
# --deadline: Expiration time in UTC format; use "forever" for permanent access
# --permit: Permission type; currently only "read" is supported
hcloud SWR CreateRepoDomains --namespace=pancake --repository=openclaw-sandbox --access_domain=<iam-domain-name> --deadline=forever --permit=read --cli-region=cn-north-4
# Show shared domain details
hcloud SWR ShowAccessDomain --namespace=pancake --repository=openclaw-sandbox --access_domain=<iam-domain-name> --cli-region=cn-north-4
# Update a shared download domain
hcloud SWR UpdateRepoDomains --namespace=pancake --repository=openclaw-sandbox --access_domain=<iam-domain-name> --deadline=forever --permit=read --cli-region=cn-north-4
# Delete a shared download domain
hcloud SWR DeleteRepoDomains --namespace=pancake --repository=openclaw-sandbox --access_domain=<iam-domain-name> --cli-region=cn-north-4
共享域名参数:
--access_domain:要与其共享镜像的账户的华为云 IAM 域名(共享租户名称)。这是目标账户的域名,而非自定义域名标识符。--deadline:UTC 格式的到期时间(例如,2025-12-31T23:59:59Z)。永久访问请使用forever。--permit:权限类型。目前仅支持read(下载/拉取)。--description(可选):共享域名的易读描述。
6. 镜像共享
有关详细工作流,请参阅任务:镜像共享。
# List shared repositories I have shared (self) or received (thirdparty)
# --center is REQUIRED: "self" = repos I shared to others, "thirdparty" = repos shared to me
hcloud SWR ListSharedReposDetails --center=self --cli-region=cn-north-4
# List shared repository details (--shared_by is REQUIRED: self|thirdparty)
hcloud SWR ListSharedRepoDetails --shared_by=self --cli-region=cn-north-4
# Check sharing feature gates
hcloud SWR ShowShareFeatureGates --cli-region=cn-north-4
# Check global feature gates
hcloud SWR ListGlobalFeatureGates --cli-region=cn-north-4
7. 仓库附加项与引用
# List repository accessories
hcloud SWR ListRepoAccessories --namespace=pancake --repository=openclaw-sandbox --cli-region=cn-north-4
# List repository references
hcloud SWR ListReferences --namespace=pancake --repository=openclaw-sandbox --cli-region=cn-north-4
参数参考
常用参数
| 参数 | 必填/可选 | 描述 | 默认值 |
|---|---|---|---|
--cli-region | 必填 | Huawei Cloud 区域 ID | 配置值或 HUAWEI_CLOUD_REGION |
--namespace | 视上下文而定 | SWR 命名空间(组织) | N/A |
--repository | 视上下文而定 | 镜像仓库名称 | N/A |
权限参数
| 参数 | 必填 | 描述 | 约束 |
|---|---|---|---|
--namespace | 是 | 命名空间名称 | 必须存在 |
--repository | 是 | 仓库名称(仅限仓库级别) | 必须存在 |
--[N].auth | 是 | 权限级别 | 7=管理,3=编辑,1=读取 |
--[N].user_id | 是 | IAM 用户 ID | 十六进制字符串(例如,05949eb5350010e21f85c017722182de) |
--[N].user_name | 是 | IAM 用户名 | IAM 用户显示名称 |
⚠️ 数组索引格式:[N] 从 1 开始(不是 0)。若要向单个用户授予权限,请使用 --1.auth=7 --1.user_id=xxx --1.user_name=xxx。若要向多个用户授予权限,请使用 --1.auth=7 --1.user_id=xxx --1.user_name=xxx --2.auth=3 --2.user_id=yyy --2.user_name=yyy。
保留策略参数
| 参数 | 必填 | 描述 | 约束 |
|---|---|---|---|
--namespace | 是 | 命名空间名称 | 必须存在 |
--repository | 是 | 仓库名称 | 必须存在 |
--retention_id | 是 | 保留策略 ID(用于显示/更新/删除) | 数字 ID |
--algorithm | 是 | 规则组合逻辑 | 固定值 or |
--rules.[N].template | 是 | 规则模板类型 | date_rule 或 tag_rule |
--rules.[N].params | 是 | 规则参数 | date_rule 使用 days,tag_rule 使用 num |
--rules.[N].tag_selectors.[N].kind | 是 | 选择器类型 | label 或 regexp |
--rules.[N].tag_selectors.[N].pattern | 是 | 选择器模式 | 标签名称或正则表达式 |
域参数
| 参数 | 必填 | 描述 | 约束 |
|---|---|---|---|
--namespace | 是 | 命名空间名称 | 必须存在 |
--repository | 是 | 仓库名称 | 必须存在 |
--access_domain | 是 | Huawei Cloud IAM 域名(共享租户名称) | 目标账户的域名,而非自定义标识符 |
--deadline | 是(创建/更新时) | 过期时间 | UTC 格式(例如,2025-12-31T23:59:59Z)或 forever |
--permit | 是(创建/更新时) | 权限类型 | read(唯一支持的值) |
--description | 否 | 域描述 | 默认值:空字符串 |
输出格式
详细的响应格式示例(NamespaceAuth、RepositoryAuth、RepoDomains、CheckAgency、ShareFeatureGates、GlobalFeatureGates、Retentions、RepoAccessories、ListSharedReposDetails),请参阅输出格式。
格式要点:
auth:权限值(7=管理,3=编辑,1=读取)self_auth与others_auths:审计权限时请同时检查ListRepoDomains:使用created/updated(而非created_at/updated_at)ListRetentions:返回扁平数组(没有规则时为空数组[])ListRepoAccessories:使用total+accessories(为空时为 null)
验证
分步验证方法请参阅验证方法。
最佳实践
- 最小权限原则:仅授予所需的最低权限级别——仅拉取使用
1(读取),推送/拉取使用3(编辑),完全控制使用7(管理) - 命名空间与仓库权限:命名空间权限适用于其下的所有仓库;仓库权限则针对单个仓库进行细粒度控制
- 保留规则:大多数情况下使用
tag_rule(保留最近的 N 个);基于时间清理时使用date_rule(保留 N 天内的标签) - 保留标签选择器:使用
label类型和latest模式,避免重要标签被保留规则清理 - 共享域名:稳定的内部共享使用
deadline=forever;临时跨团队访问则设置具体期限 - 代理委托:配置镜像同步或 CCE 触发器前,请检查代理状态——这些操作要求启用代理
- 定期审计权限:使用
ShowNamespaceAuth和ShowUserRepositoryAuth定期检查哪些用户具有访问权限
参考文档
| 文档 | 说明 |
|---|---|
| SWR 治理 API 指南 | hcloud SWR 治理 API 参考 |
| 输出格式 | 响应格式示例(已验证) |
| IAM 权限策略 | 所需权限和策略 JSON |
| 验证方法 | 分步验证 |
| 常见问题 | 故障排除指南 |
| 任务:命名空间权限 | 命名空间权限工作流 |
| 任务:仓库权限 | 仓库权限工作流 |
| 任务:保留管理 | 保留规则工作流 |
| 任务:共享域名 | 共享域名工作流 |
| 任务:镜像共享 | 镜像共享工作流 |
| CLI 安装指南 | KooCLI 安装和配置 |
| 验收标准 | 正确模式与错误模式对比 |
注意事项
- 权限变更立即生效——授予权限后无需等待即可使用
- 谨慎撤销权限——移除管理权限(7)会导致用户无法管理该命名空间/仓库
- 保留规则自动执行——符合规则条件的标签将在执行期间被删除
- 绝不能将 AK/SK 硬编码——只能通过环境变量获取凭证
- 仅支持使用 hcloud CLI——所有操作均采用
hcloud SWR <Operation>格式 - ListRepoDomains 时间戳使用
created/updated——而非created_at/updated_at
常见陷阱
请参阅常见陷阱与解决方案,了解详细的故障排查指南。
快速参考:
| 陷阱 | 症状 | 快速修复 |
|---|---|---|
| 数组形式的参数 | 权限授予失败 | 使用 --1.auth=7 --1.user_id=xxx(索引从 1 开始,而非 0) |
| 授权值错误 | 用户获得了意料之外的访问权限 | 7=管理,3=编辑,1=读取(不是 1/2/3) |
| self_auth 与 others_auths | 审计记录中缺少用户 | 检查 self_auth 和 others_auths |
| 域的时间戳字段 | 解析 created_at 失败 | 使用 created/updated(而非 created_at) |
| 保留规则格式 | CreateRetention 失败 | 使用嵌套数组参数:--rules.1.tag_selectors.1.kind |
| 未配置 Agency | 图像同步/CCE 触发失败 | 运行 CheckAgency,然后运行 CreateAgency |