Back to Notes

Notes

K8s 17. Confidential Computing

Kubernetes/container 환경에서 application code 변경 없이 confidential computing을 적용하는 no-code-change 접근을 data in use, TEE, attestation, key release, privileged user threat, DevSecOps 관점에서 정리한다.

Published
Updated
Area
Cloud Infrastructure
Type
concept
Series
Kubernetes Essentials
Category
Notes
KubernetesConfidential ComputingData in UseTEEAttestationIBM Cloud Data ShieldContainer SecurityPrivileged User AttackZero TrustDevSecOps

Confidential computing은 기존의 data at restdata in transit 보호를 넘어, application이 데이터를 실제로 처리하는 순간인 data in use까지 보호하려는 보안 모델이다.

기존 보안 모델은 주로 저장 중인 데이터와 전송 중인 데이터를 보호했다.

Data at rest
  → disk, database, object storage 등에 저장된 데이터

Data in transit
  → network를 통해 이동 중인 데이터

하지만 application이 데이터를 처리하려면 어느 순간에는 암호화된 데이터가 복호화되어 memory 위에 올라와야 한다.

encrypted data
  ↓ decrypt
plaintext in memory
  ↓ process
result
  ↓ encrypt / store / send

이때 발생하는 data in use를 hardware-backed Trusted Execution Environment 안에서 보호하려는 접근이 confidential computing이다.


핵심 요약

Confidential computing은 application이 데이터를 처리하는 순간에도 data confidentiality와 integrity를 보장하려는 보안 접근이다.

기존 보호:
  data at rest
  data in transit

추가로 필요한 보호:
  data in use

해결 방향:
  hardware-based Trusted Execution Environment
  secure enclave
  attestation
  key release policy
  runtime protection

여기서 no-code-change approach는 application business logic을 다시 작성하지 않고도, 기존 containerized application을 confidential computing 환경으로 감싸서 보호하는 접근을 의미한다.

Application code no change

Deployment no change

Business logic no change
  +
Runtime/deployment/security layer 변경

한 문장으로 정리하면 다음과 같다.

No-code-change confidential computing은 기존 containerized application의 business logic을 바꾸지 않고, hardware-backed TEE와 attestation 기반 runtime protection을 적용해 Kubernetes 환경에서 data in use와 privileged infrastructure threat를 줄이는 cloud native security 접근이다.


왜 data in use 보호가 필요한가?

Cloud security에서는 보통 data state를 세 가지로 나눈다.

Data at rest
  → 저장 중인 데이터

Data in transit
  → 전송 중인 데이터

Data in use
  → CPU와 memory에서 처리 중인 데이터

기존 보안 체계는 data at restdata in transit을 비교적 잘 다뤄왔다.

Data at rest
  → disk encryption
  → database encryption
  → object storage encryption
  → KMS/HSM 기반 key management

Data in transit
  → TLS
  → mTLS
  → VPN
  → private network

문제는 data in use다. 데이터가 처리되려면 어느 순간에는 plaintext 형태로 memory 위에 존재해야 한다.

encrypted customer record
  ↓ decrypt
plaintext customer record in memory
  ↓ process
encrypted result

이 순간이 공격 표면이 된다.

root 권한을 가진 host admin
compromised kernel
malicious privileged container
debugging tool
memory dump
runtime introspection
insider threat
cloud infrastructure operator

Confidential computing은 이 지점을 줄이려는 기술이다.


Kubernetes container 환경에서의 문제

Kubernetes는 containerized workload를 실행하기 위한 platform이지만, 모든 threat를 자동으로 막아주지는 않는다.

Kubernetes cluster에는 여러 권한 계층이 있다.

cluster-admin
namespace admin
node admin
container runtime access
cloud infrastructure operator
CI/CD operator
application owner

일반적인 container 보안은 다음을 통해 강화한다.

RBAC
NetworkPolicy
Pod Security Standards
non-root container
readOnlyRootFilesystem
image scanning
admission control
Secrets management
node hardening
runtime security

