Ownership proof for Coder IDs recorded in controller status (D11 B)
Maintainer thường phản hồi trong vòng 1 ngày
@ThomasK33 đang làm issue này rồi.
Từ ngày 14/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Problem
Several controllers record a Coder resource ID in the status subresource and then treat that resource as their own. Examples: CoderMCPServer status.configID, CoderAIProvider status.providerID and status.keyID, CoderTemplateTest status.templateID and status.workspaceID, and the IDs in the CoderAIGatewayKey status.
A subject with write access to the status subresource can set such an ID to another Coder resource. The controller then updates that resource to the subject's spec and deletes it with the subject's object. For CoderMCPServer this is threat T19 in the #155 plan: any config in an organization that the control plane lists.
Today only an RBAC contract protects these fields. The docs Roles never grant the status subresource, and the docs warn that resources: ["*"] also grants subresources. The #155 activation (M9) adds an opt-in admission policy that denies codermcpservers/status writes from every subject except the operator ServiceAccount (#155 decision D11, option A).
Proposal (D11 option B)
Record ownership in a form that a status writer cannot forge, for every controller kind at once. One option: an HMAC of the object UID and the Coder resource ID with an operator-held key, checked before the controller acts on a recorded ID.
Open questions:
- Where the key lives, and how it rotates.
- The recovery path when the key is lost or rotated: re-adopt by the ownership markers that the controllers already write (for example the
CoderMCPServernonce), or require a spec edit. - Migration of objects that already hold an unsigned ID.
Why a follow-up
Option B adds key storage, rotation and a recovery path, and it belongs in all controllers at once, the #154 kinds included. The #155 plan chose option A for v1 and this issue as the follow-up.
Refs #155
Refs #154
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $211.58
- Ngôn ngữ chính
- Go
- Star
- 5
- Fork
- 3
- Merge trung bình
- 3 giờ
- Pull request đã merge (30 ngày)
- 192
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của coder/coder-k8s
-
CoderWorkspacePoolMember checkCreate: trust only Coder's own 404 on the name lookup (before PR 12)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
TestReconcile_LicenseRotationUploadsNewSecretValue fails at -count=3 (reuses a control plane name)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
CoderMCPServer Kind E2E follow-upsCó thể đã có người làm @ThomasK33 đã nhận 6 ngày trước. Đang mở
coder/coder-k8s#390 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
CoderMCPServer delete and RBAC test follow-upsCó thể đã có người làm @ThomasK33 đã nhận 6 ngày trước. Đang mở
coder/coder-k8s#378 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Namespace deletion leaves AI Gateway keys and AI providers in CoderCó thể đã có người làm @ThomasK33 đã nhận 6 ngày trước. Đang mở
coder/coder-k8s#353 · 4 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của coder/coder-k8s
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Rafaeldelinares/gentle-mesh#125 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Gentleman-Programming/gentle-ai#5643 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
FootprintAI/Containarium#2869 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
kubevirt/kubevirt#19559 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug raised-by:verifier
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
medici-finance/assay#3817 ·
Maintainer thường phản hồi trong vòng 1 ngày