65 lines
2.6 KiB
Bash
65 lines
2.6 KiB
Bash
#!/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 검증 완료]'
|