For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.
チャット呼び出しを制限する
AccessPolicy を拡張して、特定のエージェントとチャットできるユーザーを許可します。
デフォルトでは、AccessPolicy がレジストリのランタイムリソースへのアクセスを許可していても、エージェントとのチャットは許可されていません。エージェントとチャットするには、AccessPolicy に runtime:* ルールを追加する必要があります。AccessPolicy がすべてのアクセス制御レイヤーにわたってどのように機能するかの概念的な概要については、アクセス制御についてを参照してください。
始める前に
OIDC プロバイダーをセットアップして、ユーザーがレジストリで認証できるようにします。
Solo Enterprise for agentregistry をインストールし、
arctlCLI をセットアップします。まだ実行していない場合は、Solo Enterprise for agentregistry サーバーをポート 12121 でポートフォワードします。レジストリはデフォルトでは外部に公開されないため、ローカルマシンから到達するにはポートフォワードが必要です。
kubectl -n agentregistry-system port-forward svc/agentregistry-enterprise-server 12121:12121
ステップ 1: Keycloak グループとユーザーを作成する
Keycloak Admin REST API を使用して、developers グループとそのグループに属するユーザーを作成します。
Keycloak Admin REST API の管理者トークンを取得します。
export KEYCLOAK_ADMIN_TOKEN=$(curl -s \ -d "client_id=admin-cli" -d "username=admin" -d "password=admin" \ -d "grant_type=password" \ "${KEYCLOAK_URL}/realms/master/protocol/openid-connect/token" \ | jq -r .access_token)developersグループを作成します。curl -s -X POST \ -H "Authorization: Bearer ${KEYCLOAK_ADMIN_TOKEN}" \ -H "Content-Type: application/json" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/groups" \ -d '{"name": "developers"}'dev-userアカウントを作成し、developersグループに割り当てます。curl -s -X POST \ -H "Authorization: Bearer ${KEYCLOAK_ADMIN_TOKEN}" \ -H "Content-Type: application/json" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/users" \ -d '{ "username": "dev-user", "email": "dev-user@example.com", "firstName": "Dev", "lastName": "User", "enabled": true, "credentials": [{"type": "password", "value": "password", "temporary": false}] }' export DEV_USER_ID=$(curl -s \ -H "Authorization: Bearer ${KEYCLOAK_ADMIN_TOKEN}" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/users?username=dev-user" \ | jq -r '.[0].id') export DEVELOPERS_GROUP_ID=$(curl -s \ -H "Authorization: Bearer ${KEYCLOAK_ADMIN_TOKEN}" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/groups?search=developers" \ | jq -r '.[0].id') curl -s -X PUT \ -H "Authorization: Bearer ${KEYCLOAK_ADMIN_TOKEN}" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/users/${DEV_USER_ID}/groups/${DEVELOPERS_GROUP_ID}"developersグループとdev-userが作成され、グループ割り当てが設定されていることを確認します。curl -s \ -H "Authorization: Bearer ${KEYCLOAK_ADMIN_TOKEN}" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/groups" \ | jq '.[].name' curl -s \ -H "Authorization: Bearer ${KEYCLOAK_ADMIN_TOKEN}" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/users?username=dev-user" \ | jq '.[0].username'出力例:
"developers" "dev-user"
ステップ 2: エージェントとチャットする
dev-userユーザー(dev-user/password)として Solo Enterprise for agentregistry にログインします。export OIDC_ISSUER=$KEYCLOAK_ISSUER export OIDC_CLIENT_ID=ar-cli arctl user loginKeycloak が返した JWT を検査して、
developersグループクレームがトークンに含まれていることを確認します。arctl user info --show-tokens \ | jq -r '.access_token | split(".") | .[1] | @base64d | fromjson | {sub, email, Groups}'出力例:
{ "sub": "fbb5e028-4ef7-41de-8a6b-88365c26287d", "email": "dev-user@example.com", "Groups": [ "developers" ] }ユーザーの ID を確認します。CLI 出力で、
developersロールのステータスがconfiguredであることを確認します。この設定は、レジストリコントローラーがdevelopersクレーム値を持つユーザーに対応する AccessPolicy を見つけたことを意味します。arctl user whoami出力例:
FIELD VALUE Subject fbb5e028-... Email dev-user@example.com Issuer http://172.18.0.15:8080/realms/agentregistry Superuser false ROLE STATUS developers configuredSolo Enterprise for agentregistry UI を開き、
myagentエージェントに移動します。Agent Details カードで Open Chat をクリックします。エージェントとチャットを試みます。たとえば、何ができるか尋ねてみましょう。Enter を押してエージェントの返答を待ちます。エージェントチャットへのアクセスが禁止されていることを確認します。
ステップ 3: 呼び出しアクセスを有効にする
管理者として、ユーザーが developers ユーザーグループに属している場合に Solo Enterprise for agentregistry UI で myagent エージェントのチャット呼び出しを許可する AccessPolicy リソースを作成します。
ログアウトし、管理者ユーザー(
admin-user/password)でレジストリに再ログインします。arctl user logout arctl user loginAccessPolicy を作成します。次の例では、
developersグループに属するユーザーが Solo Enterprise for agentregistry UI でエージェントおよび MCP サーバーと対話できるようにします。ただし、チャット呼び出しはmyagentエージェントに限定されます。cat <<EOF | arctl apply -f - apiVersion: ar.dev/v1alpha1 kind: AccessPolicy metadata: name: developers spec: description: "Invocation acccess for myagent agent" principals: - kind: Role name: developers rules: - actions: - "runtime:*" resources: - kind: agent name: myagent - actions: - "registry:*" resources: - kind: server name: "*" - kind: agent name: "*" - kind: runtime name: "*" EOF出力例:
✓ AccessPolicy/developers createdポリシーが作成されたことを確認します。
arctl get accesspolicies出力例:
NAME DESCRIPTION developers Invocation acccess for myagent agent
ステップ 4: 呼び出しアクセスを確認する
Solo Enterprise for agentregistry UI を開き、ログアウトしてから dev ユーザーの
dev-userというユーザー名とpasswordというパスワードで再ログインします。myagentエージェントに移動します。Agent Details カードで Open Chat をクリックします。エージェントとチャットします。たとえば、何ができるか尋ねてみましょう。今回はエージェントとのチャットが許可され、エージェントから返答が得られることを確認します。