다음을 통해 공유


애플리케이션에서 앱 역할을 추가하고 토큰에서 수신

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 관리 센터의 사용자 인터페이스를 사용하여 앱 역할을 만들려면 다음을 수행합니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 앱 등록이 포함된 테넌트로 전환합니다.

  3. ID>애플리케이션>앱 등록으로 이동한 다음 앱 역할을 정의할 애플리케이션을 선택합니다.

  4. 관리에서 앱 역할을 선택한 다음, 앱 역할 만들기를 선택합니다.

    Azure Portal의 앱 등록의 앱 역할 창

  5. 앱 역할 만들기 창에서 역할에 대한 설정을 입력합니다. 이미지 다음 표는 각 설정 및 해당 매개 변수를 설명합니다.

    Azure Portal의 앱 등록의 앱 역할 만들기 컨텍스트 창

    필드 Description 예시
    표시 이름 관리자 승인 및 앱 할당 환경에 표시되는 앱 역할의 표시 이름입니다. 이 값에는 공백이 포함될 수 있습니다. Survey Writer
    허용된 멤버 유형 이 앱 역할을 사용자, 애플리케이션 또는 둘 다에 할당할 수 있는지 여부를 지정합니다.

    applications에 제공되는 경우 앱 등록의 관리 섹션 >API 권한 > 권한 추가 > 내 API > API 선택 > 애플리케이션 권한에서 앱 역할이 애플리케이션 권한으로 표시됩니다.
    Users/Groups
    애플리케이션이 토큰에서 예상하는 역할 클레임의 값을 지정합니다. 값은 애플리케이션 코드에 참조된 문자열과 정확하게 일치해야 합니다. 값은 공백을 포함할 수 없습니다. Survey.Create
    설명 관리 앱 할당 및 동의 환경 중에 표시되는 앱 역할에 대한 자세한 설명입니다. Writers can create surveys.
    이 앱 역할을 사용하도록 설정하시겠습니까? 앱 역할 사용 여부를 지정합니다. 앱 역할을 삭제하려면 삭제 작업을 시도하기 전 이 확인란을 선택 취소하고 변경 사항을 적용합니다. 이 설정은 앱 역할의 사용 및 가용성을 제어하는 동시에 앱 역할을 완전히 제거하지 않고도 일시적으로 또는 영구적으로 사용하지 않도록 설정할 수 있습니다. 선택
  6. 적용을 선택하여 변경 내용을 저장합니다.

앱 역할을 사용으로 설정하면 할당된 모든 사용자, 애플리케이션 또는 그룹에 앱 역할이 해당 토큰에 포함됩니다. 이는 앱이 앱에 의해 호출되는 API인 경우 액세스 토큰이 될 수 있고, 앱이 사용자에 로그인할 때 ID 토큰이 될 수 있습니다. 사용하지 않도록 설정되면 비활성화되어 더 이상 할당할 수 없습니다. 이전의 모든 담당자는 해당 토큰에 포함된 앱 역할을 유지하지만 더 이상 적극적으로 할당할 수 없으므로 아무런 효과가 없습니다.

애플리케이션 소유자 할당

애플리케이션에 앱 역할을 할당하려면 애플리케이션 소유자로 자신을 할당해야 합니다.

  1. 앱 등록의 관리에서 소유자를 선택하고 소유자 추가를 선택합니다.
  2. 새 창에서 애플리케이션에 할당할 소유자를 찾아서 선택합니다. 선택한 소유자가 오른쪽 패널에 나타납니다. 완료되면 선택으로 확인하면 앱 소유자가 소유자 목록에 표시됩니다.

참고 항목

API 애플리케이션과 권한을 추가하려는 애플리케이션 모두에 소유자가 있는지 확인합니다. 그렇지 않으면 API 권한을 요청할 때 API가 나열되지 않습니다.

애플리케이션에 앱 역할 할당

애플리케이션에서 앱 역할을 추가한 후 Microsoft Entra 관리 센터를 사용하거나 Microsoft Graph를 사용하여 프로그래밍 방식으로 클라이언트 앱에 앱 역할을 할당할 수 있습니다. 애플리케이션에 앱 역할을 할당하는 것은 사용자에게 역할을 할당하는 작업과 혼동해서는 안 됩니다.

