feat #467: separate column sensitivity policies

This commit is contained in:
devmrko
2026-06-25 22:36:33 +09:00
parent d6c7533edd
commit 4961083f06
18 changed files with 386 additions and 43 deletions

View File

@@ -3,13 +3,19 @@
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cloudhandson.vpdbackoffice.mapper.PermissionMapper">
<select id="findRoles" resultType="com.cloudhandson.vpdbackoffice.domain.permission.AppRole">
SELECT role_id, role_name, CAST(NULL AS VARCHAR2(200)) AS description
SELECT role_id,
role_name,
CAST(NULL AS VARCHAR2(200)) AS description,
NVL(max_sensitivity_level, 'PUBLIC') AS max_sensitivity_level
FROM cb_app_role
ORDER BY role_name
</select>
<select id="findRole" resultType="com.cloudhandson.vpdbackoffice.domain.permission.AppRole">
SELECT role_id, role_name, CAST(NULL AS VARCHAR2(200)) AS description
SELECT role_id,
role_name,
CAST(NULL AS VARCHAR2(200)) AS description,
NVL(max_sensitivity_level, 'PUBLIC') AS max_sensitivity_level
FROM cb_app_role
WHERE role_id = #{roleId}
</select>
@@ -19,10 +25,20 @@
</select>
<insert id="insertRole">
INSERT INTO cb_app_role (role_id, role_name)
VALUES (#{roleId,jdbcType=NUMERIC}, UPPER(#{roleName,jdbcType=VARCHAR}))
INSERT INTO cb_app_role (role_id, role_name, max_sensitivity_level)
VALUES (
#{roleId,jdbcType=NUMERIC},
UPPER(#{roleName,jdbcType=VARCHAR}),
#{maxSensitivityLevel,jdbcType=VARCHAR}
)
</insert>
<update id="updateRoleMaxSensitivity">
UPDATE cb_app_role
SET max_sensitivity_level = #{maxSensitivityLevel,jdbcType=VARCHAR}
WHERE role_id = #{roleId,jdbcType=NUMERIC}
</update>
<delete id="deleteRole">
DELETE FROM cb_app_role
WHERE role_id = #{roleId,jdbcType=NUMERIC}

View File

@@ -57,7 +57,13 @@
</select>
<select id="findColumns" resultType="com.cloudhandson.vpdbackoffice.domain.protectedobject.ProtectedColumn">
SELECT column_id, object_id, column_name, sensitive_yn, visible_role_id
SELECT column_id,
object_id,
column_name,
sensitive_yn,
visible_role_id,
NVL(sensitivity_level, CASE sensitive_yn WHEN 'Y' THEN 'CONFIDENTIAL' ELSE 'PUBLIC' END) AS sensitivity_level,
NVL(redaction_method, CASE sensitive_yn WHEN 'Y' THEN 'NULLIFY' ELSE 'NONE' END) AS redaction_method
FROM cb_protected_column
WHERE object_id = #{objectId}
ORDER BY column_id
@@ -83,10 +89,26 @@
</insert>
<insert id="insertColumn">
INSERT INTO cb_protected_column (column_id, object_id, column_name, sensitive_yn)
VALUES (#{columnId}, #{objectId}, UPPER(#{columnName}), #{sensitiveYn})
INSERT INTO cb_protected_column (
column_id, object_id, column_name, sensitive_yn, sensitivity_level, redaction_method
)
VALUES (
#{columnId}, #{objectId}, UPPER(#{columnName}), #{sensitiveYn}, #{sensitivityLevel}, #{redactionMethod}
)
</insert>
<update id="updateColumnPolicy">
UPDATE cb_protected_column
SET sensitivity_level = #{sensitivityLevel,jdbcType=VARCHAR},
redaction_method = #{redactionMethod,jdbcType=VARCHAR},
sensitive_yn = CASE
WHEN #{sensitivityLevel,jdbcType=VARCHAR} = 'PUBLIC'
AND #{redactionMethod,jdbcType=VARCHAR} = 'NONE' THEN 'N'
ELSE 'Y'
END
WHERE column_id = #{columnId,jdbcType=NUMERIC}
</update>
<update id="updateOrdsPath">
UPDATE cb_protected_object
SET ords_path = #{ordsPath,jdbcType=VARCHAR}