애플리케이션에서 앱 역할을 추가하고 토큰에서 수신
RBAC(역할 기반 액세스 제어)는 애플리케이션에서 권한 부여를 적용하는 데 널리 사용되는 메커니즘입니다. RBAC를 통해 관리자는 특정 사용자 또는 그룹이 아닌 역할에 권한을 부여할 수 있습니다. 그런 다음 관리자는 다른 사용자 및 그룹에 역할을 할당하여 누가 어떤 컨텐츠와 기능에 액세스 권한을 갖는지를 제어할 수 있습니다.
애플리케이션 역할 및 역할 클레임과 함께 RBAC를 사용하면 개발자는 적은 노력으로 자신의 앱에서 권한 부여를 안전하게 적용할 수 있습니다.
또 다른 접근 방식은 GitHub의 active-directory-aspnetcore-webapp-openidconnect-v2 코드 샘플에 표시된 것처럼 Microsoft Entra 그룹 및 그룹 클레임을 사용하는 것입니다. Microsoft Entra 그룹 및 애플리케이션 역할은 상호 배타적이지 않습니다. 보다 세분화된 액세스 제어를 제공하기 위해 함께 사용할 수 있습니다.
애플리케이션에 대한 역할 선언
앱 등록 프로세스 중에 Microsoft Entra 관리 센터를 사용하여 앱 역할을 정의합니다. 앱 역할은 서비스, 앱 또는 API를 나타내는 애플리케이션 등록에 정의됩니다. 사용자가 애플리케이션에 로그인하면 Microsoft Entra ID는 사용자 또는 서비스 주체가 부여한 각 역할에 대한 클레임을 내보내 roles
며 클레임 기반 권한 부여를 구현하는 데 사용할 수 있습니다. 앱 역할을 사용자 또는 사용자 그룹에 할당할 수 있습니다. 또한 앱 역할을 다른 애플리케이션의 서비스 주체 또는 관리 ID의 서비스 주체에 할당할 수도 있습니다.
현재 그룹에 서비스 주체를 추가한 후 이 그룹에 앱 역할을 할당하는 경우 Microsoft Entra ID는 발행하는 토큰에 roles
클레임을 추가하지 않습니다.
앱 역할은 Microsoft Entra 관리 센터에서 앱 역할 UI를 사용하여 선언됩니다.
추가하는 역할 수는 Microsoft Entra ID에 적용된 애플리케이션 매니페스트 제한에 따라 계산됩니다. 이러한 제한에 대한 자세한 내용은 Microsoft Entra 앱 매니페스트 참조의 매니페스트 제한 섹션을 참조하세요.
앱 역할 UI
팁
이 문서의 단계는 시작하는 포털에 따라 약간 다를 수도 있습니다.
Microsoft Entra 관리 센터의 사용자 인터페이스를 사용하여 앱 역할을 만들려면 다음을 수행합니다.
최소한 클라우드 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 앱 등록이 포함된 테넌트로 전환합니다.
ID>애플리케이션>앱 등록으로 이동한 다음 앱 역할을 정의할 애플리케이션을 선택합니다.
관리에서 앱 역할을 선택한 다음, 앱 역할 만들기를 선택합니다.
앱 역할 만들기 창에서 역할에 대한 설정을 입력합니다. 이미지 다음 표는 각 설정 및 해당 매개 변수를 설명합니다.
필드 Description 예시 표시 이름 관리자 승인 및 앱 할당 환경에 표시되는 앱 역할의 표시 이름입니다. 이 값에는 공백이 포함될 수 있습니다. Survey Writer
허용된 멤버 유형 이 앱 역할을 사용자, 애플리케이션 또는 둘 다에 할당할 수 있는지 여부를 지정합니다. applications
에 제공되는 경우 앱 등록의 관리 섹션 >API 권한 > 권한 추가 > 내 API > API 선택 > 애플리케이션 권한에서 앱 역할이 애플리케이션 권한으로 표시됩니다.Users/Groups
값 애플리케이션이 토큰에서 예상하는 역할 클레임의 값을 지정합니다. 값은 애플리케이션 코드에 참조된 문자열과 정확하게 일치해야 합니다. 값은 공백을 포함할 수 없습니다. Survey.Create
설명 관리 앱 할당 및 동의 환경 중에 표시되는 앱 역할에 대한 자세한 설명입니다. Writers can create surveys.
이 앱 역할을 사용하도록 설정하시겠습니까? 앱 역할 사용 여부를 지정합니다. 앱 역할을 삭제하려면 삭제 작업을 시도하기 전 이 확인란을 선택 취소하고 변경 사항을 적용합니다. 이 설정은 앱 역할의 사용 및 가용성을 제어하는 동시에 앱 역할을 완전히 제거하지 않고도 일시적으로 또는 영구적으로 사용하지 않도록 설정할 수 있습니다. 선택 적용을 선택하여 변경 내용을 저장합니다.
앱 역할을 사용으로 설정하면 할당된 모든 사용자, 애플리케이션 또는 그룹에 앱 역할이 해당 토큰에 포함됩니다. 이는 앱이 앱에 의해 호출되는 API인 경우 액세스 토큰이 될 수 있고, 앱이 사용자에 로그인할 때 ID 토큰이 될 수 있습니다. 사용하지 않도록 설정되면 비활성화되어 더 이상 할당할 수 없습니다. 이전의 모든 담당자는 해당 토큰에 포함된 앱 역할을 유지하지만 더 이상 적극적으로 할당할 수 없으므로 아무런 효과가 없습니다.
애플리케이션 소유자 할당
애플리케이션에 앱 역할을 할당하려면 애플리케이션 소유자로 자신을 할당해야 합니다.
- 앱 등록의 관리에서 소유자를 선택하고 소유자 추가를 선택합니다.
- 새 창에서 애플리케이션에 할당할 소유자를 찾아서 선택합니다. 선택한 소유자가 오른쪽 패널에 나타납니다. 완료되면 선택으로 확인하면 앱 소유자가 소유자 목록에 표시됩니다.
참고 항목
API 애플리케이션과 권한을 추가하려는 애플리케이션 모두에 소유자가 있는지 확인합니다. 그렇지 않으면 API 권한을 요청할 때 API가 나열되지 않습니다.
애플리케이션에 앱 역할 할당
애플리케이션에서 앱 역할을 추가한 후 Microsoft Entra 관리 센터를 사용하거나 Microsoft Graph를 사용하여 프로그래밍 방식으로 클라이언트 앱에 앱 역할을 할당할 수 있습니다. 애플리케이션에 앱 역할을 할당하는 것은 사용자에게 역할을 할당하는 작업과 혼동해서는 안 됩니다.
애플리케이션에 앱 역할을 할당할 때 애플리케이션 권한을 만듭니다. 애플리케이션 권한은 일반적으로 인증을 수행하고 사용자의 상호 작용 없이 자체적으로 권한 부여된 API 호출을 수행해야 하는 데몬 앱 또는 백 엔드 서비스에서 사용됩니다.
Microsoft Entra 관리 센터를 사용하여 애플리케이션에 앱 역할을 할당하려면 다음을 수행합니다.
- 최소한 클라우드 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
- ID>애플리케이션>앱 등록으로 이동한 다음 모든 애플리케이션을 선택합니다.
- 모든 애플리케이션을 선택하여 모든 애플리케이션 목록을 봅니다. 애플리케이션이 목록에 표시되지 않으면 모든 애플리케이션 목록 상단의 필터를 사용하여 목록을 제한하거나 목록을 아래로 스크롤하여 애플리케이션을 찾습니다.
- 앱 역할을 할당하려는 애플리케이션을 선택합니다.
- API 권한>권한 추가를 선택합니다.
- 내 API 탭을 선택한 후 앱 역할을 정의한 대상 앱을 선택합니다.
- 사용 권한에서 할당할 역할을 선택합니다.
- 권한 추가 단추를 선택하여 역할 추가를 완료합니다.
새로 추가된 역할은 앱 등록의 API 권한 창에 표시됩니다.
관리자 동의 부여
이 권한은 위임된 권한이 아니라 애플리케이션 권한이기 때문에 관리자가 애플리케이션에 할당된 앱 역할을 사용하도록 동의해야 합니다.
- 앱 등록의 API 권한 창에서 <테넌트 이름>에 대한 관리자 동의 허용을 선택합니다.
- 요청된 권한에 대해 동의를 허용하라는 메시지가 표시되면 예를 선택합니다.
상태 열에는 동의가 <테넌트 이름>에 대해 허용되었는지 표시됩니다.
앱 역할의 사용 시나리오
애플리케이션 시나리오에서 사용자를 로그인하는 앱 역할 비즈니스 논리를 구현하는 경우 먼저 앱 등록에서 앱 역할을 정의합니다. 그런 다음 관리자가 엔터프라이즈 애플리케이션 창에서 사용자 및 그룹에 할당합니다. 시나리오에 따라 이러한 할당된 앱 역할은 애플리케이션에 대해 발급된 다른 토큰에 포함됩니다. 예를 들어 사용자를 로그인하는 앱의 경우 역할 클레임이 ID 토큰에 포함됩니다. 애플리케이션이 API를 호출하면 역할 클레임이 액세스 토큰에 포함됩니다.
앱 호출 API 시나리오에서 앱 역할 비즈니스 논리를 구현하는 경우 두 개의 앱 등록이 있습니다. 하나의 앱 등록은 앱용이고 두 번째 앱 등록은 API용입니다. 이 경우 API의 앱 등록에서 앱 역할을 정의하고 사용자 또는 그룹에 할당합니다. 사용자가 앱으로 인증하고 API를 호출하기 위해 액세스 토큰을 요청하면 역할 클레임이 토큰에 포함됩니다. 다음 단계는 API가 호출될 때 해당 역할을 확인하기 위해 웹 API에 코드를 추가하는 것입니다.
웹 API에 권한 부여를 추가하는 방법은 보호된 웹 API: 범위 및 앱 역할 확인을 참조하세요.
앱 역할 및 그룹
권한 부여를 위해 앱 역할 또는 그룹을 사용할 수 있지만, 시나리오에 사용할 항목을 결정할 때 둘 사이의 주요 차이점을 고려해야 합니다.
앱 역할 | Groups |
---|---|
애플리케이션에 따라 다르며, 앱 등록에 정의됩니다. 애플리케이션과 함께 이동합니다. | 앱에만 국한된 것이 아니라 Microsoft Entra 테넌트에 적용됩니다. |
앱 역할은 앱 등록이 제거될 때 제거됩니다. | 그룹은 앱이 제거되어도 그대로 유지됩니다. |
roles 클레임에 제공됩니다. |
groups 클레임에 제공됩니다. |
개발자는 앱 역할을 사용하여 사용자가 앱에 로그인할 수 있는지 또는 앱이 웹 API에 대해 액세스 토큰을 가져올 수 있는지 제어할 수 있습니다. 이 보안 제어를 그룹을 확장하기 위해 개발자 및 관리자는 보안 그룹을 앱 역할에 할당할 수도 있습니다.
개발자는 앱 자체에서 권한 부여의 매개 변수를 설명하고 제어하려는 경우 앱 역할을 사용하는 것을 선호합니다. 예를 들어 권한 부여를 위해 그룹을 사용하는 앱은 해당 그룹 ID와 이름이 다를 수 있기 때문에 다음 테넌트에서 중단됩니다. 앱 역할을 사용하는 앱은 안전하게 유지됩니다. 실제로 SaaS 앱은 여러 테넌트에서 SaaS 앱을 프로비전할 수 있으므로 동일한 이유로 앱 역할에 그룹을 할당하는 경우가 많습니다.
Microsoft Entra 역할에 사용자 및 그룹 할당
애플리케이션에 앱 역할을 추가한 후에는 Microsoft Entra 역할에 사용자 및 그룹을 할당할 수 있습니다. 역할에 사용자 및 그룹을 할당하는 작업은 포털의 UI를 통해 수행하거나 Microsoft Graph를 사용하여 프로그래밍 방식으로 수행할 수 있습니다. 다양한 역할에 할당된 사용자가 애플리케이션에 로그인하면 해당 토큰에는 클레임에 roles
할당된 역할이 있습니다.
Microsoft Entra 관리 센터를 사용하여 역할에 사용자 및 그룹을 할당하려면 다음을 수행합니다.
- 최소한 클라우드 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
- 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 앱 등록이 포함된 테넌트로 전환합니다.
- ID>애플리케이션>엔터프라이즈 애플리케이션으로 이동합니다.
- 모든 애플리케이션을 선택하여 모든 애플리케이션 목록을 봅니다. 애플리케이션이 목록에 표시되지 않으면 모든 애플리케이션 목록 상단의 필터를 사용하여 목록을 제한하거나 목록을 아래로 스크롤하여 애플리케이션을 찾습니다.
- 역할에 사용자 또는 보안 그룹을 할당할 애플리케이션을 선택합니다.
- 관리에서 사용자 및 그룹을 선택합니다.
- 사용자 추가를 선택하여 할당 추가 창을 엽니다.
- 할당 추가 창에서 사용자 및 그룹 선택기를 선택합니다. 사용자와 보안 그룹 목록이 표시됩니다. 특정 사용자 또는 그룹을 검색하고 목록에 표시되는 여러 사용자 및 그룹을 선택할 수 있습니다. 계속하려면 선택 단추를 선택합니다.
- 할당 추가 창에서 역할 선택을 선택합니다. 애플리케이션에 대해 정의한 모든 역할이 표시됩니다.
- 역할을 선택하고 선택 단추를 선택합니다.
- 할당 단추를 선택하여 앱에 대한 사용자 및 그룹 할당을 완료합니다.
추가한 사용자와 그룹이 사용자 및 그룹 목록에 보이는지 확인합니다.
다음 단계
앱 역할에 대해 자세히 알아보려면 다음 리소스를 참조하세요.
- GitHub의 코드 샘플
- 참조 설명서
- 동영상: Microsoft ID 플랫폼을 사용하여 애플리케이션에서 권한 부여 구현(1:01:15)