애플리케이션에 앱 역할을 할당할 때 애플리케이션 권한을 만듭니다. 애플리케이션 권한은 일반적으로 인증을 수행하고 사용자의 상호 작용 없이 자체적으로 권한 부여된 API 호출을 수행해야 하는 데몬 앱 또는 백 엔드 서비스에서 사용됩니다.

Microsoft Entra 관리 센터를 사용하여 애플리케이션에 앱 역할을 할당하려면 다음을 수행합니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>애플리케이션>앱 등록으로 이동한 다음 모든 애플리케이션을 선택합니다.
  3. 모든 애플리케이션을 선택하여 모든 애플리케이션 목록을 봅니다. 애플리케이션이 목록에 표시되지 않으면 모든 애플리케이션 목록 상단의 필터를 사용하여 목록을 제한하거나 목록을 아래로 스크롤하여 애플리케이션을 찾습니다.
  4. 앱 역할을 할당하려는 애플리케이션을 선택합니다.
  5. API 권한>권한 추가를 선택합니다.
  6. 내 API 탭을 선택한 후 앱 역할을 정의한 대상 앱을 선택합니다.
  7. 사용 권한에서 할당할 역할을 선택합니다.
  8. 권한 추가 단추를 선택하여 역할 추가를 완료합니다.

새로 추가된 역할은 앱 등록의 API 권한 창에 표시됩니다.

이 권한은 위임된 권한이 아니라 애플리케이션 권한이기 때문에 관리자가 애플리케이션에 할당된 앱 역할을 사용하도록 동의해야 합니다.

  1. 앱 등록의 API 권한 창에서 <테넌트 이름>에 대한 관리자 동의 허용을 선택합니다.
  2. 요청된 권한에 대해 동의를 허용하라는 메시지가 표시되면 를 선택합니다.

상태 열에는 동의가 <테넌트 이름>에 대해 허용되었는지 표시됩니다.

앱 역할의 사용 시나리오

애플리케이션 시나리오에서 사용자를 로그인하는 앱 역할 비즈니스 논리를 구현하는 경우 먼저 앱 등록에서 앱 역할을 정의합니다. 그런 다음 관리자가 엔터프라이즈 애플리케이션 창에서 사용자 및 그룹에 할당합니다. 시나리오에 따라 이러한 할당된 앱 역할은 애플리케이션에 대해 발급된 다른 토큰에 포함됩니다. 예를 들어 사용자를 로그인하는 앱의 경우 역할 클레임이 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 관리 센터를 사용하여 역할에 사용자 및 그룹을 할당하려면 다음을 수행합니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 앱 등록이 포함된 테넌트로 전환합니다.
  3. ID>애플리케이션>엔터프라이즈 애플리케이션으로 이동합니다.
  4. 모든 애플리케이션을 선택하여 모든 애플리케이션 목록을 봅니다. 애플리케이션이 목록에 표시되지 않으면 모든 애플리케이션 목록 상단의 필터를 사용하여 목록을 제한하거나 목록을 아래로 스크롤하여 애플리케이션을 찾습니다.
  5. 역할에 사용자 또는 보안 그룹을 할당할 애플리케이션을 선택합니다.
  6. 관리에서 사용자 및 그룹을 선택합니다.
  7. 사용자 추가를 선택하여 할당 추가 창을 엽니다.
  8. 할당 추가 창에서 사용자 및 그룹 선택기를 선택합니다. 사용자와 보안 그룹 목록이 표시됩니다. 특정 사용자 또는 그룹을 검색하고 목록에 표시되는 여러 사용자 및 그룹을 선택할 수 있습니다. 계속하려면 선택 단추를 선택합니다.
  9. 할당 추가 창에서 역할 선택을 선택합니다. 애플리케이션에 대해 정의한 모든 역할이 표시됩니다.
  10. 역할을 선택하고 선택 단추를 선택합니다.
  11. 할당 단추를 선택하여 앱에 대한 사용자 및 그룹 할당을 완료합니다.

추가한 사용자와 그룹이 사용자 및 그룹 목록에 보이는지 확인합니다.

다음 단계

앱 역할에 대해 자세히 알아보려면 다음 리소스를 참조하세요.