다음을 통해 공유


Microsoft Entra ID의 서비스 주체 보호

Microsoft Entra 서비스 주체는 테넌트 또는 디렉터리에 있는 애플리케이션 개체의 로컬 표현입니다. 애플리케이션 인스턴스의 ID입니다. 서비스 주체는 애플리케이션 액세스 및 애플리케이션이 액세스하는 리소스를 정의합니다. 서비스 주체는 애플리케이션이 사용되는 각 테넌트에 생성되고 전역적으로 고유한 애플리케이션 개체를 참조합니다. 테넌트는 서비스 주체의 로그인 및 리소스에 대한 액세스를 보호합니다.

자세히 알아보기: Microsoft Entra ID의 애플리케이션 및 서비스 주체 개체

테넌트-서비스 주체 관계

단일 테넌트 애플리케이션에는 해당 홈 테넌트에 서비스 주체만 있습니다. 다중 테넌트 웹 애플리케이션 또는 API에는 각 테넌트의 서비스 주체가 있어야 합니다. 해당 테넌트의 사용자가 애플리케이션 또는 API 사용에 동의하면 서비스 주체가 만들어집니다. 이 동의는 다중 테넌트 애플리케이션과 연결된 서비스 주체 간에 일 대 다 관계를 만듭니다.

다중 테넌트 애플리케이션은 테넌트에 있으며 다른 테넌트에 인스턴스가 있습니다. 대부분의 SaaS(Software-as-a-Service) 애플리케이션은 다중 테넌트를 수용합니다. 서비스 주체를 사용하여 단일 및 다중 테넌트 시나리오에서 애플리케이션과 해당 사용자에 필요한 보안 태세를 보장합니다.

ApplicationID 및 ObjectID

애플리케이션 인스턴스에는 ApplicationID(또는 ClientID)와 ObjectID라는 두 가지 속성이 있습니다.

참고 항목

인증 작업에서 애플리케이션을 언급할 때 애플리케이션서비스 주체라는 용어는 같은 의미로 사용됩니다. 그러나 Microsoft Entra ID에는 두 가지 애플리케이션 표현이 있습니다.

ApplicationID는 전역 애플리케이션을 나타내며, 테넌트의 애플리케이션 인스턴스에 대해 동일합니다. ObjectID는 애플리케이션 개체에 대한 고유한 값입니다. 사용자, 그룹 및 기타 리소스와 마찬가지로 ObjectID는 Microsoft Entra ID에서 애플리케이션 인스턴스를 식별하는 데 도움이 됩니다.

자세한 내용은 Microsoft Entra ID의 애플리케이션 및 서비스 주체 관계를 참조하세요.

애플리케이션 및 해당 서비스 주체 개체 만들기

다음을 사용하여 테넌트에서 애플리케이션 및 해당 서비스 주체 개체(ObjectID)를 만들 수 있습니다.

  • Azure PowerShell
  • Microsoft Graph PowerShell
  • Azure CLI(Azure 명령줄 인터페이스)
  • Microsoft Graph API
  • Azure Portal
  • 기타 도구

새 앱 페이지의 애플리케이션 또는 클라이언트 ID 및 개체 ID 스크린샷

서비스 주체 인증

서비스 주체를 사용하는 인증에는 클라이언트 인증서와 클라이언트 암호라는 두 가지 메커니즘이 있습니다.

새 앱, 인증서 및 비밀 아래의 인증서 및 클라이언트 암호 스크린샷

인증서는 더 안전하기 때문에 가능하면 인증서를 사용하는 것이 좋습니다. 클라이언트 암호와 달리 클라이언트 인증서는 실수로 코드에 포함할 수 없습니다. 가능한 경우 인증서 및 비밀 관리에 Azure Key Vault를 사용하여 하드웨어 보안 모듈로 보호되는 키로 자산을 암호화합니다.

  • 인증 키
  • Storage 계정 키
  • 데이터 암호화 키
  • .pfx 파일
  • 암호

