次のような場合に使用: ユーザーが Zilliz Cloud のアクセス管理を行いたい場合です。具体的には、組織やプロジェクト独自のロール(役割)の作成・設定、組織メンバーへのロール付与・取り消し、または SCIM(ユーザー同期の仕組み)のグループにロールを割り当てるといった操作が対象です。 このスキルは、組織・プロジェクト・クラスタ(計算リソースのまとまり)といったクラウドレベルのアクセス制御(ロールベースの権限管理)に対応しています。Milvus データベース内のユーザーと権限については、別の「ユーザー・ロール」スキルを参照してください。
Use when the user wants to manage Zilliz Cloud access control -- custom org or project roles and their policies, granting or revoking a role for an organization member, or binding roles to a SCIM user group. This is cloud-level RBAC over organizations, projects, and clusters -- for database users and privileges inside Milvus see the user-role skill.
/v2/roles、/v2/members、/v2/groups のルートが、呼び出し元のエンドポイントで有効になっていることが必要です。現在段階的に展開中のため、zilliz acl コマンドから 404 エラーが返されたら、そのエンドポイントではまだ API が利用できないということですzilliz acl は3階層の構造になっており、acl role、acl member、acl group の3つから成ります。ルート展開の期間中は zilliz --help とシェル補完からは意図的に非表示ですが、以下のコマンドはすべて今すぐ実行でき、各コマンドの --help も機能します。
# 1つのプロジェクトのロール:事前定義されたプロジェクトロールと、
# そのプロジェクトのカスタムロール
# --project-id は必須です(省略されると対話的に入力を求めます)
zilliz acl role list --project-id <project-id>
# オプション: --page <n>, --page-size <n>, --all
# 組織レベルのロール
# (--project-id は使用不可。組織ロールはプロジェクト単位ではありません)
zilliz acl role list --type org
zilliz acl role describe <role-id>
# オプション: --project-id <project-id>
zilliz acl role principals <role-id> --all
# オプション: --project-id <project-id>, --page <n>, --page-size <n>
# そのロールがバインド(紐付け)されているメンバー、グループ、API キーを表示します
zilliz acl role delete <role-id>
# オプション: --project-id <project-id>
# 削除前に確認が入ります。-y を指定すればスキップできます
describe、principals、delete での --project-id は、事前定義されたプロジェクトロール(それ自体の境界を持たない)のプロジェクト範囲を指定します。カスタムロールは ID だけで指定します。
zilliz acl role create --name <role-name> --project-id <project-id> \
--policy project_member:view \
--policy 'serving_cluster:view,modify=in01-a,in01-b'
# オプション: --description <text>, --policies-file <path>
zilliz acl role update <role-id> --description <text>
# オプション:
# --name <role-name>
# --project-id <project-id>
# --policy <shorthand>
# --policies-file <path>
# -y
作成できるのはプロジェクトロールだけです。API には組織ロール作成パスがありません。update はポリシーを完全に置き換え(マージしません)、ステートメント数を減らす場合は確認を求めます。-y を渡せば確認をスキップできます。
role create と role update でポリシーを指定する3つの方法:
短形式 (--policy、繰り返し指定可)。リクエスト前にローカルで検証されます:
RESOURCE:ACTION[,ACTION...][=SELECTION[,SELECTION...]][@cluster=CLUSTER_ID]
--policy project_member:view
--policy 'serving_cluster:view,modify=in01-a,in01-b'
--policy 'serving_cluster_data:read=mydb/*@cluster=in01-abc'
--policy 'volume_data:read,write=*'
SELECTION はステートメントが対象とするリソース インスタンスを指定します。* はすべてを意味し、データリソースは db/collection 形式も受け入れます。@cluster= はオプションの末尾マーカーなので、選択値内の @ はそのまま残ります。
JSON ファイル (--policies-file <path>、- は標準入力から読み込み)。API が定義する policies 配列をそのまま指定します。--policy と相互排他的です:
[
{ "resourceType": "serving_cluster", "privileges": ["view"], "resources": ["in01-a"] },
{ "resourceType": "project_member", "privileges": ["view"] }
]
対話型ビルダー:ターミナル上でどちらのフラグもない場合、role create はリソース、アクション、選択項目をウォークスルーし、等価な --policy フラグを表示するので、次回から スクリプト化できます。ターミナル以外でどちらのフラグもない場合はコマンドがエラーになります。
zilliz acl member roles <email|user-id>
zilliz acl member grant <email|user-id> --role <role-id|role-name>
zilliz acl member revoke <email|user-id> --role <role-id|role-name>
# grant/revoke のオプション: --project-id <project-id>; revoke は -y も指定可
メンバー引数はメールアドレスまたは usr- で始まるユーザーID を受け入れます。メールアドレスは解決に追加ルックアップが必要ですが、ユーザーID は直接処理されます。
zilliz acl group list
# オプション: --name <text>, --page <n>, --page-size <n>, --all
zilliz acl group members <group-id>
# オプション: --page <n>, --page-size <n>, --all
zilliz acl group roles <group-id>
zilliz acl group grant <group-id> --role <role-id|role-name>
zilliz acl group revoke <group-id> --role <role-id|role-name>
# grant/revoke のオプション: --project-id <project-id>; revoke は -y も指定可
グループは SCIM プロビジョニング(アカウント自動作成機構)から取得します。このコマンド ツリーはグループの読み取りとロール紐付けの管理を行い、作成は行いません。
--project-id は API が本当に必要な場合だけ対話的に入力を求められ、その値はその実行だけに使用され、~/.zilliz/config には書き込まれません。
| コマンド | --project-id がない場合の動作 |
|---|---|
role create |
ターミナルではプロンプト表示。それ以外はエラー |
role list --type project |
ターミナルではプロンプト表示。それ以外はエラー |
role list --type org |
該当なし。フラグは即座に却下されます |
member/group grant, member/group revoke |
ロールが事前定義されたプロジェクトロール(それ自体の境界を持たない)の場合のみプロンプト表示 |
同上(--role が名前の場合) |
組織ロール名と一致するものがない場合、ターミナルではプロンプト表示。その場合フォールバックのプロジェクトロール検索にプロジェクト指定が必要 |
role update, role principals |
プロジェクト指定なしで実行可能 |
--policy で指定可能な RESOURCE:ACTION ペアのすべて。選択可能なリソースは create 以外のすべてのアクションで =SELECTION を受け入れます。create は選択を含めてはいけません。選択不可なリソースは選択を一切取りません。
リソースは異なるアクションで両レベルに現れることがあります。ステートメントを作成する前に「Level」列を確認してください。
| リソース | Level | 選択可能 | アクション |
|---|---|---|---|
org_member |
組織 | いいえ | view, create, modify, delete |
group |
組織 | いいえ | view, create, modify, delete |
api_key |
組織 | いいえ | view, create, modify, delete |
org_role |
組織 | いいえ | view, grant |
project_role |
組織 | いいえ | view, create, modify, delete, grant |
project |
組織 | いいえ | view, create |
billing |
組織 | いいえ | view, manage |
authentication |
組織 | いいえ | view, manage |
org_control_ops |
組織 | いいえ | view, modify, delete |
recovery |
組織 | いいえ | view, manage |
project_member |
プロジェクト | いいえ | view, create, modify, delete |
project_role |
プロジェクト | いいえ | view, create, modify, delete, grant |
project |
プロジェクト | いいえ | view, modify, delete |
security |
プロジェクト | いいえ | view, manage |
backup |
プロジェクト | いいえ | view, manage |
observability |
プロジェクト | いいえ | view, manage |
serving_cluster |
プロジェクト | はい | create, view, modify, delete |
on_demand_cluster |
プロジェクト | はい | create, view, modify, delete |
volume |
プロジェクト | はい | create, view, modify, delete, usage |
storage_integration |
プロジェクト | はい | create, view, modify, delete, usage |
model_provider_integration |
プロジェクト | はい | create, view, modify, delete, usage |
kms_integration |
プロジェクト | はい | create, view, modify, delete, usage |
datadog_integration |
プロジェクト | はい | create, view, modify, delete, usage |
serving_cluster_data |
プロジェクト | はい | read, write, all |
on_demand_compute_data |
プロジェクト | いいえ | read, write, all |
volume_data |
プロジェクト | はい | read, write, all |
これはクラウドレベルの RBAC(ロールベース アクセス制御)であり、Milvus RBAC ではありません。 zilliz acl は、Zilliz Cloud 内の組織、プロジェクト、クラスタ、ボリュームを操作できるのは誰かを統制します。Milvus クラスタ内のデータベースユーザー、ロール、権限(Search、Insert、CreateCollection など)については、user-role スキルを使用してください。この2つは独立したシステムで、どちらも相手に権限を付与しません。
grant と revoke はべき等(冪等)ではありません。 既存のバインディングを再度付与したり、存在しないバインディングを取り消したりすると、バックエンドから拒否されます。失敗したコマンドを再試行するのではなく、acl member roles <member> または acl role principals <role-id> で先に確認してください。
--role は ID または正確な名前を受け入れます。 名前は先に組織ロール内で、次に1つのプロジェクト内で照合されるので、ターミナル以外からプロジェクトロールを名前で付与するには --project-id が必要です。曖昧な名前は推測をしないで候補を一覧表示します。解決するにはロール ID を渡してください。スクリプトでは ID を優先してください。
組織ロールはここでは読み取り専用です。 バックエンドは org_role の create / modify / delete アクションを定義していないので、role create はプロジェクトのみ、組織ロールの更新または削除は常に失敗します。role list --type org と role describe は通常どおり動作します。
リソースは両レベルに異なるアクションで存在できます。 project_role と project は組織レベルのリソースとして1回、プロジェクトレベルのリソースとして1回、それぞれ現れます。ステートメントを作成する前に「Level」列を読んでください。レベルの不一致はそのレベルでは未知のリソースとして報告されます。
選択ルールはリクエスト前にローカルで施行されます。 選択可能なリソースのアクションには =SELECTION が必要です(create は除く。create は選択を含めてはいけません)。serving_cluster:create,view=in01-a は有効です。選択は view にのみバインドされます。
role update はポリシーを完全に置き換えます。 1つのステート
/v2/roles, /v2/members, and /v2/groups routes must be enabled
for the caller's endpoint. They are still rolling out: a 404 from any
zilliz acl command means the API is not live there yet.zilliz acl is a three-level tree -- acl role, acl member, and acl group. It is deliberately absent from zilliz --help and shell completion while the routes roll out, but every command below runs today and every --help under it works.
# One project's roles: the pre-defined project roles plus that project's
# custom roles. --project-id is required; it is prompted for when omitted.
zilliz acl role list --project-id <project-id>
# Optional: --page <n>, --page-size <n>, --all
# Org roles (--project-id is rejected here: org roles have no project boundary)
zilliz acl role list --type org
zilliz acl role describe <role-id>
# Optional: --project-id <project-id>
zilliz acl role principals <role-id> --all
# Optional: --project-id <project-id>, --page <n>, --page-size <n>
# Lists the members, groups, and API keys the role is bound to.
zilliz acl role delete <role-id>
# Optional: --project-id <project-id>
# Confirms first; pass -y to skip.
--project-id on describe, principals, and delete is the project boundary
of a pre-defined project role, which carries none of its own. A custom role is
addressed by ID alone.
zilliz acl role create --name <role-name> --project-id <project-id> \
--policy project_member:view \
--policy 'serving_cluster:view,modify=in01-a,in01-b'
# Optional: --description <text>, --policies-file <path>
zilliz acl role update <role-id> --description <text>
# Optional:
# --name <role-name>
# --project-id <project-id>
# --policy <shorthand>
# --policies-file <path>
# -y
Only project roles can be created; the API has no org-role create path.
update replaces the policy wholesale -- it never merges -- and prompts before
shrinking the statement count unless -y is passed.
Three ways to supply the policy on role create and role update:
Shorthand (--policy, repeatable), validated locally before the request:
RESOURCE:ACTION[,ACTION...][=SELECTION[,SELECTION...]][@cluster=CLUSTER_ID]
--policy project_member:view
--policy 'serving_cluster:view,modify=in01-a,in01-b'
--policy 'serving_cluster_data:read=mydb/*@cluster=in01-abc'
--policy 'volume_data:read,write=*'
SELECTION picks which instances the statement covers; * means all, and
data resources also accept the db/collection form. @cluster= is an
optional trailing marker, so an @ inside a selection value is left alone.
JSON file (--policies-file <path>, - reads stdin), taking the
policies array exactly as the API defines it. Mutually exclusive with
--policy:
[
{ "resourceType": "serving_cluster", "privileges": ["view"], "resources": ["in01-a"] },
{ "resourceType": "project_member", "privileges": ["view"] }
]
Interactive builder: with neither flag on a terminal, role create
walks through resource, actions, and selection, then prints the equivalent
--policy flags so the run can be scripted next time. Off a terminal with
neither flag the command errors instead.
zilliz acl member roles <email|user-id>
zilliz acl member grant <email|user-id> --role <role-id|role-name>
zilliz acl member revoke <email|user-id> --role <role-id|role-name>
# Optional on grant/revoke: --project-id <project-id>; revoke also takes -y
The member argument takes an email or a usr- user ID. An email costs one
extra lookup to resolve; a user ID goes straight through.
zilliz acl group list
# Optional: --name <text>, --page <n>, --page-size <n>, --all
zilliz acl group members <group-id>
# Optional: --page <n>, --page-size <n>, --all
zilliz acl group roles <group-id>
zilliz acl group grant <group-id> --role <role-id|role-name>
zilliz acl group revoke <group-id> --role <role-id|role-name>
# Optional on grant/revoke: --project-id <project-id>; revoke also takes -y
Groups come from SCIM provisioning; this command tree reads them and manages their role bindings, it does not create them.
--project-id is prompted for only where the API genuinely requires it, and the
answer is used for that invocation alone -- it is never written to
~/.zilliz/config.
| Command | Behavior when --project-id is absent |
|---|---|
role create |
prompts on a terminal; errors otherwise |
role list --type project |
prompts on a terminal; errors otherwise |
role list --type org |
not applicable -- the flag is rejected outright |
member/group grant, member/group revoke |
prompts only when the role is a pre-defined project role, which carries no boundary of its own |
the same, given a --role name |
prompts on a terminal when no org role matches the name, since the project-role listing it falls back to requires a project |
role update, role principals |
proceeds without a project |
Every RESOURCE:ACTION pair --policy accepts. A selectable resource
takes =SELECTION on every action except create, which must never carry
one; a resource that is not selectable takes no selection at all.
A resource can appear at both levels with different actions -- read the Level column before composing a statement.
| Resource | Level | Selectable | Actions |
|---|---|---|---|
org_member |
org | no | view, create, modify, delete |
group |
org | no | view, create, modify, delete |
api_key |
org | no | view, create, modify, delete |
org_role |
org | no | view, grant |
project_role |
org | no | view, create, modify, delete, grant |
project |
org | no | view, create |
billing |
org | no | view, manage |
authentication |
org | no | view, manage |
org_control_ops |
org | no | view, modify, delete |
recovery |
org | no | view, manage |
project_member |
project | no | view, create, modify, delete |
project_role |
project | no | view, create, modify, delete, grant |
project |
project | no | view, modify, delete |
security |
project | no | view, manage |
backup |
project | no | view, manage |
observability |
project | no | view, manage |
serving_cluster |
project | yes | create, view, modify, delete |
on_demand_cluster |
project | yes | create, view, modify, delete |
volume |
project | yes | create, view, modify, delete, usage |
storage_integration |
project | yes | create, view, modify, delete, usage |
model_provider_integration |
project | yes | create, view, modify, delete, usage |
kms_integration |
project | yes | create, view, modify, delete, usage |
datadog_integration |
project | yes | create, view, modify, delete, usage |
serving_cluster_data |
project | yes | read, write, all |
on_demand_compute_data |
project | no | read, write, all |
volume_data |
project | yes | read, write, all |
zilliz acl governs who can
act on organizations, projects, clusters, and volumes in Zilliz Cloud. For
database users, roles, and privileges inside a Milvus cluster (Search,
Insert, CreateCollection, ...) use the user-role skill instead. The two
are separate systems and neither grants the other.acl member roles <member> or acl role principals <role-id> first rather
than retrying a failed call.--role takes an ID or an exact name. A name is matched against the org
roles first and then inside one project, so granting a project role by name
needs --project-id off a terminal. An ambiguous name lists the candidates
instead of guessing -- pass the role ID to resolve it. Prefer IDs in scripts.org_role
create / modify / delete actions, so role create is project-only and
updating or deleting an org role always fails. role list --type org and
role describe work normally.project_role
and project appear once as an org-level resource and once as a project-level
one. Read the Level column before composing a statement; a level mismatch is
reported as an unknown resource for that level.=SELECTION -- except create, which must never
carry one. serving_cluster:create,view=in01-a is valid: the selection binds
to view only.role update replaces the policy wholesale. To add one statement, read
the current policy with role describe and resend the full set, including the
statements being kept.role principals <role-id> before deleting, and tell the user who loses
access.zilliz acl command means the ACL routes are not enabled on
that endpoint yet. This is a rollout state, not a permissions problem: tell
the user to contact support rather than retrying or changing the command.原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。