Event Hubs를 사용하여 Azure Functions 보호
Azure에서 리소스에 대한 액세스를 구성할 때는 리소스에 대한 권한에 대해 세분화된 제어를 적용해야 합니다. 이러한 리소스에 대한 액세스는 클라이언트가 부여된 제한된 작업 집합만 수행할 수 있도록 알아야 할 필요성과 최소 권한 보안 원칙을 기반으로 해야 합니다.
Event Hubs에 대한 액세스 권한 부여
Azure Event Hubs 리소스에 대한 액세스 권한 부여는 다음 보안 구문을 사용하여 수행할 수 있습니다.
Microsoft Entra ID: Microsoft Entra ID는 Event Hubs 리소스에 대한 클라이언트의 액세스를 세부적으로 제어하기 위한 RBAC(역할 기반 액세스 제어)를 제공합니다. 부여된 역할 및 권한에 따라 Microsoft Entra ID는 OAuth 2.0 액세스 토큰을 사용하여 요청에 권한을 부여합니다.
공유 액세스 서명: SAS(공유 액세스 서명)는 권한 부여 규칙에 따라 Event Hubs 리소스를 보호하는 기능을 제공합니다. 권한 부여 정책은 메시지를 보내고, 메시지를 수신 대기하고, 네임스페이스에서 엔터티를 관리하는 기능과 같은 정책 규칙을 하나 이상 선택하여 정의합니다.
공유 액세스 서명 고려 사항
Azure Functions 및 Event Hubs에서 공유 액세스 서명을 사용하는 경우 다음 고려 사항을 검토해야 합니다.
관리 권한 피하기: Event Hubs 네임스페이스에서 엔터티를 관리할 수 있는 것 외에도 관리 권한에는 보내기 및 수신 대기 권한이 둘 다 포함됩니다. 이상적으로 함수 앱에는 수행하는 작업에 따라 보내기 및 수신 대기 권한의 조합만 부여해야 합니다.
기본 관리 규칙 사용 안 함: 함수 앱에 필요한 경우가 아니면(일반적이지 않은 시나리오여야 함) RootManageSharedAccessKey라는 기본 정책 규칙을 사용하지 않습니다. 이 기본 규칙의 또 다른 주의 사항은 네임스페이스 수준에서 만들어지고 모든 기본 이벤트 허브에 대한 권한을 부여한다는 것입니다.
공유 액세스 정책 범위 검토: 공유 액세스 정책은 네임스페이스 수준에서 그리고 이벤트 허브별로 만들 수 있습니다. 각 클라이언트의 범위와 권한을 제한하도록 각 클라이언트에 맞게 조정된 세분화된 액세스 정책을 만드는 것이 좋습니다.
관리 ID
Active Directory ID는 함수 앱 또는 웹앱과 같은 Azure의 관리되는 리소스에 할당할 수 있습니다. ID가 할당되면 서비스 주체와 마찬가지로 권한 부여를 위해 Microsoft Entra ID를 사용하는 다른 리소스와 함께 작업할 수 있는 기능이 있습니다.
함수 앱에 관리 ID를 할당하고 Event Hubs를 비롯한 서비스 하위 집합에 대한 ID 기반 연결을 활용할 수 있습니다. ID 기반 연결은 트리거 및 출력 바인딩 확장을 둘 다 지원하며 지원을 위해 Event Hubs 확장 5.x 이상을 사용해야 합니다.
네트워크
기본적으로 Event Hubs 네임스페이스는 요청에 유효한 인증 및 권한 부여가 제공되는 한 인터넷에서 액세스할 수 있습니다. Event Hubs 네임스페이스에 대한 네트워크 액세스를 제한하는 세 가지 옵션이 있습니다.
모든 경우에 네임스페이스에 대한 IP 방화벽 규칙 또는 가상 네트워크 규칙이 하나 이상 지정되어 있다는 점에 유의해야 합니다. 그렇지 않고 IP 주소 또는 가상 네트워크 규칙이 지정되지 있지 않으면 공용 인터넷을 통해 네임스페이스에 액세스할 수 있습니다(액세스 키 사용).
Azure Functions는 서비스 엔드포인트 또는 프라이빗 엔드포인트로 설정된 이벤트 허브의 이벤트를 사용하거나 이벤트 허브에 게시하도록 구성할 수 있습니다. 함수 앱이 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용하여 이벤트 허브에 연결하려면 지역 가상 네트워크 통합이 필요합니다.
Functions를 가상 네트워크와 통합하고 사용하도록 설정 vnetRouteAllEnabled
하면 함수 앱의 모든 아웃바운드 트래픽이 가상 네트워크를 통해 강제로 적용됩니다. 이는 Azure 서비스에 대한 트래픽을 비롯한 모든 트래픽이 검사 및 제어를 위해 가상 네트워크를 통과하도록 하여 함수 앱을 보호하려는 시나리오에서 특히 중요합니다. 함수 앱을 완전히 잠그려면 스토리지 계정도 제한해야 합니다.
가상 네트워크 환경에서 이벤트를 트리거(소비)하려면 함수 앱을 프리미엄 플랜, 전용(App Service) 플랜 또는 ASE(App Service Environment)에서 호스트해야 합니다.
또한 Azure Functions 프리미엄 플랜에서 실행하고 가상 네트워크 제한 이벤트 허브에서 이벤트를 사용하려면 런타임 크기 조정 모니터링이라고도 하는 가상 네트워크 트리거 지원이 필요합니다. 런타임 크기 조정 모니터링은 Azure Portal, Azure CLI 또는 기타 배포 솔루션을 통해 구성할 수 있습니다. 함수가 전용(App Service) 플랜 또는 ASE에서 실행되는 경우 런타임 크기 조정 모니터링을 사용할 수 없습니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- David Barkol | 수석 솔루션 전문가 GBB
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.
다음 단계
계속하기 전에 다음 관련 문서를 검토하는 것이 좋습니다.
관련 리소스
서버리스 이벤트 처리는 코드 샘플 및 중요한 고려 사항에 대한 논의와 함께 이 유형의 일반적인 아키텍처를 자세히 설명하는 참조 아키텍처입니다.