コンテンツにスキップ
これは最新の機能を備えた最新リリースですが、長期サポートは提供されません。サポートを継続するには、新しいリリースごとにアップグレードするか、四半期ごとの安定版リリースをご利用ください。

For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.

チャット呼び出しを制限する

Page as Markdown

AccessPolicy を拡張して、特定のエージェントとチャットできるユーザーを許可します。

デフォルトでは、AccessPolicy がレジストリのランタイムリソースへのアクセスを許可していても、エージェントとのチャットは許可されていません。エージェントとチャットするには、AccessPolicy に runtime:* ルールを追加する必要があります。AccessPolicy がすべてのアクセス制御レイヤーにわたってどのように機能するかの概念的な概要については、アクセス制御についてを参照してください。

始める前に

  1. OIDC プロバイダーをセットアップして、ユーザーがレジストリで認証できるようにします。

  2. Solo Enterprise for agentregistry をインストールし、arctl CLI をセットアップします。

  3. まだ実行していない場合は、Solo Enterprise for agentregistry サーバーをポート 12121 でポートフォワードします。レジストリはデフォルトでは外部に公開されないため、ローカルマシンから到達するにはポートフォワードが必要です。

    kubectl -n agentregistry-system port-forward svc/agentregistry-enterprise-server 12121:12121
  1. AI アーティファクトのカタログを構築します

ステップ 1: Keycloak グループとユーザーを作成する

Keycloak Admin REST API を使用して、developers グループとそのグループに属するユーザーを作成します。

  1. 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)
  2. 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"}'
  3. 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}"
  4. 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: エージェントとチャットする

  1. dev-user ユーザー(dev-user/password)として Solo Enterprise for agentregistry にログインします。

    export OIDC_ISSUER=$KEYCLOAK_ISSUER
    export OIDC_CLIENT_ID=ar-cli
    arctl user login
  2. Keycloak が返した 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"
      ]
    }
    
  3. ユーザーの 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   configured
    
  4. Solo Enterprise for agentregistry UI を開き、myagent エージェントに移動します。Agent Details カードで Open Chat をクリックします。

  5. エージェントとチャットを試みます。たとえば、何ができるか尋ねてみましょう。Enter を押してエージェントの返答を待ちます。エージェントチャットへのアクセスが禁止されていることを確認します。

ステップ 3: 呼び出しアクセスを有効にする

管理者として、ユーザーが developers ユーザーグループに属している場合に Solo Enterprise for agentregistry UI で myagent エージェントのチャット呼び出しを許可する AccessPolicy リソースを作成します。

  1. ログアウトし、管理者ユーザー(admin-user/password)でレジストリに再ログインします。

    arctl user logout
    arctl user login
  2. AccessPolicy を作成します。次の例では、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
    
  3. ポリシーが作成されたことを確認します。

    arctl get accesspolicies

    出力例:

    NAME         DESCRIPTION
    developers   Invocation acccess for myagent agent
    

ステップ 4: 呼び出しアクセスを確認する

  1. Solo Enterprise for agentregistry UI を開き、ログアウトしてから dev ユーザーの dev-user というユーザー名と password というパスワードで再ログインします。

  2. myagent エージェントに移動します。Agent Details カードで Open Chat をクリックします。

  3. エージェントとチャットします。たとえば、何ができるか尋ねてみましょう。今回はエージェントとのチャットが許可され、エージェントから返答が得られることを確認します。