하지만 privileged user가 node나 runtime에 접근할 수 있는 상황이라면, application 내부의 민감한 data in use는 여전히 위험할 수 있다.

예를 들어 공격자는 다음을 시도할 수 있다.

container process 조사
environment variable 확인
mounted secret 확인
runtime debug
memory dump
filesystem 접근
privileged pod 실행
hostPath mount
container runtime socket 접근

문제의 핵심은 다음 질문이다.

Kubernetes 보안을 잘 해도,
privileged user나 infrastructure operator를 완전히 신뢰해야 하는가?

Application code를 다시 작성하지 않고,
containerized application의 runtime data를 더 강하게 보호할 수 있는가?

Confidential computing은 이 질문에 대한 하나의 보안 layer다.


Confidential computing의 기본 구조

Confidential computing의 중심 개념은 TEE(Trusted Execution Environment)다.

TEE는 hardware 기반으로 격리된 실행 환경이다.

Normal world
  ├─ host OS
  ├─ hypervisor
  ├─ admin tools
  ├─ other workloads
  └─ privileged users

Trusted Execution Environment
  └─ protected application + protected data

핵심 보안 목표는 다음이다.

data confidentiality
  → TEE 밖에서는 data를 읽기 어렵게 한다.

data integrity
  → TEE 밖에서 data나 execution state를 임의로 변조하기 어렵게 한다.

code integrity
  → 기대한 code가 실행 중인지 검증한다.

attestation
  → remote party가 “정말 신뢰 가능한 TEE에서 실행 중인지” 확인한다.

즉 confidential computing의 목표는 다음처럼 정리할 수 있다.

host를 완전히 신뢰하지 않는다.
hypervisor를 완전히 신뢰하지 않는다.
privileged operator를 완전히 신뢰하지 않는다.
hardware-backed TEE와 attestation으로 실행 환경을 검증한다.

No code change가 의미하는 것

No code change는 중요한 표현이다.

이 말은 보통 다음을 의미한다.

application source code를 confidential computing 전용으로 다시 작성하지 않는다.
business logic을 바꾸지 않는다.
기존 containerized application을 최대한 그대로 사용한다.
보호 기능은 runtime, wrapper, platform, deployment layer에서 제공한다.

하지만 “아무것도 안 바꾼다”는 뜻은 아니다.

바뀔 수 있는 것은 다음이다.

deployment 방식
container runtime
image packaging
manifest 설정
node type
security profile
key release flow
attestation 설정
CI/CD packaging step

즉 더 정확한 표현은 다음과 같다.

Application code no change

Deployment no change

Business logic no change
  +
Runtime/deployment/security layer 변경

이 구분이 중요하다. No-code-change approach는 application 개발자의 migration 부담을 줄이지만, platform engineering과 DevSecOps 측면에서는 설정과 운영 흐름이 추가된다.


IBM Cloud Data Shield가 다루는 문제

No-code-change confidential computing 접근의 예로 IBM Cloud Data Shield를 볼 수 있다.

개념적으로 정리하면 다음 흐름이다.

기존 containerized app

IBM Cloud Data Shield 적용

application을 protected execution environment 안에서 실행

privileged user가 container 내부 data에 접근하기 어려워짐

application code는 그대로 유지

일반적인 Kubernetes container는 worker node 위에서 실행된다.

Worker Node
  ├─ kubelet
  ├─ container runtime
  ├─ Pod
  │   └─ container process
  └─ host OS / kernel

Confidential computing을 적용하면 sensitive workload가 더 강한 trust boundary 안에서 실행된다.

Worker Node / Infrastructure
  ├─ normal control plane interaction
  ├─ Kubernetes scheduling
  ├─ Pod lifecycle
  └─ protected enclave / TEE
      └─ application process + sensitive data

여기서 중요한 점은 Kubernetes workflow와 confidential computing boundary가 함께 작동해야 한다는 것이다.


Privileged user attack이란 무엇인가?

