98 lines
5.4 KiB
XML
98 lines
5.4 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="780" viewBox="0 0 1280 780" role="img" aria-labelledby="title desc">
|
|
<title id="title">DDS 설정과 확인 흐름</title>
|
|
<desc id="desc">DDS 보호 객체 준비, END USER와 DATA ROLE 생성, DATA GRANT 선언, 중앙 권한 인벤토리 확인 흐름.</desc>
|
|
<rect width="1280" height="780" fill="#f8fafc"/>
|
|
|
|
<defs>
|
|
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto">
|
|
<path d="M 0 0 L 8 4 L 0 8 z" fill="#475569"/>
|
|
</marker>
|
|
<style>
|
|
.h1 { font-family: Arial, Helvetica, sans-serif; font-size: 34px; font-weight: 700; fill: #0f172a; }
|
|
.sub { font-family: Arial, Helvetica, sans-serif; font-size: 19px; fill: #475569; }
|
|
.title { font-family: Arial, Helvetica, sans-serif; font-size: 21px; font-weight: 700; fill: #0f172a; }
|
|
.text { font-family: Arial, Helvetica, sans-serif; font-size: 17px; fill: #334155; }
|
|
.mono { font-family: Menlo, Consolas, monospace; font-size: 15px; fill: #1e293b; }
|
|
.head { font-family: Arial, Helvetica, sans-serif; font-size: 15px; font-weight: 700; fill: #334155; }
|
|
.cell { font-family: Menlo, Consolas, monospace; font-size: 15px; fill: #1e293b; }
|
|
.card { fill: #ffffff; stroke: #cbd5e1; stroke-width: 2; }
|
|
.blue { fill: #eff6ff; stroke: #2563eb; stroke-width: 2; }
|
|
.purple { fill: #f5f3ff; stroke: #7c3aed; stroke-width: 2; }
|
|
.green { fill: #ecfdf5; stroke: #059669; stroke-width: 2; }
|
|
.orange { fill: #fff7ed; stroke: #ea580c; stroke-width: 2; }
|
|
.audit { fill: #eef2ff; stroke: #4f46e5; stroke-width: 2; }
|
|
.arrow { stroke: #475569; stroke-width: 2.2; marker-end: url(#arrow); fill: none; }
|
|
.rule { stroke: #cbd5e1; stroke-width: 1.5; }
|
|
</style>
|
|
</defs>
|
|
|
|
<text x="48" y="58" class="h1">DDS 설정과 확인 흐름</text>
|
|
<text x="48" y="90" class="sub">적용은 DATA GRANT 단위로 선언하고, 확인은 Dictionary View에서 통합 조회</text>
|
|
|
|
<rect x="48" y="128" width="510" height="100" rx="8" class="blue"/>
|
|
<text x="74" y="164" class="title">1. 보호 객체 준비</text>
|
|
<text x="74" y="198" class="mono">CREATE VIEW / TABLE admin.cb_dds_v_search_documents</text>
|
|
|
|
<line x1="303" y1="228" x2="303" y2="252" class="arrow"/>
|
|
|
|
<rect x="48" y="260" width="510" height="112" rx="8" class="purple"/>
|
|
<text x="74" y="296" class="title">2. 사용자와 역할 생성</text>
|
|
<text x="74" y="330" class="mono">CREATE END USER "cb_dds_hr"</text>
|
|
<text x="74" y="356" class="mono">CREATE DATA ROLE cb_dds_hr_role</text>
|
|
|
|
<line x1="303" y1="372" x2="303" y2="396" class="arrow"/>
|
|
|
|
<rect x="48" y="404" width="510" height="178" rx="8" class="green"/>
|
|
<text x="74" y="440" class="title">3. DATA GRANT 선언</text>
|
|
<text x="74" y="474" class="mono">CREATE DATA GRANT admin.cb_dg_hr_docs</text>
|
|
<text x="74" y="500" class="mono">AS SELECT (ALL COLUMNS EXCEPT contents)</text>
|
|
<text x="74" y="526" class="mono">ON admin.cb_dds_v_search_documents</text>
|
|
<text x="74" y="552" class="mono">WHERE dept_code = 'HR' TO cb_dds_hr_role</text>
|
|
|
|
<line x1="303" y1="582" x2="303" y2="606" class="arrow"/>
|
|
|
|
<rect x="48" y="614" width="510" height="96" rx="8" class="orange"/>
|
|
<text x="74" y="650" class="title">4. 조회 시 자동 적용</text>
|
|
<text x="74" y="684" class="text">허용 행과 컬럼만 반환. 권한 미부여 시 ORA-00942.</text>
|
|
|
|
<rect x="638" y="128" width="582" height="582" rx="8" class="audit"/>
|
|
<text x="670" y="166" class="title">5. 권한 인벤토리 확인</text>
|
|
<text x="670" y="198" class="text">적용 상태는 아래 Dictionary View를 조합해 확인</text>
|
|
|
|
<rect x="670" y="224" width="250" height="64" rx="6" class="card"/>
|
|
<text x="692" y="250" class="mono">DBA_DATA_GRANTS</text>
|
|
<text x="692" y="274" class="text">객체, 조건, 컬럼 범위</text>
|
|
|
|
<rect x="948" y="224" width="250" height="64" rx="6" class="card"/>
|
|
<text x="970" y="250" class="mono">DBA_DATA_ROLE_GRANTS</text>
|
|
<text x="970" y="274" class="text">END USER와 역할 매핑</text>
|
|
|
|
<text x="670" y="332" class="head">END_USER</text>
|
|
<text x="832" y="332" class="head">DATA_ROLE</text>
|
|
<text x="1012" y="332" class="head">ROW / COLUMN</text>
|
|
<line x1="670" y1="346" x2="1198" y2="346" class="rule"/>
|
|
|
|
<text x="670" y="382" class="cell">cb_dds_hr</text>
|
|
<text x="832" y="382" class="cell">HR_ROLE</text>
|
|
<text x="1012" y="382" class="cell">HR / EXCEPT contents</text>
|
|
<line x1="670" y1="402" x2="1198" y2="402" class="rule"/>
|
|
|
|
<text x="670" y="438" class="cell">cb_dds_fin</text>
|
|
<text x="832" y="438" class="cell">FIN_ROLE</text>
|
|
<text x="1012" y="438" class="cell">FIN / EXCEPT contents</text>
|
|
<line x1="670" y1="458" x2="1198" y2="458" class="rule"/>
|
|
|
|
<text x="670" y="494" class="cell">cb_dds_all</text>
|
|
<text x="832" y="494" class="cell">ALL_ROLE</text>
|
|
<text x="1012" y="494" class="cell">ALL / ALL COLUMNS</text>
|
|
<line x1="670" y1="514" x2="1198" y2="514" class="rule"/>
|
|
|
|
<text x="670" y="550" class="cell">cb_dds_none</text>
|
|
<text x="832" y="550" class="cell">CONNECT_ONLY</text>
|
|
<text x="1012" y="550" class="cell">- / ORA-00942</text>
|
|
|
|
<rect x="670" y="610" width="528" height="72" rx="8" fill="#ffffff" stroke="#c7d2fe" stroke-width="2"/>
|
|
<text x="694" y="638" class="title">운영 포인트</text>
|
|
<text x="694" y="666" class="text">승인 사유와 ticket 번호는 별도 이력 테이블에 보관</text>
|
|
</svg>
|