데이터 공동작업자는 기밀 데이터에 워크로드에서 액세스할 수 있도록 다음 리소스를 설정해야 합니다.
Google Cloud에 저장된 암호화된 데이터 자체입니다.
이 데이터를 복호화할 수 있는 서비스 계정
워크로드 아이덴티티 풀(WIP)을 사용한 증명 유효성 검사 워크로드가 WIP에서 승인되면 데이터 공동작업자의 프로젝트에서 서비스 계정을 명의 도용하여 기밀 데이터를 가져올 수 있습니다.
또한 데이터 공동작업자는 Confidential Space 워크로드의 결과가 저장되는 위치와 표시되는 데이터가 고유한지 또는 공유되는지 여부를 선택해야 합니다. 예를 들어 각 데이터 공동작업자에게 속한 여러 Cloud Storage 버킷에 동일한 결과를 출력할 수 있습니다.
데이터 저장
데이터를 저장하는 Google Cloud 서비스를 사용하여 기밀 데이터를 호스팅할 수 있습니다. 예를 들어 다음 서비스 중 하나를 사용할 수 있습니다.
내장 기능을 사용하든 Cloud Key Management Service (Cloud KMS)와 같은 도구를 사용하든 이 데이터가 저장 중에 암호화되어 있는지 확인해야 합니다.
기밀 데이터를 복호화할 서비스 계정 만들기
서비스 계정을 통해 기밀 데이터를 Confidential Space 워크로드에 제공하고 이러한 데이터에 대한 사용자 노출을 줄입니다.
예를 들어 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) 토큰을 생성합니다. 이러한 토큰은 Google에서 서명되고 한 시간 후 자동으로 새로고침됩니다.
WIP에서 워크로드를 승인하면 워크로드는 프로젝트의 서비스 계정을 가장하여 기밀 데이터를 복호화하고 검색할 수 있습니다.
WIP 및 제공업체를 설정하려면 다음 안내를 따르세요.
iam.workloadIdentityUser
역할로 복호화 서비스 계정을 WIP에 연결합니다.다음 세부정보를 사용하여 OIDC 공급업체를 만듭니다.
발급기관 URI
https://confidentialcomputing.googleapis.com/
허용된
https://sts.googleapis.com
잠재고객입니다.값이
assertion.sub
인google.subject
의 제공업체 속성 매핑워크로드의 증명을 확인하는 데 사용되는 속성 조건입니다. 사용 가능한 옵션은 증명 정책 만들기를 참고하세요.
증명 정책 만들기
WIP를 만드는 과정에서 속성 조건을 추가합니다. 속성 조건은 워크로드가 데이터에 액세스할 수 있도록 통과해야 하는 조건입니다. Confidential Space의 경우 이러한 속성 조건이 증명 정책을 구성합니다.
정책은 Common Expression Language(CEL)로 작성되며 &&
연산자로 연결할 수 있는 일련의 어설션으로 구성됩니다.
정책을 정의하는 attribute-condition
옵션과 함께 gcloud CLI를 사용하여 워크로드 ID 풀에 공급자를 추가하는 예시는 다음과 같습니다.
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 이미지에는 설정된 지원 속성이 없습니다. 지원 속성은 세 가지입니다.
예시다음 코드는 안정적인 버전의 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 |
문자열 |
지정된 프로젝트 번호로 Google Cloud 프로젝트에서 VM이 실행 중인지 확인합니다. 예시
|
다음과 상호작용:
|
문자열 |
VM이 지정된 영역에서 실행 중인지 확인합니다. 예시
|