Privileged user attack은 높은 권한을 가진 사용자가 application data에 접근하려는 상황을 의미한다.

예를 들어 다음 actor가 있을 수 있다.

cluster administrator
node administrator
cloud infrastructure operator
malicious insider
compromised privileged account
compromised CI/CD operator

일반적인 보안 체계에서는 이런 actor를 어느 정도 신뢰해야 한다.

root 권한자는 host filesystem을 볼 수 있다.
node admin은 container runtime에 접근할 수 있다.
cluster-admin은 Pod spec과 Secret을 볼 수 있다.
infrastructure operator는 VM lifecycle을 제어할 수 있다.

Confidential computing은 이 신뢰 범위를 줄이려는 접근이다.

기존 모델:
  privileged operator를 신뢰해야 함

confidential computing 모델:
  privileged operator도 TEE 내부 plaintext data에는 접근하기 어렵게 함

다만 완전한 마법은 아니다. Confidential computing이 줄이는 것은 특정 threat surface다. 다음 문제까지 자동으로 해결하지는 않는다.

application 내부 취약점
잘못된 authorization
공개 API 취약점
악성 code 배포
secret을 log로 출력하는 문제
plaintext를 TEE 밖으로 직접 전송하는 문제

Confidential computing이 Kubernetes 보안과 다른 점

Kubernetes 보안과 confidential computing은 서로 대체 관계가 아니다.

영역Kubernetes 보안Confidential computing
접근 제어RBAC, ServiceAccountTEE 내부 접근 제한
networkNetworkPolicy, mTLSTEE 밖 traffic 자체를 자동 해결하지는 않음
Pod 권한Pod Security, securityContextprivileged actor로부터 runtime data 보호
imageimage scanning, signing실행 환경의 confidentiality/integrity 강화
secretKubernetes Secret, external secret managersecret이 memory에서 사용될 때 보호
nodenode hardening, patchingunderlying platform 신뢰 축소
runtimeseccomp, AppArmor, SELinuxhardware-isolated execution

Kubernetes 보안은 주로 다음을 제어한다.

누가 무엇을 배포할 수 있는가?
Pod가 어떤 권한으로 실행되는가?
Pod끼리 통신할 수 있는가?
어떤 image를 쓸 수 있는가?
Secret을 누가 볼 수 있는가?

Confidential computing은 다음 질문을 다룬다.

application이 데이터를 처리하는 순간,
그 plaintext data를 host, hypervisor, privileged operator가 볼 수 있는가?

따라서 둘은 함께 써야 한다.

Kubernetes hardening
  +
Confidential computing
  +
Secrets management
  +
Supply chain security
  +
Observability

No-code confidential computing의 예상 흐름

No-code-change confidential computing 흐름을 DevOps 관점으로 풀면 다음과 같다.

1. 기존 containerized application 준비
2. sensitive workload 식별
3. confidential computing 지원 runtime/platform 선택
4. application image를 secure runtime에 맞게 packaging
5. Kubernetes/OpenShift에 배포
6. attestation으로 실행 환경 검증
7. 검증된 환경에만 secret/key release
8. protected environment 안에서 application 실행
9. privileged user attack 시 plaintext data 접근 차단

일반적인 배포와 비교하면 다음과 같다.

기존 Kubernetes 배포:
  container image

Deployment

Pod

container runtime

application process

Confidential computing 적용:
  container image

shielding / confidential runtime packaging

Deployment

TEE / enclave capable runtime

protected application process

Application code는 그대로일 수 있지만, runtime layer와 deployment layer에 confidential computing 설정이 추가된다.


Attestation이 중요한 이유

Confidential computing에서 attestation은 핵심이다.

단순히 “보호된 환경에서 실행 중이다”라고 주장하는 것만으로는 부족하다. 외부의 key manager나 client가 정말 신뢰 가능한 environment인지 확인해야 한다.

Attestation의 mental model은 다음이다.

TEE가 measurement 생성

hardware root of trust가 report/signature 제공

remote verifier가 report 검증

