OpenAI

OpenAI/GCP EKM 통합 안내

GCP 프로비저닝 및 EKM 활성화 방법 단계별 안내

마지막 수정: 9 hours ago

개요

엔터프라이즈 키 관리(EKM)를 통해 OpenAI는 사용자가 제어하는 마스터 키를 사용하여 데이터를 암호화할 수 있습니다. 이 문서에서는 OpenAI에 KMS에 대한 제한된 권한을 부여하도록 GCP 계정을 설정하는 방법을 설명합니다.

Diagram of OpenAI GCP EKM integration flow using STS token exchange and KMS encrypt or decrypt requests

단계

1. OpenAI용 페더레이트드 아이덴티티 만들기

OpenAI는 OpenAI 소유의 GCP 계정에서 다음과 비슷한 아이덴티티 토큰을 발급합니다.

  • azp와 sub는 GCP에서 OpenAI의 서비스 계정 ID입니다.

  • aud는 OpenAI 조직 ID입니다. OpenAI 프로젝트 ID와 같은 다른 대상을 선택할 수도 있습니다. 아래 지침을 참조하세요.

{
  "aud": "org-xxxx",
  "azp": "105900137572174660365",
  "exp": 1747876928,
  "iat": 1747873328,
  "iss": "https://accounts.google.com",
  "sub": "105900137572174660365"
}

이 단계에서는 해당 아이덴티티 토큰의 클레임을 인식하고 해당 아이덴티티 토큰이 제공되면 GCP STS가 액세스 토큰을 발급할 수 있도록 합니다.

  1. IAM 및 관리자 -> 워크로드 아이덴티티 페더레이션으로 이동하여 풀 만들기를 클릭합니다.

    GCP IAM & Admin with Workload Identity Federation selected
  2. 아이덴티티 풀 만들기 단계에서 풀 이름에 아무 이름이나 입력합니다.

    1. 이 이름은 나중에 OpenAI에 등록해야 하므로 기억해 두어야 합니다.

  3. 풀에 공급자 추가 단계에서 다음을 수행합니다.

    1. 공급자 선택에서 OpenID Connect(OIDC)를 선택합니다.

    2. 공급자 이름에 아무 이름이나 입력합니다.

    3. 발급자(URL) 섹션에서 https://accounts.google.com을 입력합니다.

    4. 대상 섹션에서

      1. 허용된 대상을 선택합니다.

      2. OpenAI가 토큰을 전달할 때 표시해야 할 대상을 입력합니다.

        1. ChatGPT 또는 API의 경우 OpenAI API 조직 ID(org-xxx)를 입력할 수 있습니다.

        2. API의 경우 더 세부적으로 구분하기 위해 특정 API 프로젝트 ID를 입력할 수 있습니다.

          GCP Workload Identity Provider edit page with Allowed audiences selected and Audience 1 entered
    5. google.subject

      1. 속성 매핑 섹션에서 assertion.sub를 입력합니다.

        Google Cloud attribute mapping with Google 1 google.subject mapped to OIDC 1 assertion.sub
    6. 속성 조건 섹션에서

      1. assertion.sub == "105900137572174660365"를 입력합니다.

  4. 이제 https://console.cloud.google.com/iam-admin/workload-identity-pools 페이지에 워크로드 아이덴티티 풀워크로드 아이덴티티 공급자가 나열됩니다.

    1. 워크로드 아이덴티티 풀 ID

      GCP Workload Identity Pools page highlighting the provider ID value needed for OpenAI EKM setup
    2. 워크로드 아이덴티티 공급자 ID

      GCP Workload Identity Provider edit page with the provider ID field highlighted

2. KMS 활성화하기

https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview로 이동하여 KMS를 활성화합니다. OpenAI의 페더레이트드 아이덴티티를 인식한 동일한 GCP 프로젝트에서는 KMS를 만들 필요가 없지만, 프로젝트가 서로 다른 경우에는 최소한 해당 KMS 제품이 두 프로젝트 모두에서 활성화되어 있어야 합니다.

3. 새 KMS 키 만들기

  1. 보안 -> 데이터 보호 > 키 관리로 이동합니다.

  2. 개요 탭에서 키 링 만들기를 클릭합니다.

    1. 키 링 이름을 선택합니다.

    2. 용도 및 알고리즘에서 대칭 암호화/복호화를 선택합니다.

      GCP Key Management Overview page with the Create Key Ring button highlighted
    3. 키 링을 생성하면 키 링 탭에 해당 키 링이 표시됩니다. 해당 키 링을 클릭합니다.

    4. 키 링 세부 정보에서 키 만들기를 클릭합니다.

      1. 키 이름을 선택합니다.

