For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
기본 탐색 메뉴
Theme

비대칭 키 설정

OpenAI에서 사용할 클라우드 관리형 공개 키 등록

OpenAI에서 사용할 RSA-3072 비대칭 키 쌍을 클라우드 공급자에서 생성해 등록하세요.

개인 키는 AWS KMS, Azure Key Vault 또는 Google Cloud KMS에 그대로 보관됩니다. OpenAI는 등록 시 해당 개인 키와 쌍을 이루는 공개 키의 사본을 저장합니다.

키를 등록해도 제품 기능이나 스토리지가 자동으로 설정되지는 않습니다. 이 가이드에서는 PSP 복호화에 사용할 키를 다룹니다.

시작하기 전에

  • 조직 ID를 준비하세요. 클라우드 신뢰 관계 설정, 키 등록, API 액세스에는 모두 같은 조직을 사용하세요.
  • 외부 키 읽기 및 쓰기 권한이 있는 조직 관리자 API 키를 만드세요. 키를 OPENAI_ADMIN_KEY 환경 변수에 안전하게 설정하세요. 프로젝트 추론용 키는 사용할 수 없습니다.
  • 활성 상태의 RSA-3072 키를 만들고 이 가이드에서 지정한 범위의 공개 키 읽기 권한을 OpenAI에 부여할 수 있어야 합니다.
  • 권한이 있는 사용자만 개인 키를 사용할 수 있도록 제한하세요. 이전 키 버전이 필요한 레코드가 있는 동안에는 해당 버전을 보관하세요.

클라우드 키 설정

키를 등록하기 전에 사용하는 클라우드 공급자에 해당하는 단계를 따르세요. 모든 공급자에서 RSA-3072를 사용하며, OpenAI에는 공개 키와 메타데이터를 읽을 수 있는 권한만 부여합니다.

키 등록

예시에서는 curl과 Bash 호환 셸을 사용합니다. OPENAI_ADMIN_KEY를 안전하게 불러온 다음 조직 ID를 설정하세요.

API_BASE="https://api.openai.com/v1"
ORG_ID="<OPENAI_ORG_ID>"

: "${OPENAI_ADMIN_KEY:?Load your organization admin key securely}"

KEYS_URL="$API_BASE/organization/external_keys"

등록 요청 준비

purpose에 지정할 수 있는 열거형 값은 ekm(기본값)과 psp_decryption입니다. 이 가이드에서 설정하는 비대칭 키에는 psp_decryption을 사용하세요. ekm은 엔터프라이즈 키 관리(EKM)용입니다.

사용 중인 공급자에 해당하는 요청을 registration.json으로 저장하세요. JSON에서는 셸 변수가 실제 값으로 치환되지 않으므로 예시 값을 직접 바꾸세요.

AWS KMS 요청

{
  "type": "aws",
  "purpose": "psp_decryption",
  "name": "asymmetric-key-aws",
  "role_arn": "<CUSTOMER_ROLE_ARN>",
  "external_id": "<OPENAI_ORG_ID>",
  "kms_arn": "<CUSTOMER_KMS_KEY_ARN>"
}

Azure Key Vault 요청

{
  "type": "azure",
  "purpose": "psp_decryption",
  "name": "asymmetric-key-azure",
  "tenant_id": "<CUSTOMER_TENANT_ID>",
  "vault_uri": "https://<CUSTOMER_VAULT_NAME>.vault.azure.net",
  "key_name": "<OPENAI_ORG_ID>--asymmetric-key",
  "key_version": "<CUSTOMER_KEY_VERSION>"
}

Google Cloud KMS 요청

{
  "type": "gcp",
  "purpose": "psp_decryption",
  "name": "asymmetric-key-gcp",
  "workload_identity_project_number": "<CUSTOMER_GCP_PROJECT_NUMBER>",
  "workload_identity_pool_id": "openai-keys",
  "workload_identity_provider_id": "openai-google",
  "audience": "<OPENAI_ORG_ID>",
  "kms_project_id": "<CUSTOMER_KMS_PROJECT_ID>",
  "kms_key_ring_name": "asymmetric-keys",
  "kms_key_name": "asymmetric-key",
  "kms_key_location": "us-central1",
  "kms_key_version": "1"
}

1. 키 등록 및 검증