예상한 code와 environment인지 확인

검증 성공 시 secret/key release

왜 중요한가?

공격자가 비슷한 이름의 fake environment를 만들 수 있다.
잘못된 image가 실행될 수 있다.
debug mode가 켜진 enclave일 수 있다.
취약한 runtime version일 수 있다.

Attestation은 이런 질문에 답한다.

정말 기대한 code가 실행 중인가?
정말 기대한 hardware-backed TEE 안에서 실행 중인가?
runtime이 변조되지 않았는가?
이 environment에 secret을 줘도 되는가?

Confidential computing에서 key release, secret injection, sensitive data access는 attestation과 연결될 때 의미가 커진다.


Key release와 confidential workload

Confidential computing에서 key management는 매우 중요하다.

Sensitive data를 처리하려면 application이 key나 secret을 가져야 한다. 그런데 그 key를 아무 환경에나 주면 confidential computing 의미가 약해진다.

좋은 흐름은 다음이다.

Application starts in TEE

TEE attestation report 생성

Key manager가 attestation 검증

검증된 workload에만 key release

Application이 TEE 내부에서 data decrypt/process

즉 key release 기준이 단순 identity에서 더 나아간다.

기존 방식:
  이 ServiceAccount인가?
  이 IAM role인가?

Confidential computing 방식:
  이 identity인가?
  +
  이 workload가 기대한 TEE에서 실행 중인가?
  +
  이 code measurement가 예상값과 일치하는가?

이것이 Zero Trust 관점과도 잘 맞는다.


Kubernetes에서 confidential workload를 운영하는 구조

Kubernetes 관점에서는 confidential workload를 일반 workload와 분리해 운영하는 것이 자연스럽다.

예시 구조:

Cluster
  ├─ general node pool
  │   ├─ frontend
  │   ├─ public API
  │   └─ batch worker

  └─ confidential node pool
      ├─ payment processor
      ├─ medical data processor
      ├─ key handling service
      └─ sensitive analytics job

Scheduling은 label과 taint/toleration으로 제어할 수 있다.

nodeSelector:
  workload-type: confidential

또는 다음처럼 toleration을 사용할 수 있다.

tolerations:
  - key: "confidential"
    operator: "Equal"
    value: "true"
    effect: "NoSchedule"

운영자는 다음을 분리해야 한다.

일반 workload
  → standard node pool

민감 workload
  → confidential computing 지원 node pool / runtime

관리 plane
  → 최소 권한

secret/key release
  → attestation 기반

어떤 workload가 confidential computing에 적합한가?

모든 application을 confidential computing으로 감쌀 필요는 없다.

적합한 workload는 다음과 같다.

개인정보 처리
금융 transaction 처리
의료 데이터 처리
암호화 key 처리
AI model inference 중 민감한 input 처리
multi-party data collaboration
regulated data processing
high-value business logic
digital asset custody
fraud detection pipeline

특히 다음 조건이 있으면 confidential computing을 검토할 만하다.

cloud provider나 infrastructure operator까지 완전히 신뢰하기 어렵다.
privileged admin threat를 줄이고 싶다.
data in use 보호가 compliance 요구사항과 연결된다.
민감 데이터가 memory에서 처리된다.
고객에게 stronger isolation guarantee를 제공해야 한다.

반대로 다음 workload에는 과할 수 있다.

public static web serving
민감 데이터가 거의 없는 stateless frontend
단순 CRUD admin tool
내부 개발용 low-risk service
latency가 극도로 민감하지만 confidential runtime 검증이 안 된 workload

Confidential computing이 막아주는 것과 못 막는 것

Confidential computing은 강력하지만 모든 보안을 해결하지 않는다.

줄여줄 수 있는 위험

privileged infrastructure operator의 memory 접근
host-level inspection
일부 runtime introspection
memory dump 기반 data exposure
cloud provider 내부자 위협 일부
다른 tenant나 host component로부터의 data in use 노출

자동으로 해결하지 못하는 것

