[QA] add Korean RBAC MCP scenario log runner
This commit is contained in:
64
scripts/run-kb-rbac-mcp-log.sh
Normal file
64
scripts/run-kb-rbac-mcp-log.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
# KB 역할(RBAC) + 속성(ABAC) MCP 검증 로그
|
||||
#
|
||||
# Required business bearer tokens:
|
||||
# FC00789_TOKEN 담당설계사 FC00789
|
||||
# FC00833_TOKEN 타설계사 FC00833
|
||||
# MGR_GN01_TOKEN 지점장 MGR_GN01 (설계사채널)
|
||||
#
|
||||
# MCP access token defaults to ~/.config/codex/vpd-mcp.env.
|
||||
# It is separate from the three business bearer tokens above.
|
||||
set -Eeuo pipefail
|
||||
|
||||
if [[ -f "${HOME}/.config/codex/vpd-mcp.env" ]]; then
|
||||
set -a
|
||||
# shellcheck disable=SC1090
|
||||
. "${HOME}/.config/codex/vpd-mcp.env"
|
||||
set +a
|
||||
fi
|
||||
|
||||
: "${VPD_MCP_ACCESS_TOKEN:?VPD_MCP_ACCESS_TOKEN이 필요합니다.}"
|
||||
: "${FC00789_TOKEN:?FC00789_TOKEN이 필요합니다.}"
|
||||
: "${FC00833_TOKEN:?FC00833_TOKEN이 필요합니다.}"
|
||||
: "${MGR_GN01_TOKEN:?MGR_GN01_TOKEN이 필요합니다.}"
|
||||
|
||||
MCP_URL="${VPD_MCP_URL:-https://kb.cloud-handson.com/mcp}"
|
||||
|
||||
call_tool() {
|
||||
local scenario="$1"
|
||||
local token="$2"
|
||||
local tool_name="$3"
|
||||
|
||||
jq -n --arg name "$tool_name" --arg token "$token" '
|
||||
{
|
||||
jsonrpc: "2.0",
|
||||
id: 1,
|
||||
method: "tools/call",
|
||||
params: {
|
||||
name: $name,
|
||||
arguments: {bearerToken: $token, limit: 100}
|
||||
}
|
||||
}
|
||||
' | curl -ksS --fail --connect-timeout 5 --max-time 45 \
|
||||
-H "Authorization: Bearer ${VPD_MCP_ACCESS_TOKEN}" \
|
||||
-H 'Content-Type: application/json' \
|
||||
--data @- "$MCP_URL" \
|
||||
| jq -r --arg scenario "$scenario" '
|
||||
(.result.content[0].text | fromjson) as $result
|
||||
| ($result.maskedColumns // [] | join(", ")) as $masked
|
||||
| "[" + $scenario + "]\n"
|
||||
+ " 대상: " + $result.object + "\n"
|
||||
+ " 결과: " + $result.status + ", 조회 " + ($result.rowCount | tostring) + "건\n"
|
||||
+ " NULL 처리 컬럼: " + (if $masked == "" then "없음" else $masked end) + "\n"
|
||||
'
|
||||
}
|
||||
|
||||
echo '[KB RBAC/ABAC MCP 검증 시작]'
|
||||
call_tool '담당설계사 FC00789 · 본인 계약' "$FC00789_TOKEN" 'ords.query.poc_2.kb_contracts'
|
||||
call_tool '담당설계사 FC00789 · 담당 고객' "$FC00789_TOKEN" 'ords.query.poc_2.kb_customers'
|
||||
call_tool '담당설계사 FC00789 · 담당 고객 청구' "$FC00789_TOKEN" 'ords.query.poc_2.kb_claims'
|
||||
call_tool '담당설계사 FC00789 · 담당 고객 외부보유' "$FC00789_TOKEN" 'ords.query.poc_2.kb_external_holdings'
|
||||
call_tool '타설계사 FC00833 · 본인 계약만' "$FC00833_TOKEN" 'ords.query.poc_2.kb_contracts'
|
||||
call_tool '지점장 MGR_GN01 · 설계사채널 계약' "$MGR_GN01_TOKEN" 'ords.query.poc_2.kb_contracts'
|
||||
call_tool '지점장 MGR_GN01 · 설계사채널 고객' "$MGR_GN01_TOKEN" 'ords.query.poc_2.kb_customers'
|
||||
echo '[KB RBAC/ABAC MCP 검증 완료]'
|
||||
Reference in New Issue
Block a user