Trục 4: Kỹ thuật
OSCAL - Open Security Controls Assessment Language
OSCAL chuyển đổi tài liệu tuân thủ từ Word/Excel sang các định dạng JSON/YAML đọc được bằng máy với bốn lớp:
- Catalogs - Định nghĩa kiểm soát (NIST 800-53, ISO 27001, BSI IT-Grundschutz)
- Profiles - các Baseline đặc thù của tổ chức
- Implementation Layer - System Security Plans, Component Definitions
- Assessment Layer - Assessment Results, POA&M
BSI ghi nhận chính thức: "OSCAL có khả năng kết nối với các tiêu chuẩn quốc tế". GCBoK định nghĩa các phân loại tuân thủ của Đức (GoBD, BSI, DSGVO) thành các danh mục OSCAL - điều này cho đến nay chưa tồn tại trên thị trường.
Các danh mục OSCAL và các quy tắc OPA là một phần của lớp ngữ nghĩa đọc được bằng máy của ontology GitCover: Chúng mô tả bằng cùng một ngôn ngữ với các từ điển L1–L6, những yêu cầu nào được áp dụng và cách chúng được kiểm tra (xem Khái niệm: Phân cấp doanh nghiệp như một ontology và Bảng thuật ngữ: Ontology).
OPA / Rego - Policy as Code
Open Policy Agent với ngôn ngữ Rego. Các quy tắc tuân thủ được triển khai dưới dạng mã, được kiểm tra tự động đối chiếu với Git-State.
VPRM - Verifiable Process Reward Model
Trong bối cảnh GCBoK, OPA/Rego đóng vai trò là VPRM: Guardrails cho các tác nhân AI được hình thành nhờ bộ quy tắc tất định, chứ không phải nhờ Prompt-Engineering. Nhờ vậy, các tác nhân AI không được bảo đảm thông qua Prompt-Constraints mà thông qua xác thực mã.
Ký GPG
Mọi Git-Commit liên quan đến tuân thủ đều được ký GPG. Chữ ký gắn kết:
- Danh tính (GPG-Fingerprint = chủ thể)
- Nội dung (Commit-Hash = dữ liệu)
- Thời điểm (Commit-Timestamp = khi nào)
Kể từ các siêu dữ liệu .v7g.md, GPG-Fingerprint được gắn với V7GUID - danh tính vẫn không thể bị giả mạo ngay cả khi một tác nhân AI thao túng cấu trúc ngữ nghĩa.
Kiến trúc GPG-Keyring cho khả năng chứng minh pháp y
Để các chữ ký GPG có thể xác minh trong dài hạn — kể cả nhiều năm sau khi
tạo, sau khi khóa hết hạn hoặc bị thu hồi, và khi tái dựng từ các kho lưu trữ
git bundle/ZIP — thì các khóa công khai phải là một phần của Repository.
GCBoK định nghĩa cho việc này một mẫu Keyring trong Repo:
Cấu trúc: .gitcover/keys/
.gitcover/
├── keys/
│ ├── team-lead.asc # Öffentliche Schlüssel von Team-Leads
│ ├── service-accounts/ # CI/CD, Bots, Automation
│ └── identities/ # Personenbezogene Schlüssel (nur PII-Repos)
│ ├── person-a.asc
│ └── person-a_governikus.pdf # Identitätsnachweis pgp.governikus.de
├── trusted-keys.gpg # Gesammelter Keyring (optional, für Verifier)
└── compliance/ # GoBD/DSGVO-Dokumente
Mô hình hai tầng: TOP-Repo vs. PII-Repo
| Tầng | Repository | Nội dung | Mức độ liên quan đến DSGVO |
|---|---|---|---|
| Tổ chức | TOP-Repo (Tenant Organizational Platform) | Khóa của Team-Lead, Service-Accounts, CI/CD-Bots, điểm neo tin cậy trusted-keys.gpg |
Không có dữ liệu cá nhân — tuân thủ DSGVO |
| Cá nhân | PII-Repo (Personal Identifiable Information) | Khóa của nhà phát triển, bằng chứng danh tính (các xác nhận Governikus), GPG-Fingerprint gắn với cá nhân | PII — chỉ truy cập qua Org-Unit-Claims (xem bên dưới) |
Sự tách biệt này phản ánh hai tầng trách nhiệm đối với PII:
- Pháp lý — tầng Tenant (pháp nhân, ví dụ: GCC, GCD, CFP)
- Tổ chức — PMO/Divisions/Departments/Locations (≈ AD Organizational Unit)
Xác minh tách biệt khỏi Keyring cục bộ
Một người kiểm tra (hoặc một Auditor 10 năm sau) xác minh mà không phụ thuộc vào GPG-Keyring cục bộ:
# Nur Repository-Schlüssel nutzen, lokalen Keyring ignorieren
gpg --no-default-keyring --keyring .gitcover/keys/team-lead.asc \
--verify-commit <commit-hash>
--no-default-keyring: Bỏ qua~/.gnupg/--keyring: Chỉ sử dụng khóa từ trong Repository- Khóa công khai đã nằm trong Repository tại thời điểm commit → tính chất bằng chứng có thể tái dựng theo phương pháp pháp y
Hiệu lực theo thời gian và vòng đời khóa
Câu hỏi „Chữ ký có hiệu lực tại thời điểm commit hay không?" được trả lời bởi việc tích hợp vào Repository:
- Khóa công khai nằm trong Git-History của commit
- Ngay cả khi hôm nay khóa đã hết hạn/bị thu hồi: Commit chứng minh rằng khóa thời điểm đó là đáng tin cậy
git bundlevận chuyển các repo bao gồm cả khóa và bằng chứng → một đơn vị pháp y di động, độc lập với hạ tầng còn hoạt động
Mức độ liên quan đến tài liệu hóa quy trình GoBD và NIS2
- GoBD (§ 146 AO, tài liệu hóa quy trình): Kiến trúc Keyring là một bộ phận của tài liệu hóa quy trình — nó mô tả cách các bằng chứng danh tính được tạo ra, lưu trữ và xác minh một cách an toàn về mặt kiểm toán. Mẫu „khóa trong Repo" đáp ứng các yêu cầu của GoBD về khả năng kiểm tra lại và tính bất biến của ràng buộc danh tính.
- NIS2 (quyền truy cập, Art. 21): Việc tách biệt TOP/PII-Repo và kiểm soát
truy cập dựa trên Org-Unit (thông qua OIDC-Claims
tenant_id+ Org-Unit-Claim) hiện thực hóa nguyên tắc đặc quyền tối thiểu. Chỉ những vai trò được cấp quyền (thông qua Org-Unit-Claim) mới có quyền truy cập vào các PII-Repo, và qua đó vào các khóa gắn với cá nhân.
Xem thêm: Chuỗi bài viết „Hướng dẫn quy trình GoBD cho Git" trong GCBoK (Mô-đun 3: Tính toàn vẹn mật mã, Mô-đun 4: Chữ ký & Tính xác thực) đi sâu vào các chủ đề này. Dự án nghiên cứu GitCover.IdP (BSFZ 288-335-338/2026-1) nghiên cứu việc tích hợp IdP.
uuidV7 - UUID Version 7
UUID Version 7 tương thích RFC-4122: dựa trên thời gian, có thể sắp xếp, chống xung đột. Phần mở rộng đặc thù của GitCover với mã định danh lớp 14-bit biến các UUID thành V7GUIDs (xem Khái niệm).
Git với tư cách IdP - Identity Provider
Các Git-Repository dựa trên Gitea đóng vai trò Single Source of Truth (SSoT) cho một hệ thống quản lý danh tính và truy cập tích hợp (IAM). Dự án nghiên cứu được BSFZ công nhận xem xét liệu các Git-Organisation/Teams có thể biểu diễn OAuth2-Clients và Permissions và quản lý hơn 1.000 người dùng với hiệu năng tốt hay không.
Trách nhiệm hai tầng đối với PII (Pháp lý + Tổ chức)
Dữ liệu cá nhân (PII) trong GitCover-Stack chịu một trách nhiệm kép, được phản ánh trong kiến trúc Repository và các OIDC-Claims:
| Tầng | Scope | Loại Repository | OIDC-Claim | Ví dụ |
|---|---|---|---|---|
| 1. Pháp lý | Tenant (pháp nhân) | TOP-Repo + PII-Repo | tenant_id (dựa trên V7GUID) |
GCC, GCD, CFP, ADA |
| 2. Tổ chức | PMO / Division / Department / Location | PII-Repo (phân cấp tinh) | org_unit_id (≈ AD Organizational Unit) |
GCC-Portfolio, GCD-IT, CFP-Sales |
- Pháp lý (tầng Tenant): Pháp nhân là chủ thể chịu trách nhiệm về bảo vệ dữ liệu
(Art. 4 Nr. 7 DSGVO).
tenant_idđược suy ra một cách tất định từ V7GUID của thư mục TOP (xem [Khái niệm: Sổ đăng ký Tenant trung tâm](v7guid-beleg-ketten-und-cryptographic-evidence.html #zentrales-tenant-register)). - Tổ chức (PMO/Org-Unit): Trong phạm vi một Tenant, nhiều đơn vị tổ chức
(PMOs, các phòng ban, các địa điểm) có thể độc lập chịu trách nhiệm với
các tập con của PII. Điều này tương ứng với cấu trúc của
Active-Directory-Organizational-Units. Việc ánh xạ được thực hiện qua
Custom Claim
org_unit_id, được ánh xạ trongothers.jsoncủa Tenant vào các đường dẫn Repository.
Ánh xạ Người - Vai trò (Cầu nối PII) — Công việc cần thực hiện
Ánh xạ Người - Vai trò (Cầu nối PII) — Công việc cần thực hiện
Các container chữ ký GCPN tham chiếu người tham gia (attendees) dưới dạng
Actors (vai trò trong Tenant, chức năng trong doanh nghiệp) và chỉ ghi nhận
các cá nhân ở dạng pseudonym hóa (persons.mappings với tham chiếu PII). Ánh xạ
chuẩn tắc Person → Rollen → Org-Units nằm trong phạm vi PII (gitignored) —
để có một mô hình xuyên suốt, các quan hệ sau vẫn cần được xây dựng chi tiết
trong GCBoK:
| Quan hệ | Trạng thái trong GCBoK | Công việc cần thực hiện |
|---|---|---|
| User → Role | Cách tiếp cận (Git-Repo = IdP; tài liệu chữ ký làm vật mang Claim) | Định nghĩa vai trò cho từng Tenant (GF, GS-Verwalter, Auditor) như một bộ từ vựng chuẩn tắc — tương tự kinds.json/status_flags.json trong OSS-Normative-Root |
| Role → Group | Gitea-Teams (Org → Team → Member) | Mapping Gitea-Team ↔ Role; quy ước Team-Slug + kết nối others.json (allowed_repos) |
| Group → Org-Unit | L2 Department làm điểm neo Org-Unit (02-konzepte) | Bổ sung nội dung departments.json cho từng Tenant (hiện tại AFJD-Master: entries rỗng); quy ước dạng rõ cho org_unit_id (GCC-Portfolio v.v.) |
| Org-Unit → Tenant | Claim hai tầng (tenant_id pháp lý, org_unit_id tổ chức) |
Bổ sung nội dung others.json cho từng TOP-Repo (hiện đang rỗng); tài liệu hóa Claim-Mapping trong Inlet-Pipeline |
| Person (PII) → User | PII-Repo (gitignored) | PII-Schema cho Person↔Role-Mapping (DSGVO: tối thiểu hóa, tham chiếu pseudonym hóa như trong GCPN persons.mappings) |
Liên kết: gcpn-container-1.0 → attendees (các vai trò trong vụ việc) →
persons.mappings (tham chiếu PII pseudonym hóa) → PII-Repo (ánh xạ
chuẩn tắc). Cho đến khi được xây dựng chi tiết, các tham chiếu pseudonym hóa
được tài liệu hóa tại đây được coi là giải pháp chuyển tiếp.
Phân cấp Claim trong Inlet-Pipeline
Inlet-Pipeline (xem Cách thức thực hiện: Cô lập Tenant
đọc others.json tùy theo User-Claim và tiêm các đường dẫn được phép:
{
"tenant_id": "0197a3b2-f3c0-7b00-8001-000000000042",
"org_unit_id": "ORG-1-Portfolio",
"allowed_repos": [
"TOP",
"PII/ORG-1-Portfolio"
]
}
Nhờ đó, một người dùng với org_unit_id = ORG-1-Portfolio có quyền truy cập vào
PII-Repo của Portfolio, nhưng không vào PII/ORG-2-IT — ngay cả khi
tenant_id giống nhau.
Xem thêm: Dự án nghiên cứu về GitCover.IdP được mô tả trong Dự án nghiên cứu. Kiến trúc Keyring (TOP vs. PII) đã được mô tả ở trên dưới mục „Kiến trúc GPG-Keyring".