application 자체의 SQL injection
잘못된 authorization logic
API token 탈취
취약한 dependency
malicious container image
supply chain compromise
secret을 log에 출력하는 문제
plaintext를 TEE 밖으로 전송하는 문제
잘못된 network policy
과도한 RBAC 권한
client-side data leakage
side-channel attack 전체

즉 confidential computing은 보안 layer 중 하나다.

Confidential computing
  ≠ complete security

Confidential computing
  = data in use 보호와 privileged infrastructure trust 축소

No-code approach의 장점

No-code-change 방식의 가장 큰 장점은 adoption barrier를 낮춘다는 것이다.

기존 confidential computing은 개발자가 enclave programming model을 직접 이해해야 하는 경우가 많았다.

application refactoring
enclave SDK 학습
trusted/untrusted partitioning
syscall 제한 대응
memory 제한 대응
special build pipeline

No-code-change approach는 이 부담을 줄인다.

장점:

기존 application code를 유지할 수 있다.
migration 비용이 낮다.
DevOps workflow에 통합하기 쉽다.
Kubernetes container 전략과 맞추기 쉽다.
기존 microservices 중 민감 service만 선택적으로 보호할 수 있다.
team이 enclave programming을 깊게 몰라도 시작할 수 있다.

No-code approach의 한계

No-code-change는 편리하지만 trade-off가 있다.

모든 workload가 자동으로 잘 동작하지 않을 수 있다.
특정 system call, runtime behavior, memory pattern에 제약이 있을 수 있다.
debugging이 어려워질 수 있다.
performance overhead가 생길 수 있다.
observability 방식이 제한될 수 있다.
hardware 지원 node가 필요할 수 있다.
attestation/key release workflow가 추가된다.
CI/CD packaging이 바뀔 수 있다.

또한 code를 바꾸지 않는다고 해서 architecture 검토가 필요 없는 것은 아니다.

sensitive data가 TEE 밖으로 log에 남는가?
application이 외부 service로 plaintext를 보내는가?
secret이 환경변수로 과도하게 노출되는가?
debug endpoint가 열려 있는가?
admin API가 과도한 권한을 갖는가?

No-code approach는 “쉽게 시작하게 해주는 방법”이지, security design을 대체하지 않는다.


Kubernetes 보안과 함께 적용해야 할 것

Confidential computing을 적용하더라도 Kubernetes security baseline은 필요하다.

RBAC 최소 권한

cluster-admin 남용 금지
namespace별 권한 분리
ServiceAccount별 최소 권한
CI/CD deploy 권한 제한

확인 명령:

kubectl auth can-i create pods
kubectl auth can-i get secrets -n production

Pod Security

privileged container 금지
hostPath 제한
hostNetwork 제한
runAsNonRoot
allowPrivilegeEscalation: false
readOnlyRootFilesystem
capabilities drop

예시:

securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true
  capabilities:
    drop:
      - ALL

NetworkPolicy

sensitive workload로 들어오는 traffic 제한
sensitive workload에서 나가는 egress 제한
broker/db/key manager 접근만 허용

Image security

image scanning
image signing
trusted registry
SBOM
admission policy

Secret management

Kubernetes Secret plain 사용 최소화
external secret manager
KMS/HSM
attestation 기반 key release
rotation
least privilege

Confidential computing은 이 보안 baseline 위에 올라가는 추가 layer로 보는 것이 맞다.


DevOps workflow에서의 위치

No-code confidential computing을 DevOps workflow에 넣으면 다음처럼 된다.

Source code

CI test

container image build

image scan / sign

confidential packaging or shielding step

registry push

Kubernetes manifest / Helm values update

deploy to confidential node pool

attestation / key release

runtime monitoring

중요한 검증 포인트:

shielded image가 올바르게 생성되었는가?
attestation policy가 기대한 measurement를 검증하는가?
key release가 검증된 workload에만 일어나는가?
Pod가 confidential node에 scheduling되는가?
fallback으로 일반 node에 뜨지 않는가?
debug mode가 꺼져 있는가?
log에 민감정보가 남지 않는가?

