huawei-cloud-swr-image-governance について
hcloud CLI で Huawei Cloud SWR のイメージガバナンスを管理するスキルです。コンテナイメージのアクセス権や共有ポリシーを担当するチーム向けに、権限、保持ルール、共有ドメイン、委任を扱い、書き込み操作にはユーザー確認を求めます。
主な機能
- 01名前空間とリポジトリの権限管理
- 02イメージ保持ルールの作成と管理
- 03共有ダウンロードドメインと共有リポジトリの管理
- 04SWR 委任の確認と作成
- 05リポジトリのアクセサリーと参照の一覧表示
活用シーン
- 01ユーザーのリポジトリアクセス権の付与・取り消し
- 02イメージタグの自動クリーンアップ設定
- 03組織間アクセス用の共有ドメイン設定
- 04SWR の共有機能や委任状態の確認
インストール
コマンドをコピーしてターミナルで実行します。
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詳細
Huawei Cloud SWR イメージガバナンス
概要
このスキルは、hcloud CLI を使用して、権限、保持ポリシー、共有、エージェンシーへの委任など、Huawei Cloud SWR(Software Repository for Container)のガバナンス機能を提供します。
アーキテクチャ:hcloud CLI → SWR Service 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(現在、どのスキルでもサポートされていません) | Huawei Cloud SWR コンソールを使用してください |
| 監査ログの表示 | Huawei Cloud コンソールまたは 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 は環境変数を使って2種類の認証情報モードをサポートしており、実行時に自動的に判別します。
モード 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 | NS 認証の作成 | 名前空間の権限を付与する |
swr:namespace:auth:get | NS 認証の取得 | 名前空間の権限を照会する |
swr:namespace:auth:update | NS 認証の更新 | 名前空間の権限を変更する |
swr:namespace:auth:delete | NS 認証の削除 | 名前空間の権限を取り消す |
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 | 参照の一覧 | リポジトリの参照を一覧表示する |
ポリシー JSON の全容については、IAM 権限ポリシーを参照してください。
権限エラーへの対応:
- 権限エラーが原因でコマンドが失敗した場合は、
references/iam-policies.mdを読み込みます - 必要な権限の一覧とポリシー JSON をユーザーに表示します
- IAM コンソールでカスタムポリシーを作成し、権限を付与するようユーザーを案内します
- 実行を一時停止し、権限が付与されたことをユーザーが確認するまで待機します
KooCLI コマンド形式の標準
すべてのコマンドは、標準の hcloud KooCLI 形式に従います。
hcloud SWR <Operation> --param1=value1 --param2=value2 --cli-region=<region>
主な規約:
- サービス名:
SWR(大文字表記。KooCLI のサービス一覧に準拠) - 操作名:パスカルケース(例:
ShowNamespaceAuth、CreateRetention、ListRepoDomains) - リージョンパラメーター:
--cli-region=<value>(デフォルト:cn-north-4、またはHUAWEI_CLOUD_REGION環境変数) - 出力形式:
--cli-output=json(エージェントによる処理用) - JMESPath フィルタリング:
--cli-query="<expression>"(出力を減らすため) - 配列形式のパラメーター:
--1.auth=7 --1.user_id=xxx(インデックスは 0 ではなく 1 から始まります) - ネストされたオブジェクトのパラメーター:
--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]が配列インデックス(1 から開始)となる--[N].auth、--[N].user_id、--[N].user_name形式を使用します。ユーザーが 1 人の場合は、--1.auth=7 --1.user_id=xxx --1.user_name=xxxを使用します。 - 削除(array):配列要素がユーザー ID 文字列そのものとなる
--[N]=<user_id>形式を使用します。ユーザーが 1 人の場合は、--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:イメージの共有先アカウントの Huawei Cloud 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 | 16 進数文字列(例:05949eb5350010e21f85c017722182de) |
--[N].user_name | はい | IAM ユーザー名 | IAM ユーザーの表示名 |
⚠️ 配列インデックスの形式:[N] は 1 から始まります(0 ではありません)。1 人のユーザーに権限を付与する場合は、--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 日以内のタグを保持)を使用します - 保持対象のタグセレクター:保持クリーンアップから重要なタグを保護するには、
latestパターンを使ったlabel種別を使用します - 共有ドメイン:安定した内部共有には
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 を使用する(インデックスは0ではなく1から) |
| 誤った認証値 | ユーザーに予期しないアクセス権が付与される | 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 を実行する |