Azure Key Vault에 대한 자세한 내용과 이를 인증서 및 비밀 관리에 사용하는 방법은 다음을 참조하세요.

과제 및 해결 방법

서비스 주체를 사용할 때 다음 표를 사용하여 챌린지와 완화를 일치시킵니다.

과제 완화 방법
권한 있는 역할에 할당된 서비스 주체에 대한 액세스 검토 이 기능은 미리 보기 상태입니다.
서비스 주체 액세스 검토 Azure Portal를 사용하여 리소스의 액세스 제어 목록 수동 확인
권한이 과다하게 부여된 서비스 주체 자동화 서비스 계정 또는 서비스 주체를 만들 때 작업에 대한 권한을 부여합니다. 서비스 주체를 평가하여 권한을 줄입니다.
서비스 주체의 자격 증명 또는 인증 방법에 대한 수정 사항 식별 - 중요한 작업 보고서 통합 문서
참조 - Solorigate 위험을 평가하는 데 도움이 되는 기술 커뮤니티 블로그 게시물,
Microsoft Entra 통합 문서를 참조하세요.

서비스 주체를 사용하여 계정 찾기

계정을 찾으려면 Azure CLI 또는 PowerShell에서 서비스 주체를 사용하여 다음 명령을 실행합니다.

  • Azure CLI - az ad sp list
  • PowerShell - Get-MgServicePrincipal -All:$true

자세한 내용은 Get-MgServicePrincipal을 참조하세요.

서비스 주체 보안 평가

보안을 평가하려면 권한 및 자격 증명 스토리지를 평가합니다. 다음 표를 사용하여 문제를 완화합니다.

과제 완화 방법
다중 테넌트 앱에 동의한 사용자를 검색하고 다중 테넌트 앱에 대한 불법 승인 부여를 검색 - 다음 PowerShell을 실행하여 다중 테넌트 앱을 찾습니다.
Get-MgServicePrincipal -All:$true | ? {$_.Tags -eq "WindowsAzureActiveDirectoryIntegratedApp"}
- 사용자 동의 사용하지 않도록 설정
- 선택한 권한에 대해 확인된 게시자의 사용자 동의 허용(권장)
- 사용자 컨텍스트에서 구성
- 토큰을 사용하여 서비스 주체 트리거
서비스 주체를 사용하는 스크립트에서 하드 코드된 공유 암호 사용 인증서 사용
누가 인증서 또는 비밀을 사용하는지 추적 Microsoft Entra 로그인 로그를 사용하여 서비스 주체 로그인 모니터링
조건부 액세스로 서비스 주체 로그인을 관리할 수 없습니다. Microsoft Entra 로그인 로그를 사용하여 로그인 모니터링
기여자는 기본 Azure RBAC(Azure 역할 기반 액세스 제어) 역할입니다. 요구 사항을 평가하고 가능한 최소한의 권한을 적용합니다.

자세히 알아보기: 조건부 액세스란?

사용자 계정에서 서비스 주체로 이동

Azure 사용자 계정을 서비스 주체로 사용하는 경우 관리 ID 또는 서비스 주체로 이동할 수 있는지 평가합니다. 관리 ID를 사용할 수 없는 경우 필요한 작업을 실행할 수 있는 충분한 권한과 범위를 서비스 주체에 부여합니다. 애플리케이션을 등록하거나 PowerShell을 사용하여 서비스 주체를 만들 수 있습니다.

Microsoft Graph를 사용하는 경우 API 설명서를 확인합니다. 애플리케이션에 대한 권한 유형이 지원되는지 확인합니다.
servicePrincipal 만들기를 참조하세요.

자세히 보기:

다음 단계

서비스 주체에 관한 자세한 정보:

서비스 계정 보호:

조건부 액세스:

조건부 액세스를 사용하여 신뢰할 수 없는 위치의 서비스 주체를 차단하세요.

위치 기반 조건부 액세스 정책 만들기를 참조하세요.