운영 관점에서 확인해야 할 체크리스트

Confidential workload를 Kubernetes에서 운영한다면 다음을 확인해야 한다.

Confidential computing 지원 hardware/node pool인가?
Pod가 confidential node에만 배치되는가?
일반 node로 fallback되지 않는가?
attestation policy가 설정되어 있는가?
key release가 attestation에 묶여 있는가?
Secret이 TEE 밖에 plaintext로 남지 않는가?
container image가 scan/sign 되었는가?
runtime debug 권한이 제한되어 있는가?
log와 trace에 민감정보가 남지 않는가?
NetworkPolicy로 접근 범위가 제한되는가?
RBAC가 최소 권한인가?
node admin과 application owner의 책임 경계가 명확한가?
성능 overhead를 측정했는가?
장애 시 fallback 정책이 있는가?

특히 중요한 질문은 이것이다.

이 workload가 정말 TEE 안에서 실행되고 있음을 어떻게 증명할 것인가?

답은 attestation이다.


Observability와 debugging의 trade-off

Confidential computing은 보안을 강화하지만, 운영 가시성에는 trade-off가 생길 수 있다.

기존 debugging 방식:

process inspect
memory dump
runtime attach
filesystem inspection
container exec
debug sidecar

Confidential computing 환경에서는 이런 방식이 제한될 수 있다.

좋은 점:

privileged user가 민감 data를 들여다보기 어려워진다.

어려운 점:

운영자도 문제를 직접 들여다보기 어렵다.

따라서 application은 처음부터 안전한 observability를 갖춰야 한다.

structured logging
민감정보 masking
correlation ID
metrics
health endpoint
audit log
distributed tracing
secure debug mode

Confidential workload에서는 “운영자가 나중에 들어가서 보면 된다”는 접근이 위험하다. 미리 안전한 관측 지점을 설계해야 한다.


성능과 resource 고려사항

Confidential computing은 hardware protection을 사용하기 때문에 workload 특성에 따라 overhead가 있을 수 있다.

확인할 것:

startup time
memory overhead
CPU overhead
I/O overhead
network throughput
latency p95 / p99
enclave memory limit
container image size
attestation latency
key release latency

성능 검증은 일반 benchmark보다 실제 workload 기준으로 해야 한다.

실제 request pattern
실제 payload size
실제 concurrency
실제 dependency
실제 encryption/decryption path
실제 peak traffic

즉 confidential computing 적용 전후로 다음을 비교해야 한다.

baseline deployment
  vs
confidential deployment

비교 metric:
  p50 latency
  p95 latency
  p99 latency
  throughput
  CPU usage
  memory usage
  error rate
  startup time

Zero Trust 관점에서의 의미

Confidential computing은 Zero Trust와 잘 맞는다.

Zero Trust는 기본적으로 다음 전제를 둔다.

network 내부라고 신뢰하지 않는다.
operator라고 무조건 신뢰하지 않는다.
identity와 context를 계속 검증한다.
least privilege를 적용한다.

Confidential computing은 여기에 다음을 추가한다.

runtime environment도 검증한다.
hardware-backed attestation으로 실행 환경을 확인한다.
검증된 workload에만 key를 준다.
privileged infrastructure actor의 trust를 줄인다.

즉 접근 모델이 다음처럼 바뀐다.

기존:
  이 사용자가 권한이 있는가?

강화된 모델:
  이 사용자가 권한이 있는가?
  이 workload가 기대한 code인가?
  이 workload가 기대한 TEE에서 실행 중인가?
  이 runtime state가 attested 되었는가?

Cloud native와 confidential computing의 연결

Cloud native는 container, Kubernetes, CI/CD, microservices, observability를 기반으로 빠르게 배포하고 확장하는 구조다.

Confidential computing은 여기에 보안 경계를 추가한다.

Cloud native:
  빠른 배포
  자동 확장
  declarative operation
  microservices
  Kubernetes runtime

