Azure OpenAI에서 지원하는 인증 방법
Azure OpenAI는 리소스에 대한 안전하고 제어된 액세스를 보장하기 위해 여러 가지 인증 방법을 지원합니다. 기본적인 방법은 다음과 같습니다.
- API 키: Azure OpenAI는 API 키 기반 인증도 지원합니다. API 키는 Azure Portal 내에서 생성되며 Azure OpenAI 서비스에 대한 요청을 인증하는 데 사용할 수 있습니다. 보안 관점에서 이 인증 방법은 권장되지 않으며 최후의 수단으로만 사용해야 합니다. 이러한 인증 방법을 사용해야 하는 경우 API 키를 안전하게 처리하고 주기적으로 회전하여 무단 액세스 위험을 줄이는 것이 중요합니다.
- Microsoft Entra ID: 이 방법은 Microsoft Entra의 강력한 ID 및 액세스 관리 기능을 활용합니다. 사용자와 애플리케이션은 기존 사용자 계정이거나 관리 ID일 수 있는 Microsoft Entra ID를 사용하여 인증합니다. 이 방법을 사용하면 인증된 사용자 및 권한 있는 사용자만 Azure OpenAI 리소스에 액세스할 수 있습니다.
- Entra관리 ID: Azure 리소스에 대한 관리 ID는 Microsoft Entra 인증을 지원하는 리소스에 연결할 때 애플리케이션이 사용할 수 있도록 Microsoft Entra에서 자동으로 관리 ID를 제공합니다. 이러한 ID는 시스템 할당이 가능합니다. 즉, 특정 Azure 리소스에 연결되고 사용자 할당이 가능하여 단일 ID를 여러 리소스에서 공유할 수 있습니다. 관리 ID는 애플리케이션 코드에 하드 코딩된 자격 증명이 필요 없기 때문에 자격 증명 관리를 간소화하고 보안을 강화합니다.
관리 ID가 API 키보다 더 안전한 이유
Microsoft Azure의 관리 ID는 여러 가지 이유로 API 키에 비해 더 안전한 대안을 제공합니다.
- 관리 ID를 사용하면 개발자가 자격 증명을 직접 처리할 필요가 없으므로 실수로 노출되거나 오용될 위험이 줄어듭니다.
- API 키를 사용할 때 개발자는 이러한 키를 애플리케이션 코드나 구성 파일에 포함해야 합니다.
API 키는 소스 코드 리포지토리, 로그 또는 기타 수단을 통해 실수로 노출될 수 있습니다. 이러한 노출로 인해 무단 액세스 및 잠재적인 보안 위반이 발생할 수 있습니다. 이와 대비적으로 관리 ID는 애플리케이션이 Microsoft Entra(이전의 Azure AD) 인증을 지원하는 리소스에 연결할 때 사용할 수 있는 자동 관리 ID를 제공합니다. 즉, 자격 증명이 애플리케이션 코드에 저장되지 않으므로 누출 및 무단 액세스의 위험이 줄어듭니다.
또한 관리 ID를 사용하면 명시적 자격 증명 없이도 Azure 서비스가 다른 Azure 서비스에 안전하게 인증할 수 있으므로 인증 프로세스가 간소화됩니다. 이는 Microsoft Entra가 발급한 토큰을 사용하여 자동으로 관리되고 회전되며, 자격 증명이 항상 최신 상태를 유지하고 자격 증명 탈취 위험을 줄여줍니다. 반면 API 키는 정적이며 수동으로 회전해야 하므로 오류가 발생하기 쉽고 종종 무시되어 잠재적인 취약성이 발생할 수 있습니다. 개발자는 관리 ID를 사용하여 RBAC(역할 기반 액세스 제어)와 같은 Azure의 기본 제공 보안 기능을 활용하여 리소스에 정확한 권한을 부여하고 보안을 더욱 강화할 수 있습니다.
Microsoft에서는 Azure OpenAI 또는 관리 ID를 지원하는 다른 Azure 서비스에 인증하는 경우 API 키 대신 관리 ID를 사용하는 것이 좋습니다.
Azure OpenAI 내에서 API 키 및 관리 ID 사용의 차이점
유출된 클라이언트 ID와 유출된 API 키의 영향을 평가해 보겠습니다.
API 키는 일반 암호와 유사하게 작동합니다. 이 키가 손상되면 키가 있는 사용자는 누구나 리소스에 액세스할 수 있습니다. Azure OpenAI의 경우 이는 GPT-4와 같은 AI 모델을 제한 없이 사용할 수 있음을 의미합니다. 네트워크에 공개적으로 액세스할 수 있는 경우 보안에 미치는 영향이 더 커질 수 있습니다.
반대로, 클라이언트 ID가 유출될 경우 위험은 최소화됩니다. 이는 클라이언트 ID만으로는 Azure OpenAI에 연결을 설정할 수 없기 때문입니다. 관리 ID를 활용하려면 해당 서비스가 Azure에서 작동해야 하며, Azure OpenAI가 공개된 경우에도 애플리케이션을 사용하여 로컬 환경이나 네트워크를 통해 연결할 수 없습니다.
요약하자면, 유출된 API 키의 결과에 비해 유출된 클라이언트 ID를 악용하는 데는 여러 단계가 필요하므로 악의적인 행위자가 악용하기 어렵습니다.
이러한 이유로 관리 ID는 API 키에 비해 작업을 관리하는 더 안전한 방법을 제공합니다. 가능한 한 가장 강력한 표현으로, Azure OpenAI나 관리 ID를 지원하는 다른 Azure 서비스에 인증하는 경우 API 키 대신 관리 ID를 사용하는 것이 가장 좋습니다.
시스템 할당 ID 및 사용자 할당 ID
Azure OpenAI 애플리케이션을 빌드할 때 시스템이 할당한 ID와 사용자가 할당한 ID의 차이점을 이해하는 것은 최적의 보안과 리소스 관리를 위해 매우 중요합니다.
- 특정 리소스에 대해 Azure에서 시스템 할당 ID를 만들고 관리합니다. 리소스가 삭제되면 시스템에서 할당한 연결된 ID도 삭제되어 ID 수명 주기가 해당 리소스와 긴밀하게 결합됩니다. 이러한 형식의 ID는 단일 리소스에서만 사용해야 하는 시나리오에 적합하며, Azure에서 ID의 자격 증명을 관리하므로 단순성을 제공하고 관리 오버헤드를 줄여줍니다.
- 사용자가 할당한 ID는 특정 리소스와 독립적으로 만들어지며 여러 리소스에서 공유될 수 있습니다. 이를 통해 다양한 리소스에서 일관된 ID가 필요한 애플리케이션에 매우 다양하게 활용할 수 있으며, 권한 및 액세스 제어를 보다 쉽게 관리할 수 있습니다. 사용자가 할당한 ID는 해당 ID를 사용하는 리소스가 삭제된 후에도 유지되므로 더 유연하게 ID를 다시 배포하고 재사용할 수 있습니다.
시스템 할당 ID와 사용자 할당 ID 중 무엇을 선택하는지는 애플리케이션의 특정 요구 사항에 따라 달라집니다. 단순성과 최소 관리가 우선 순위인 단일 리소스 애플리케이션의 경우 일반적으로 시스템 할당 ID를 선택하는 것이 가장 좋습니다. 반대로, 여러 리소스에서 공유 ID가 필요한 애플리케이션의 경우 사용자가 할당한 ID를 선택하면 유연성 및 재사용성을 향상할 수 있습니다.