개요
엔터프라이즈 키 관리(EKM)를 사용하면 자체 외부 키 관리 시스템(KMS)에서 관리하는 키로 OpenAI의 고객 콘텐츠를 암호화할 수 있습니다. 이 기능은 ChatGPT Enterprise와 API 모두에서 사용할 수 있습니다.
OpenAI는 AWS KMS, Google Cloud(GCP), Azure Key Vault의 외부 계정을 통한 BYOK(Bring Your Own Key) 암호화를 지원합니다.
현재 EKM 구현은 OpenAI 계정 담당자가 지정된 Enterprise 및 Edu 워크스페이스로 제한됩니다.
OpenAI EKM 암호화 작동 방식
고수준 흐름
클라우드 공급자용 데이터 암호화 키(DEK)를 생성합니다.
클라우드 KMS는 클라우드 내부 또는 외부에 저장된 마스터 키 암호화 키(KEK)를 관리합니다. 구현 방식은 사용자가 결정합니다.
클라우드에 DEK 암호화를 요청해 암호화된 DEK(eDEK)를 가져옵니다. KEK가 외부에 저장된 경우, 클라우드는 OpenAI에 보이지 않는 단계에서 외부 저장소를 한 번 더 거칩니다.
암호화
암호화 시에는 데이터가 DEK로 암호화되며, eDEK는 파일의 메타데이터로 저장됩니다.

복호화
복호화 시에는 클라우드 KMS에 eDEK를 DEK로 복호화하도록 요청하고, 해당 DEK로 데이터를 복호화합니다.

주요 용어
데이터 암호화 키(DEK) - 데이터를 암호화하는 키입니다.
암호화된 데이터 암호화 키(eDEK) - KMS에서 생성되는 암호화된 DEK입니다.
키 암호화 키(KEK) - 사용자가 관리하는 마스터 키로, DEK를 eDEK로 암호화하고 eDEK를 DEK로 복호화합니다. 이 키는 항상 OpenAI 시스템 외부에 유지됩니다.
구현을 위한 전반적 요구 사항
사용 중인 클라우드 제공업체에서
클라우드 KMS(Azure, AWS 또는 GCP)에서 새 키를 생성합니다.
KMS에 대한 암호화/복호화 권한이 포함된 맞춤형 제한 정책을 생성합니다.
OpenAI용 신뢰 정책(AWS), 워크로드 ID(GCP) 또는 서비스 주체(Azure)를 생성합니다.
OpenAI에 제한된 정책으로 KMS에 액세스할 수 있는 역할을 할당합니다.
OpenAI 플랫폼에서
ChatGPT Enterprise
테스트용 샌드박스 ChatGPT 워크스페이스 생성
API
OpenAI 대시보드에서 암호화를 적용할 새 프로젝트를 만듭ㄴ디ㅏ.
공급자별 기능
AWS의 경우 OpenAI는 다음을 수행합니다.
ExternalID를 사용해 AssumeRole 호출
GCP의 경우 OpenAI는 다음을 수행합니다.
OpenAI GCP 계정에서 STS 엔드포인트 호출
GCP 액세스 토큰을 사용해 KMS에서 encrypt/decrypt 호출
Azure의 경우 OpenAI는 다음을 수행합니다.
Azure 테넌트의 보관소에 대한 액세스 토큰 요청
해당 액세스 토큰을 사용해 키 보관소에서 encrypt/decrypt 호출
OpenAI에서 필요한 정보
인증
AWS와 GCP에서는 OpenAI의 페더레이션 ID 토큰을 인식해야 합니다. Azure에서는 앱 등록에 사용되는 OpenAI의 애플리케이션 ID를 인식해야 합니다.
인증 매개변수 요약
| OpenAI AWS 주체 | arn:aws:iam::790389265272:role/EnterpriseKeyManagement |
| OpenAI GCP 서비스 계정 ID | 105900137572174660365 |
| OpenAI Azure 애플리케이션 ID | 20a14814-5ab7-4612-a671-1382b412bf93 |
클라우드 제공업체별 구현 시 필요한 정보
AWS의 경우, 다음을 인식하는 신뢰 정책을 설정해야 합니다.
OpenAI의 주체(계정 번호 + 역할)
OpenAI 프로젝트 ID에 해당하는 ExternalID
GCP의 경우 다음을 인식하는 워크로드 ID를 설정해야 합니다.
OpenAI의 서비스 계정 ID
OpenAI 프로젝트 ID에 해당하는 대상
Azure의 경우 OpenAI의 앱 등록을 위해 Azure 테넌트에서 서비스 주체를 생성해야 합니다.
OpenAI의 애플리케이션 클라이언트 ID(20a14814-5ab7-4612-a671-1382b412bf9)에 대해 서비스 주체를 생성합니다.
https://graph.microsoft.com/v1.0/servicePrincipals 엔드포인트에 게시해 이 작업을 수행할 수 있습니다.
권한 부여
OpenAI의 ID가 KMS에 제한적으로 액세스할 수 있도록 허용하는 정책을 생성해야 합니다.
| AWS | GCP | Azure |
| kms:Decryptkms:Encrypt | cloudkms.cryptoKeyVersions.useToDecryptcloudkms.cryptoKeyVersions.useToEncrypt | Microsoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/action |
기타
Azure에서는 키 유형(키 암호화 알고리즘)으로 EC가 아닌 RSA를 선택하세요.
OpenAI에 제공해야 하는 정보
이 문서의 안내를 따라 KMS를 OpenAI에 등록하세요. 다음은 제공해야 하는 매개변수를 요약한 것입니다.
인증 관련
AWS
IAM 역할 ARN - OpenAI가 맡을 역할(예: arn:aws:iam::123456789:role/role-name)
ExternalID - OpenAI 조직 ID
GCP
워크로드 아이덴티티 프로젝트 번호 (예: 123456789)
워크로드 아이덴티티 풀 ID
워크로드 아이덴티티 공급자 ID
허용 대상: OpenAI 조직 ID
Azure
테넌트 ID
| AWS | GCP | Azure | |
| 인증 관련 | 테넌트 ID | ||
| KMS 관련 | KMS ARN - (예: arn:aws:kms:REGION:ACCOUNT_NUMBER:key:KEY_UUID) | KMS 프로젝트 ID (예: adjective-noun-12345)KMS 키 링 이름KMS 키 이름KMS 키 위치 (예: us-east1) | Vault URI (예: https://your-vault-name.vault.azure.net/)키 이름 |
KMS를 OpenAI에 등록한 후, 문서의 안내에 따라 API 프로젝트에서 EKM 구성을 활성화합니다. 테스트용으로 새 OpenAI API 프로젝트를 생성합니다.
공급자별 구현 가이드
단계별 안내는 아래의 해당 링크를 참조하세요. 이 가이드는 OpenAI와의 통합 요구 사항에 중점을 두고 있으며, 전체 환경에 대한 포괄적인 가이드로 제공되는 것이 아닙니다.
EKM 활성화 시 지원되지 않는 기능
이번 초기 릴리스에서는 EKM이 활성화된 경우 다음 기능을 사용할 수 없습니다.
동기화 기능이 있는 앱
일반 제공되지 않는 기능(즉, 아직 알파/베타 단계에 있는 모든 기능)