curl --fail-with-body -sS "$KEYS_URL" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID" \
  -H "Content-Type: application/json" \
  --data @registration.json

등록 시 키를 먼저 검증한 후 저장합니다. 등록에 성공하면 HTTP 200 응답에 extkey ID와 공급자 설정이 포함됩니다. 응답 필드의 예시는 다음과 같습니다.

{
  "id": "extkey_11111111111111111111111111111111",
  "object": "organization.external_key",
  "name": "asymmetric-key-gcp",
  "type": "gcp",
  "purpose": "psp_decryption",
  "api_project_ids": []
}

응답으로 받은 등록 ID를 저장하세요.

KEY_ID="<EXTERNAL_KEY_ID>"

2. 키 재검증(선택 사항)

GET 요청은 저장된 등록 정보를 반환합니다. POST /validate 요청은 현재 키에 액세스할 수 있는지 다시 확인하고 저장된 공개 키와 대조해 키의 유효성을 검증합니다. 레코드를 복호화하거나 스냅샷을 갱신하지는 않습니다.

curl --fail-with-body -sS "$KEYS_URL/$KEY_ID" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID"
curl --fail-with-body -sS -X POST "$KEYS_URL/$KEY_ID/validate" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID"

예상 응답(HTTP 200)

{ "status": "success" }

키, 권한 또는 네트워크를 변경한 후에는 다시 검증하세요. IAM을 변경했다면 변경 사항이 반영된 후에 재시도하세요.

등록한 키를 PSP 복호화에 사용하려면 프로젝트에서 해당 키를 선택하세요.

키 목록 조회

purpose=psp_decryption을 지정하면 PSP 복호화용으로 등록한 비대칭 키 목록을 조회할 수 있습니다. 필터를 생략하면 모든 용도의 키가 반환되고 purpose=ekm을 지정하면 EKM용 키만 반환됩니다.

curl --fail-with-body -sS --get "$KEYS_URL" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID" \
  --data-urlencode "purpose=psp_decryption" \
  --data-urlencode "order=asc" \
  --data-urlencode "limit=20"

has_more 값이 true인 동안에는 after에 last_id 값을 지정해 다음 페이지를 요청하세요. purpose, order, limit 값은 그대로 유지하세요.

키 교체

  1. AWS에서는 새 키를 만들고 Azure 또는 GCP에서는 새 키 버전을 만든 다음 읽기 권한을 부여하세요.
  2. 새 키 또는 키 버전을 등록하세요.
  3. 프로젝트에서 새 extkey ID를 선택한 후 올바르게 선택되었는지 확인하세요.

등록 정보는 등록 시점의 고정된 스냅샷이므로 클라우드에서 키를 교체해도 갱신되지 않습니다. 이전 개인 키가 필요한 레코드가 있으면 해당 키를 보관하세요. 선택한 키를 변경해도 기존 레코드는 마이그레이션되지 않습니다.

키 삭제

키 등록을 삭제하기 전에 모든 활성 프로젝트에서 해당 키의 선택을 해제하거나 다른 키로 교체하세요.

curl --fail-with-body -sS -X DELETE "$KEYS_URL/$KEY_ID" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID"

삭제에 성공하면 HTTP 200 응답에 object: "organization.external_key.deleted"가 포함됩니다. 클라우드에 있는 키는 삭제되지 않습니다.

문제 해결

오류 확인할 사항
401 또는 403 조직 관리자 API 키를 사용하고 외부 키를 등록할 권한이 있는지 확인하세요.
400 external_key_provider_error 클라우드 신뢰 관계, 읽기 권한, 네트워크 액세스, 키의 활성 상태와 알고리즘을 확인하세요.
400 요청 검증 오류 키 용도, AWS 키 자체의 ARN, Azure 또는 GCP 키의 정확한 버전을 확인하세요.
404 등록 ID와 조직을 확인하세요. 삭제된 등록 정보나 다른 조직의 등록 정보는 사용할 수 없습니다.
external_key_used_by_active_projects 해당 키를 선택한 모든 활성 프로젝트에서 선택을 해제하거나 다른 키로 교체하세요.
키가 더 이상 일치하지 않음 새 키 또는 키 버전을 등록하고 새 등록 ID를 선택하세요.

지원을 요청할 때는 오류 내용과 x-request-id를 공유하세요. 자격 증명은 절대 공유하지 마세요.

관련 가이드