데이터 공동작업자는 워크로드에서 액세스할 수 있도록 기밀 데이터에 대해 다음 리소스를 설정해야 합니다.
암호화된 데이터 자체, Google Cloud에 저장됩니다.
해당 데이터를 복호화할 수 있는 서비스 계정
워크로드 아이덴티티 풀(WIP)을 사용하는 증명 유효성 검사 워크로드가 WIP에 의해 승인되면 데이터 공동작업자의 프로젝트에서 서비스 계정을 가장하여 기밀 데이터를 가져올 수 있습니다.
또한 데이터 공동작업자는 Confidential Space 워크로드의 결과가 저장되는 위치와 표시되는 데이터가 고유한지 공유되는지 선택해야 합니다. 예를 들어 각 데이터 공동작업자에게 속한 여러 Cloud Storage 버킷에 동일한 결과를 출력할 수 있습니다.
데이터 저장
데이터를 저장하는 모든 Google Cloud 서비스를 사용하여 기밀 데이터를 호스팅할 수 있습니다. 예를 들어 다음 서비스를 사용할 수 있습니다.
내장 기능을 사용하든 Cloud Key Management Service (Cloud KMS)와 같은 서비스를 사용하든 이 데이터가 저장 상태로 암호화되어 있는지 확인해야 합니다.
기밀 데이터를 복호화할 서비스 계정 만들기
서비스 계정을 통해 컨피덴셜 스페이스 워크로드에서 컨피덴셜 데이터를 사용할 수 있도록 하고 해당 데이터에 대한 인적 노출을 줄입니다.
예를 들어 Cloud KMS로 Cloud Storage의 기밀 파일을 암호화한 다음 해당 데이터와 복호화 키에 액세스할 수 있는 권한이 있는 서비스 계정을 만들 수 있습니다.
그런 다음 해당 서비스 계정을 WIP에 연결합니다. 그러면 다른 프로젝트에 기반한 승인된 컨피덴셜 스페이스 워크로드가 해당 WIP를 사용하여 데이터를 복호화하는 서비스 계정을 가장하고, 복호화된 데이터를 검색하고, 이를 처리할 수 있습니다.
기밀 데이터를 복호화하고 이를 처리하는 작업에 모두 서비스 계정이 사용되기 때문에 기밀 데이터 가시성이 해당 소유자로 제한됩니다. 워크로드가 컨피덴셜 VM에서 작동하므로 하드웨어 기반 메모리 암호화를 통해 사용 중인 데이터가 비공개로 유지됩니다. 프로덕션 Confidential Space 이미지를 사용하는 워크로드 VM에서도 SSH가 사용 중지되므로 VM이 실행되는 동안 누구도 VM에 액세스할 수 없습니다.
이 예는 첫 번째 컨피덴셜 스페이스 환경 만들기를 참고하세요.
증명 검증을 위한 WIP 및 제공업체 만들기
신뢰할 수 없는 워크로드 운영자로부터 데이터를 보호하기 위해 Confidential Space는 워크로드 이미지 또는 TEE에 대한 수정 사항을 감지하는 증명 프로세스를 구현합니다. 이 프로세스는 보안 VM 신중한 부팅과 확장 런타임 측정을 기반으로 하며, Virtual Trusted Platform Module(vTPM) 기기에서 보호되는 확장 전용 등록의 부팅 시퀀스 측정을 캡처합니다.
Confidential Space 증명 서비스는 WIP로 검증할 수 있는 형식으로 이러한 vTPM 증명이 포함된 OpenID Connect(OIDC) 토큰을 생성합니다. WIP는 공급자에 대해 속성 조건으로 추가된 정책에 따라 검사를 수행합니다. 이러한 토큰은 Google에서 서명되고 한 시간 후 자동으로 새로고침됩니다.
WIP가 워크로드를 승인하면 워크로드가 프로젝트의 서비스 계정을 가장하여 기밀 데이터를 복호화하고 검색할 수 있습니다.
WIP 및 제공업체를 설정하려면 다음 안내를 따르세요.
복호화 서비스 계정을
iam.workloadIdentityUser
역할로 WIP에 연결합니다.다음 세부정보를 사용하여 OIDC 공급업체를 만듭니다.
https://confidentialcomputing.googleapis.com/
의 발급기관 URIhttps://sts.googleapis.com
의 허용된 잠재고객입니다.값이
assertion.sub
인google.subject
의 제공업체 속성 매핑워크로드의 증명을 검증하는 데 사용되는 속성 조건입니다. 사용 가능한 옵션은 증명 정책 만들기를 참고하세요.
증명 정책 만들기
WIP를 만드는 과정에서 속성 조건(워크로드가 데이터에 액세스하기 위해 통과해야 하는 조건)을 추가합니다. Confidential Space의 경우 이러한 속성 조건이 증명 정책을 구성합니다.
정책은 Common Expression Language(CEL)로 작성되며 &&
연산자를 사용하여 연결할 수 있는 일련의 어설션으로 구성됩니다.
정책을 정의하는 attribute-condition
옵션과 함께 gcloud CLI를 사용하여 워크로드 아이덴티티 풀에 공급자를 추가하는 예시는 다음과 같습니다.
gcloud iam workload-identity-pools providers create-oidc attestation-verifier \
--location=global \
--workload-identity-pool=user-pool-name \
--issuer-uri="https://confidentialcomputing.googleapis.com/" \
--allowed-audiences="https://sts.googleapis.com" \
--attribute-mapping="google.subject=assertion.sub" \
--attribute-condition="assertion.submods.container.image_digest =='sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b' \
&& 'service-account@my-project.iam.gserviceaccount.com' in assertion.google_service_accounts \
&& assertion.swname == 'CONFIDENTIAL_SPACE' \
&& 'STABLE' in assertion.submods.confidential_space.support_attributes"
이 예시에서는 워크로드 아이덴티티 풀에 연결된 서비스 계정을 가장하려고 시도하는 외부 ID가 다음 세부정보를 증명하고 일치시켜야 합니다.
워크로드 컨테이너의 이미지 다이제스트
워크로드 VM에 연결된 서비스 계정의 주소
CONFIDENTIAL_SPACE
는 VM에서 실행되는 소프트웨어이며 모든 내장 보안 보증이 적용됩니다.프로덕션 Confidential Space 이미지 지원 속성
증명 어설션
다음 표에서는 증명 정책을 구성하는 데 사용할 수 있는 어설션을 자세히 보여줍니다. Confidential Space 이미지, 워크로드 컨테이너, VM에서 이루어진 어설션을 검증할 수 있습니다.
이미지 어설션
어설션 | 유형 | 설명 |
---|---|---|
상호작용:
|
정의된 문자열 |
Confidential Space 이미지가 디버그 또는 프로덕션 버전인지 확인합니다. 유효한 값은 다음과 같습니다.
예시다음 코드는 Confidential Space 이미지의 디버그 버전이 사용 중인지 확인합니다.
다음 코드는 Confidential Space 이미지의 프로덕션 버전이 사용 중인지 확인합니다.
|
assertion.submods.confidential_space.support_attributes |
문자열 배열 |
TEE의 보안 버전이 프로덕션 Confidential Space 이미지인지 확인합니다. 디버그 Confidential Space 이미지에는 설정된 지원 속성이 없습니다. 지원 속성은 3가지입니다.
예다음 코드는 안정적인 버전의 Confidential Space 이미지가 사용 중인지 확인합니다.
|
assertion.swname |
정의된 문자열 |
증명 항목에서 실행되는 소프트웨어를 확인합니다. 이 값은 항상 예
|
assertion.swversion |
문자열 배열 |
Confidential Space 이미지의 소프트웨어 버전을 확인합니다. 이미지의 최신 버전을 타겟팅하려면 예
|
컨테이너 어설션
어설션 | 유형 | 설명 |
---|---|---|
상호작용:
|
문자열 배열 |
워크로드 이미지에 사용되는 CMD 명령어 및 매개변수를 확인합니다. 예시다음 코드는 워크로드 이미지의 CMD를 덮어쓰지 않았는지 확인합니다.
다음 코드는
|
상호작용:
|
JSON 개체 |
환경 변수 및 해당 값이 컨테이너로 명시적으로 전달되었는지 확인합니다. 예다음 코드는 환경 변수
|
상호작용:
|
문자열 |
워크로드 연산자가 컨테이너에서 환경 변수를 덮어썼는지 확인합니다. 예시다음 코드는 워크로드 운영자가
다음 코드는 워크로드 운영자가 환경 변수를 덮어쓰지 않았는지 확인합니다.
|
assertion.submods.container.image_digest |
문자열 |
워크로드 컨테이너의 이미지 다이제스트를 확인합니다. 이 조건을 지정하면 여러 당사자가 자신의 데이터에 액세스하도록 승인된 워크로드에 동의할 수 있습니다. 예
|
assertion.submods.container.image_id |
문자열 |
워크로드 컨테이너의 이미지 ID를 확인합니다. 예
|
상호작용:
|
문자열 |
Confidential Space 이미지에서 실행되는 워크로드 컨테이너의 위치를 확인합니다. 예
|
상호작용:
|
JSON 개체 |
이미지에 특정 서명이 있거나 공개 키와 서명 알고리즘으로 서명되었는지 확인합니다. 이 조건을 지정하면 여러 당사자가 자신의 데이터에 액세스하도록 승인된 워크로드에 동의할 수 있습니다. 어설션에는 다음 요소가 포함될 수 있습니다.
예
|
상호작용:
|
정의된 문자열 |
워크로드가 중지될 때 컨테이너 런처의 다시 시작 정책을 확인합니다. 유효한 값은 다음과 같습니다.
예
|
VM 어설션
어설션 | 유형 | 설명 |
---|---|---|
상호작용:
|
문자열 배열 |
지정된 서비스 계정이 워크로드를 실행하는 VM에 연결되었는지 또는 VM 메타데이터에서 예
|
assertion.hwmodel |
문자열 |
기본 컨피덴셜 컴퓨팅 기술을 확인합니다. 지원되는 플랫폼은 다음과 같습니다.
예
|
상호작용:
|
불리언 |
증명 항목의 모니터링 상태를 확인합니다. 예
|
assertion.submods.gce.instance_id |
문자열 |
VM 인스턴스 ID를 확인합니다. 예
|
assertion.submods.gce.instance_name |
문자열 |
VM 인스턴스의 이름을 확인합니다. 예
|
assertion.submods.gce.project_id |
문자열 |
VM이 지정된 프로젝트 ID로 Google Cloud 프로젝트를 실행하는지 확인합니다. 예
|
assertion.submods.gce.project_number |
문자열 |
VM이 지정된 프로젝트 번호로 Google Cloud 프로젝트에서 실행되는지 확인합니다. 예
|
상호작용:
|
문자열 |
VM이 지정된 영역에서 실행되는지 확인합니다. 예
|