4. KMS에서 암호화/복호화 작업을 위한 제한된 역할 만들기

  1. IAM 및 관리자 -> 역할 -> 역할 만들기로 이동합니다.

  2. 역할/직책 및 ID에 아무거나 입력합니다.

  3. 권한 추가를 클릭한 후 아래 항목을 추가합니다.

    1. cloudkms.cryptoKeyVersions.useToDecrypt

    2. cloudkms.cryptoKeyVersions.useToEncrypt

5. 암호화/복호화 작업을 위해 제한된 KMS 역할에 OpenAI의 페더레이트드 아이덴티티 할당하기

  1. 보안 -> 데이터 보호 > 키 관리로 이동합니다.

  2. 키 링 이름을 클릭한 후 키 이름을 클릭하여 키 세부 정보 페이지로 이동합니다.

    1. 이 항목이 없다면 KMS 만들기 섹션으로 돌아갑니다.

  3. 권한 탭을 클릭한 후 액세스 권한 부여 버튼을 클릭합니다.

    Google Cloud KMS key details page with Permissions tab open and Grant Access highlighted
  4. 이전에 만든 사용자 지정 역할에 OpenAI 페더레이트드 아이덴티티를 할당합니다.

    1. 주체 추가 섹션에서 principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365를 입력합니다.

      1. 여기서 YOUR_GCP_PROJECT_NUMBERYOUR_GCP_WORKLOAD_IDENTITY_POOL을 만들어 OpenAI의 페더레이트드 아이덴티티를 인식한 프로젝트입니다. 이 프로젝트는 KMS가 있는 프로젝트와 동일할 수 있지만, 반드시 같을 필요는 없습니다.

      2. 프로젝트가 서로 다른 경우 https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview로 이동하여 다른 프로젝트에서 최소한 해당 KMS가 활성화되어 있어야 합니다.

    2. 역할 할당 섹션에서, 이전 단계에서 제한된 EKM 권한을 위해 만든 사용자 지정 역할을 선택합니다.

6. 자체 보안 관행에 맞게 추가 제한 사항 적용하기

위 사항은 OpenAI가 EKM을 설정하는 데 필요한 최소한의 정보입니다. OpenAI가 KMS에서 암호화 및 복호화 작업을 호출할 수 있는 한, 자체 내부 보안 관행에 따라 추가적인 주요 정책이나 제한 사항을 자유롭게 적용할 수 있습니다. 아래에 설명된 OpenAI의 키 등록 엔드포인트를 호출하면 설정 검증이 시작됩니다.

위 단계를 완료한 후

ChatGPT Enterprise

OpenAI 담당자에게 연락하여 다음 사항을 알려줍니다.

  • "workload_identity_project_number": "123456789012",

    • OpenAI의 워크로드 아이덴티티를 등록한 12자리 GCP 프로젝트 번호

  • "workload_identity_pool_id": "openai-azure",

    • OpenAI에 등록한 워크로드 아이덴티티 공급자가 포함된 풀

  • "workload_identity_provider_id": "openai-ekm-service-role",

    • OpenAI에 등록한 워크로드 아이덴티티 공급자

  • "kms_project_id": "adjective-noun-12345",

    • KMS가 있는 GCP 프로젝트 이름

  • "kms_key_name": "openai-kms-key",

    • 키 관리 시스템 마스터 키의 이름

  • "kms_key_ring_name": "openai-kms-key-ring",

    • 사용자가 관리하는 마스터 키가 포함된 키 관리 시스템 키 링

  • "kms_key_location": "us-east1"

    • 키 관리 시스템 마스터 키가 위치한 지역

OpenAI가 해당 ChatGPT 조직/워크스페이스에 대해 EKM을 활성화합니다.

API

OpenAI에 외부 키 등록

API 참조 문서인 관리 API의 외부 키에 설명된 지침을 따르세요.

  • 먼저 OpenAI 조직 수준에서 외부 키를 등록합니다. 그러면 외부 키 ID가 생성됩니다.

  • 이 단계에서는 GCP에서 KMS 인증이 가능한지 확인하여 설정을 검증합니다.

  • 이렇게 해도 아직은 OpenAI 프로젝트에 EKM이 추가되지는 않습니다.

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
   "type": "gcp",
   "name": "GCP EKM Config",
   "workload_identity_project_number": "123456789012",
   "workload_identity_pool_id": "openai-azure",
   "workload_identity_provider_id": "openai-ekm-service-role",
   "audience": <your org id or project id>,
   "kms_project_id": "adjective-noun-12345",
   "kms_key_name": "openai-kms-key",
   "kms_key_ring_name": "openai-kms-key-ring",
   "kms_key_location": "us-east1"
}'

그런 다음 외부 키와 연결된 OpenAI 프로젝트를 만듭니다. 그러면 프로젝트에서 EKM이 활성화됩니다.

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
   "name": "Some Project",

   "external_key_id": "extkey_xxxx"

}'

이 문서가 도움이 되었나요?