Confidential computing:
  data in use 보호
  runtime isolation
  attestation
  privileged actor trust 축소

둘을 결합하면 다음 구조가 된다.

Cloud Native Confidential Workload
  =
  containerized application
  +
  Kubernetes orchestration
  +
  hardware-backed TEE
  +
  attestation-based key release
  +
  DevSecOps pipeline

적용 시 구분 기준

Confidential computing은 모든 workload에 무조건 적용하는 기술이 아니다. 적용 여부는 risk와 cost를 기준으로 판단해야 한다.

질문판단 기준
민감한 data in use가 있는가?개인정보, 금융, 의료, key material, 민감한 AI input
privileged operator를 완전히 신뢰하기 어려운가?cloud infra, outsourced operation, multi-tenant 환경
application code 변경이 어려운가?legacy app, packaged app, migration 비용 큼
performance overhead를 감당할 수 있는가?p95/p99 latency와 throughput 검증 필요
attestation 기반 key release가 필요한가?key manager와 policy integration 필요
debugging/observability 제한을 감당할 수 있는가?structured logging과 metrics 선설계 필요

적합한 경우:

민감 데이터 처리 + cloud native 운영 + privileged threat 감소 필요

부적합할 수 있는 경우:

민감 데이터가 거의 없음
성능 overhead를 감당하기 어려움
observability와 debugging 대안이 없음
hardware 지원 환경이 없음

전체 mental model

No-code confidential computing을 이해하는 흐름은 다음과 같다.

1. 기존 보안은 data at rest와 data in transit을 주로 보호했다.

2. 하지만 application이 데이터를 처리하는 순간,
   data는 memory에서 plaintext 형태로 존재할 수 있다.

3. 이 data in use는 privileged user, compromised host, infrastructure operator,
   runtime inspection 같은 threat에 노출될 수 있다.

4. Confidential computing은 hardware-based attested TEE를 사용해
   data in use와 application code를 보호하려는 접근이다.

5. Kubernetes container 환경에서는 privileged user attack과 node/runtime 접근이
   민감 workload에 대한 위협이 될 수 있다.

6. No-code-change 접근은 existing containerized application의 source code를 바꾸지 않고도
   confidential computing 보호를 적용하려는 방식이다.

7. No code change는 application logic을 바꾸지 않는다는 뜻이지,
   deployment/runtime/security configuration이 전혀 바뀌지 않는다는 뜻은 아니다.

8. Attestation은 key manager나 verifier가 workload가 정말 기대한 TEE에서
   실행 중인지 확인하는 핵심 절차다.

9. Confidential computing은 RBAC, NetworkPolicy, Pod Security, image scanning,
   Secret management를 대체하지 않고 보완한다.

10. 운영에서는 performance, debugging, observability, hardware support,
    CI/CD integration, key release policy를 함께 설계해야 한다.

요약

No-code-change confidential computing은 기존 Kubernetes/container application을 크게 다시 작성하지 않고도 confidential computing protection을 적용하는 접근이다.

핵심은 다음이다.

기존 보호:
  data at rest
  data in transit

추가로 필요한 보호:
  data in use

해결 방향:
  hardware-based attested TEE
  secure enclave
  attestation
  key release policy
  no-code-change container protection

이 접근은 application source code 변경 부담을 줄이면서, Kubernetes 환경에서 privileged user attack과 data in use 노출 위험을 줄이는 데 도움을 줄 수 있다.

하지만 이것은 완전한 보안 솔루션이 아니다. RBAC, NetworkPolicy, Pod Security, image signing/scanning, secret management, supply chain security, observability와 함께 적용해야 한다.

한 문장으로 정리하면 다음과 같다.

No-code-change confidential computing은 기존 containerized application의 business logic을 바꾸지 않고, hardware-backed TEE와 attestation 기반 runtime protection을 적용해 Kubernetes 환경에서 data in use와 privileged infrastructure threat를 줄이는 cloud native security 접근이다.