개요
엔터프라이즈 키 관리(EKM)를 통해 OpenAI는 사용자가 제어하는 마스터 키를 사용하여 데이터를 암호화할 수 있습니다. OpenAI가 키 보관소에서 암호화/복호화 작업을 호출하려면 액세스 권한을
부여받아야 합니다. 이 문서에서는 OpenAI가 키 보관소 권한이 있는 역할을 수임할 수 있도록 Azure 계정을
설정하는 방법을 설명합니다.

단계
1. 계정에서 OpenAI에 대한 서비스 주체 만들기
액세스 토큰 받기
az account get-access-token --resource https://graph.microsoft.com
--tenant YOUR_TENANT_ID2. 서비스 주체 만들기: 아래 요청에서 appId는 OpenAI의 애플리케이션 클라이언트 ID입니다. 그러면 표시 이름이 “EKM - OpenAI Azure”인 주체가 생성됩니다. 이 이름은 이후 단계에서 필요하므로 기억해 두세요.
OpenAI/Azure EKM 통합 안내 - 서비스 주체 만들기
curl -X POST https://graph.microsoft.com/v1.0/servicePrincipals \
-H "Authorization: Bearer $TOKEN_FROM_ABOVE" \
-H "Content-Type: application/json" \
–d '{"appId": "20a14814-5ab7-4612-a671-1382b412bf93"}'2. 제한된 KMS 액세스를 위한 사용자 지정 역할 만들기
구독 -> 액세스 제어(IAM)로 이동합니다.
+ 추가 드롭다운에서 사용자 지정 역할 추가를 선택합니다.
JSON 탭으로 가서 편집을 클릭하고 다음 항목을 추가합니다.
역할 이름(선택한 이름 기억해 두기)
dataActions의 다음 권한
Microsoft.KeyVault/vaults/keys/encrypt/action
Microsoft.KeyVault/vaults/keys/decrypt/action
Microsoft.KeyVault/vaults/keys/read

3. 키 보관소 + 키 만들기
키 보관소 아직 없다면 방금 사용자 지정 역할을 만든 동일한 구독에서 새 키 보관소를 만듭니다.
해당 키 보관소에서 새 키를 만듭니다.
키 보관소 -> 객체 -> 키로 이동하여 생성/가져오기를 클릭합니다.
옵션에서 생성을 선택합니다.

암호화 알고리즘으로 RSA를 선택합니다.
원하는 RSA 키 크기를 선택할 수 있습니다.
<org-xxx>--<any_name> 형식으로 키 이름을 입력합니다. 여기서 org-xxx는 OpenAI 조직 ID이며 https://platform.openai.com/settings/organization/general에서 확인할 수 있습니다.

키를 보거나 만들 수 없는 경우 키 보관소 관리자 역할이 있는지 확인하세요. 소유자 역할이 있더라도 확인해야 합니다. 역할을 할당받으려면 다음을 수행합니다.
키 보관소 -> 액세스 제어(IAM)로 이동합니다.
추가 -> 역할 할당 추가를 클릭합니다.

4. OpenAI 서비스 주체 + 새 사용자 지정 KMS + 새 키에 대한 역할 할당 만들기
키 보관소 -> 객체 -> 키로 이동하여 생성한 키의 행을 클릭합니다.
방금 클릭한 키(키 보관소 아님)의 액세스 제어(IAM)로 이동합니다.
+ 추가 드롭다운에서 역할 할당 추가를 선택합니다.

역할 탭에서 방금 만든 사용자 지정 역할의 이름을 선택합니다.

멤버 탭에서 다음을 수행합니다.
'+ 멤버 선택'을 클릭합니다.
검색창에 'ekm -'을 입력하면 1단계에서 만든 OpenAI 서비스 주체가 표시됩니다.

5. 자체 보안 관행에 맞게 추가 제한 사항 적용하기
위 사항은 OpenAI가 EKM을 설정하는 데 필요한 최소한의 정보입니다. OpenAI가 KMS에서 암호화 및 복호화 작업을 호출할 수 있는 한, 자체 내부 보안 관행에 따라 추가적인 주요 정책이나 제한 사항을 자유롭게 적용할 수 있습니다. 아래에 설명된 OpenAI의 키 등록 엔드포인트를 호출하면 설정 검증이 시작됩니다.
위 단계를 완료한 후
ChatGPT Enterprise
OpenAI 담당자에게 연락하여 다음 사항을 알려줍니다.
"tenant_id": "<YOUR_AZURE_TENANT_UUID>"
Azure 테넌트 UUID
"vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/"
사용자가 관리하는 마스터 키가 포함된 Azure 보관소의 URI
"key_name": "<YOUR_KEY_NAME>"
사용자가 관리하는 Azure 키 보관소 마스터 키의 이름
키 이름은 <org-xxx>--<any_name> 형식이어야 합니다. 여기서 org-xxx는 OpenAI 조직 ID이며 https://platform.openai.com/settings/organization/general에서 확인할 수 있습니다.
OpenAI가 해당 ChatGPT 조직/워크스페이스에 대해 EKM을 활성화합니다.
API
OpenAI에 외부 키 등록
API 참조 문서인 관리 API의 외부 키 설명된 지침을 따르세요.
먼저 OpenAI 조직 수준에서 외부 키를 등록하면 extkey_xxx 형식의 외부 키 ID가 생성됩니다.
이 단계에서는 입력이 유효한지 확인하고 KMS 인증이 가능한지 검증합니다.
이렇게 해도 아직은 OpenAI 프로젝트에 EKM이 추가되지는 않습니다.
# 그러면 extkey_xxx형식의 외부 키 ID가 생성됩니다.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "azure",
"name": "<ANY_FRIENDLY_NAME>",
"tenant_id": "<YOUR_AZURE_TENANT_UUID>",
"vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/",
"key_name": "<YOUR_KEY_NAME>"
}'그런 다음 외부 키와 연결된 OpenAI 프로젝트를 만듭니다. 그러면 프로젝트에서 EKM이 활성화됩니다.
이 API 호출의 응답 본문에서 프로젝트 ID(proj_xxx)를 확인할 수 있습니다.
OpenAI/Azure 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"
}'