#SECPR002. SEC-PR-002 实操二 权限与导出审计

    ID: 1083 Type: Default 2000ms 256MiB Tried: 1 Accepted: 0 Difficulty: 6 Uploaded By: Tags>代码实操数据安全技术人员综合基础进阶综合题族:SEC-PR-002公开样题公开样题

SEC-PR-002 实操二 权限与导出审计

SEC-PR-002 · 数据安全技术人员 · 综合 · 满分 25 分 · 基础进阶综合

可提交 C、C++、Java、Python 3 和 Node.js。评测机没有安装 Kotlin、PyPy,也没有支持大整数的 GNU awk,因此不开放 Kotlin、PyPy 和 Bash。

业务与规则

1. 授权表给出允许的user-object组合,无匹配授权的日志标记U,包括READ或EXPORT操作。

2. 所有日志按时间非递减排列,时间相同时按输入顺序。每条EXPORT日志按同用户最近60秒闭区间[t-60,t]累计导出行数,包含当前行及此前已出现行。

3. 无论该日志是否有权限,EXPORT行都计入该用户的窗口累计。当前行为EXPORT且累计行数>K时,标记B;恰等于K不标记。READ行不参与导出累计,也不标记B。

4. 同时满足时输出UB;只满足其一输出U或B;均不满足输出OK。

输入

第一行p K;随后p行user object,为授权对,可能重复。下一行n;随后n行log_id t user object op rows。log_id唯一,op为READ或EXPORT;READ的rows=0。

输出

每条日志一行:log_id flag,保持日志输入顺序。

范围

0≤p,n≤100000;0≤K≤1e12;0≤t≤1e9;0≤rows≤1e9;时间非递减。建议3秒、256MB,按语言校准;累计用64位整数。

样例输入

1 100
A X
4
L1 0 A X EXPORT 60
L2 60 A Y EXPORT 50
L3 61 A X EXPORT 40
L4 61 B X READ 0

样例输出

L1 OK
L2 UB
L3 OK
L4 U

附件中的 sample.in、sample.out 与上面样例一致,不计入 25 分。计分点见测试配置,按点给分。

整数和文本按空白分隔后的 token 精确比较;小数允许绝对误差或相对误差 1e-6。时限 2 秒、内存 256MB;Java、Python 3 和 Node.js 时限按 2 倍,Java 内存按 2 倍。

题族:SEC-PR-002。状态:公开样题。组卷:否。公开:是。