다음을 통해 공유


Microsoft Entra ID에서 앱의 요청된 권한 업데이트

Microsoft Entra ID로 응용 프로그램을 설정할 때 개발자는 권한을 사용하여 다른 앱 및 서비스의 데이터에 대한 액세스를 요청할 수 있습니다. 앱 매니페스트에 정적 권한을 추가하거나 런타임 시 동적으로 권한을 요청하여 권한을 요청할 수 있습니다. 그런 다음 사용자 또는 관리자는 동의 중에 권한을 부여하여 앱이 필요한 데이터에 액세스할 수 있도록 선택할 수 있습니다.

응용 프로그램의 기능이 발전함에 따라 응용 프로그램에 액세스해야 하는 리소스도 변경됩니다. 이러한 변경에는 새로운 기능 사용, 불필요한 액세스 제거, 높은 권한을 낮은 권한으로 바꾸는 작업이 포함될 수 있습니다. 이 문서에서는 Microsoft Entra 관리 센터 및 Microsoft Graph API 호출을 사용하여 응용 프로그램이 요청하는 권한을 업데이트하는 방법을 설명합니다.

앱에 대한 권한을 업데이트하는 것은 보안 모범 사례일 뿐만 아니라 앱의 사용자 환경과 채택을 향상시키는 방법이기도 합니다. 다음 섹션에서는 앱 권한 업데이트의 몇 가지 이점을 간략하게 설명합니다.

  • 앱에 새로운 기능이 있는 경우 앱이 필요한 추가 리소스에 액세스할 수 있도록 추가 권한을 요청할 수 있습니다.
  • 응용 프로그램이 작동하는 데 필요한 최소한의 권한만 요청하는 경우 고객이 응용 프로그램을 채택할 가능성이 더 높습니다. 이는 사용자의 앱이 고객의 개인 정보 보호 및 데이터 보호를 존중하며 필요한 것보다 더 많은 리소스에 액세스하지 않음을 보여 줍니다.
  • 또한 앱이 손상된 경우 권한이 더 적거나 낮은 경우 폭발 반지름이 더 작습니다. 이는 공격자가 고객의 데이터와 리소스에 액세스할 수 있는 권한이 적어서 잠재적 피해가 줄어든다는 의미입니다.
  • 앱에 대한 권한을 업데이트하면 앱의 보안, 유용성, 준수를 개선하고 고객과의 신뢰를 빌드할 수 있습니다.

필수 조건

앱에서 요청된 권한을 업데이트하려면 다음이 필요합니다.

  • Microsoft Entra 사용자 계정. 계정이 아직 없는 경우 무료로 계정을 만듭니다.
  • 응용 프로그램 관리자, 클라우드 애플리케이션 관리자 역할 중 하나 관리자가 아닌 응용 프로그램 소유자는 앱에서 요청된 권한을 업데이트할 수 있습니다.

권한 업데이트 시나리오

다음 섹션에는 응용 프로그램이 요청하는 권한을 업데이트해야 하는 세 가지 주요 시나리오가 나열되어 있습니다.

  • 응용 프로그램에 권한 추가
  • 응용 프로그램에서 사용되지 않는 권한 제거
  • 권한 바꾸기

참고 항목

응용 프로그램에 대해 요청된 권한을 업데이트해도 보호된 리소스에 대한 앱의 액세스 권한이 자동으로 부여되거나 철회되지는 않습니다. 고객 또는 조직의 관리자는 추가된 새 권한에 동의하거나 직접 권한을 철회해야 합니다.

응용 프로그램에 권한 추가

앱에 이전에는 필요하지 않았던 권한이 필요한 새로운 기능이 있는 경우 권한을 추가할 수 있습니다.

앱이 작동하는 데 필요한 최소 권한에 대해서만 액세스를 요청하는 것이 가장 좋습니다. 앱의 새로운 기능을 지원하기 위해 새로운 권한을 추가해야 하는 경우 해당 기능에 대해 최소한의 권한만 요청합니다. 예를 들어, 응용 프로그램에 이메일 알림 기능을 추가하려면 사용자의 이메일에 액세스해야 합니다. 이렇게 하려면 Mail.ReadWrite 권한에 대한 액세스를 요청해야 합니다.

정적 동의는 런타임이 아닌 응용 프로그램 등록 시 사용자나 관리자에게 권한을 요청하는 방법입니다. 정적 동의를 사용하려면 앱이 Microsoft Entra 관리 센터의 앱 등록 창에서 필요한 모든 권한을 선언해야 합니다. Microsoft Entra 관리 센터를 사용하면 정적 동의에 대한 권한만 업데이트할 수 있습니다. 다양한 동의 형식에 대해 자세히 알아보려면 동의 형식을 참조하세요. 동적 동의 권한을 업데이트하는 방법을 알아보려면 이 문서의 Microsoft Graph 탭을 참조하세요.

이 섹션에서는 정적 동의에 권한을 추가하는 방법을 알아봅니다.

Microsoft Entra 관리 센터에서 두 가지 방법으로 정적 동의에 대한 권한을 추가할 수 있습니다.

옵션 1: API 권한 창에서 권한 추가

  1. 최소한 클라우드 애플리케이션 관리자 또는 응용 프로그램 소유자로 Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>애플리케이션>앱 등록>모든 애플리케이션으로 이동합니다.
  3. 권한을 추가하려는 앱 등록을 찾아 선택합니다. 다음 두 가지 방법으로 권한을 추가할 수 있습니다.
  4. API 권한 창에서 권한을 추가합니다.
    1. API 권한 창을 찾아 권한 추가를 선택합니다.

    2. 사용 가능한 옵션 목록에서 액세스하려는 API와 요청하려는 권한을 선택하고 권한 추가를 선택합니다.

      API 권한 창의 스크린샷.

옵션 2: 응용 프로그램 매니페스트에 권한 추가

  1. 왼쪽 탐색 창의 관리 메뉴 그룹에서 매니페스트를 선택합니다. 선택하면 앱 등록 개체의 특성을 직접 편집할 수 있는 편집기가 열립니다.
  2. 응용 프로그램의 매니페스트 파일에서 requiredResourceAccess 속성을 주의 깊게 편집합니다.
  3. resourceAppId 속성과 resourceAccess 속성을 추가하고 필요한 권한을 할당합니다.
  4. 변경 내용을 저장합니다.

권한을 추가하는 다음 단계를 완료하려면 다음 리소스와 권한이 필요합니다.

  • 선택한 도구(예: 앱 또는 Graph Explorer를 통해)에서 HTTP 요청을 실행합니다.
  • 최소한 클라우드 애플리케이션 관리자가 있는 사용자 또는 대상 앱 등록의 소유자로 API를 실행합니다.
  • 이러한 변경을 수행하는 데 사용되는 앱에는 Application.ReadWrite.All 권한이 부여되어야 합니다.
  1. 앱에 필요한 권한, 권한 ID, 앱 역할(응용 프로그램 권한)인지 위임된 권한인지 식별합니다. 예를 들어, Microsoft Graph 권한을 요청하려는 경우 Microsoft Graph 권한에서 권한 및 해당 ID 목록을 참조하세요.

  2. 앱에 필요한 Microsoft Graph 권한을 추가합니다. 다음 예에서는 응용 프로그램 업데이트 API를 호출하여 개체 ID aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb로 식별되는 앱 등록에 필수 Microsoft Graph 권한을 추가합니다. 이 예에서는 Analytics.ReadApplication.Read.All 위임된 권한과 응용 프로그램 권한을 사용합니다. Microsoft Graph는 전역적으로 고유한 AppId00000003-0000-0000-c000-000000000000을 사용하여 ServicePrincipal 개체로 식별됩니다.

    PATCH https://graph.microsoft.com/v1.0/applications/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    Content-Type: application/json
     {
         "requiredResourceAccess": [
             {
                 "resourceAppId": "00000003-0000-0000-c000-000000000000",
                 "resourceAccess": [
                     {
                         "id": "e03cf23f-8056-446a-8994-7d93dfc8b50e",
                         "type": "Scope"
                     },
                     {
                         "id": "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30",
                         "type": "Role"
                     }
                 ]
             }
         ]
     }
    

동적 동의는 앱 등록 창에서 정적으로 선언하는 대신 런타임 시 사용자나 관리자에게 권한을 요청하는 방법입니다. 동적 동의를 사용하면 앱이 특정 기능에 필요한 권한만 요청하고 필요할 경우 사용자나 관리자로부터 동의를 가져올 수 있습니다. 동적 동의는 위임된 권한과 함께 사용할 수 있으며 /.default 범위와 결합하여 모든 권한에 대한 관리자 동의를 요청할 수 있습니다.

동적 동의에 권한을 추가하려면 다음 안내를 따릅니다.

  • Microsoft Graph 사용: 앱 등록에 필요한 Microsoft Graph 권한을 추가합니다. 이 예에서는 Analytics.ReadApplication.Read.All 위임된 권한과 응용 프로그램 권한을 사용합니다. `scopes`의 값을 앱에 대해 구성하려는 Microsoft Graph 위임된 권한 값으로 바꿉니다.

    요청은 다음 예와 같아야 합니다.

    https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=Analytics.Read+Application.Read

  • MSAL.js 사용: `scopes`의 값을 앱에 대해 구성하려는 Microsoft Graph 위임된 권한 값으로 바꿉니다.

      const Request = {
          scopes: ["openid", "profile"],
          loginHint: "example@domain.net"
      };
    
      myMSALObj.ssoSilent(Request)
          .then((response) => {
              // your logic
          }).catch(error => {
              console.error("Silent Error: " + error);
              if (error instanceof msal.InteractionRequiredAuthError) {
                  myMSALObj.loginRedirect(loginRequest);
              }
      });
    

애플리케이션에 권한이 추가된 후 사용자 또는 관리자는 새 권한에 동의해야 합니다. 관리 사용자가 아닌 사용자는 앱에 로그인할 때 동의 확인 프롬프트가 표시됩니다. 반면 관리 사용자는 앱에 처음 로그인하거나 Microsoft Entra 관리 센터에 로그인할 때 조직의 모든 사용자를 대신하여 새 권한에 동의할 수 있습니다.

추가된 권한에 관리자 동의가 필요한 경우 필요한 작업은 앱 형식에 따라 다릅니다.

  • 홈 테넌트의 단일 테넌트 앱 및 다중 테넌트 앱: 사용자는 최소한 권한 있는 역할 관리자 역할로 로그인하고 테넌트 전체 동의를 부여해야 합니다.
  • 고객 테넌트의 다중 테넌트 앱: 사용자가 다음 로그인을 시도할 때 새로운 동의 확인 프롬프트가 표시됩니다. 권한에 사용자 동의만 필요한 경우 사용자는 동의할 수 있습니다. 권한에 관리자 동의가 필요한 경우 사용자는 관리자에게 문의하여 동의를 받아야 합니다.

사용하지 않는 권한 요청 중지

권한을 제거하면 중요한 데이터가 노출되거나 보안이 손상될 위험이 줄어들고 사용자 또는 관리자의 동의 프로세스가 간소화될 수 있습니다. 앱에 더 이상 권한이 필요하지 않은 경우 앱 등록에 필요한 리소스 액세스 및 코드에서 권한을 제거하여 앱이 권한을 요청하지 못하도록 해야 합니다. 예를 들어, 더 이상 이메일 알림을 보내지 않는 응용 프로그램은 Mail.ReadWrite 권한을 제거할 수 있습니다.

중요

앱 등록에서 권한을 제거해도 앱에 이미 부여된 권한은 자동으로 철회되지 않습니다. 권한을 수동으로 철회해야 합니다. 자세한 내용은 이 문서의 엔터프라이즈 애플리케이션에 대한 권한 제거에 대한 동의 철회 섹션을 참조하세요.

정적 동의가 필요한 권한 요청을 중지하려면 앱 등록 창에서 권한을 제거해야 합니다. 또한 테넌트 관리자는 엔터프라이즈 애플리케이션 창에서 권한을 철회해야 합니다. 엔터프라이즈 애플리케이션에 부여된 권한을 철회하는 방법에 대한 자세한 내용은 엔터프라이즈 애플리케이션에 대한 권한 철회를 참조하세요.

이 섹션에서는 정적 동의에 대한 권한 요청을 중지하는 방법을 알아봅니다.

Microsoft Entra 관리 센터에서 두 가지 방법으로 정적 동의에서 권한을 제거할 수 있습니다.

옵션 1: API 권한 창에서

  1. 최소한 클라우드 애플리케이션 관리자 또는 응용 프로그램 소유자로 Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>애플리케이션>앱 등록>모든 애플리케이션으로 이동합니다.
  3. 권한을 제거하려는 앱 등록을 찾아 선택합니다.
  4. API 권한 창에서 권한을 제거합니다.
    1. API 권한 창을 찾아 제거하려는 권한을 찾습니다.

    2. 제거하려는 API를 선택하고 먼저 관리자 동의 철회를 선택한 다음 권한 제거를 선택합니다. 부여된 권한이 테넌트에서 제거되도록 합니다.

      API 권한 창을 통해 권한을 제거하는 방법을 보여 주는 스크린샷.

옵션 2: 응용 프로그램 매니페스트에서

  1. 왼쪽 탐색 창의 관리 메뉴 그룹에서 매니페스트를 선택합니다. 앱 등록 개체의 특성을 직접 편집할 수 있는 편집기가 열립니다.
  2. 응용 프로그램의 매니페스트 파일에서 requiredResourceAccess 속성을 주의 깊게 편집합니다.
  3. resourceAppId 속성 및 resourceAccess 속성에서 불필요한 권한을 제거합니다.
  4. 변경 내용을 저장합니다.

권한을 제거하는 다음 단계를 완료하려면 다음 리소스와 권한이 필요합니다.

  • 선택한 도구(예: 앱 또는 Graph Explorer를 통해)에서 HTTP 요청을 실행합니다.
  • 최소한 클라우드 애플리케이션 관리자 또는 대상 앱 등록 소유자로서 API를 호출합니다.
  • 이러한 변경을 수행하는 데 사용되는 앱에는 Application.ReadWrite.All 권한이 부여되어야 합니다.
  1. 앱에 대한 권한을 식별합니다.

  2. 예를 들어, 앱이 Microsoft Graph 권한을 요청하지 못하도록 하려면 앱에 대한 Microsoft Graph 권한, 권한 ID, 앱 역할(응용 프로그램 권한)인지 위임된 권한인지 식별합니다.

  3. 앱에서 원치 않는 Microsoft Graph 권한을 제거합니다. 다음 예에서는 응용 프로그램 업데이트 API를 호출하여 샘플 클라이언트 ID 00001111-aaaa-2222-bbbb-3333cccc4444로 식별되는 앱 등록에서 원치 않는 Microsoft Graph 권한을 제거합니다. 이 예에서 응용 프로그램에는 Analytics.Read, User.ReadApplication.Read.All이 있습니다. Analytics.ReadApplication.Read.All 위임된 권한과 응용 프로그램 권한을 제거해야 합니다. Microsoft Graph는 전역적으로 고유한 AppId00000003-0000-0000-c000-000000000000DisplayNameAppDisplayName인 Microsoft Graph를 사용하여 ServicePrincipal 개체로 식별됩니다.

    PATCH https://graph.microsoft.com/v1.0/applications/00001111-aaaa-2222-bbbb-3333cccc4444
    Content-Type: application/json
    {
        "requiredResourceAccess": [
            {
                "resourceAppId": "00000003-0000-0000-c000-000000000000",
                "resourceAccess": [
                    {
                        "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6 ",
                        "type": "Scope"
                    }
                ]
            }
        ]
    }
    

동적 동의 요청에서 위임된 권한을 제거해야 하는 경우 제거하려는 권한을 제외하고 범위 매개 변수를 지정합니다. 권한을 제거하면 앱이 해당 API를 호출하지 않습니다.

이 방법은 위임된 권한에 대해서만 작동합니다. 응용 프로그램 권한은 정적 동의를 통해 관리자가 요청하고 부여하며 OAuth 2.0 권한 부여 요청 중에 범위 매개 변수에 포함되지 않습니다.

동적 동의를 통한 권한 요청을 중지하려면 다음 안내를 따릅니다.

  • Microsoft Graph 사용: 'scopes' 매개 변수에서 원치 않는 Microsoft Graph 위임된 권한을 제거합니다. 이 예에서 애플리케이션은 세 가지 위임된 권한(Analytics.Read, User.ReadApplication.Read)을 요청합니다. 위임된 권한인 Analytics.ReadApplication.Read은 이 앱에 더 이상 필요하지 않습니다. User.Read만 필요합니다.

요청은 다음 예와 유사해야 합니다.

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=User.Read

  • MSAL.js 사용: 'scopes'에서 원치 않는 Microsoft Graph 위임된 권한을 제거합니다.

        const Request = {
            scopes: ["openid", "profile"],
            loginHint: "example@domain.net"
        };
    
        myMSALObj.ssoSilent(Request)
            .then((response) => {
                // your logic
            }).catch(error => {
                console.error("Silent Error: " + error);
                if (error instanceof msal.InteractionRequiredAuthError) {
                    myMSALObj.loginRedirect(loginRequest);
                }
        });
    

앱 등록에서 권한이 제거된 후 테넌트의 관리자도 조직의 데이터를 보호하기 위해 동의를 철회해야 합니다. 제거된 권한에 관리자 동의가 필요한 경우 필요한 작업은 앱 형식에 따라 다릅니다.

  • 홈 테넌트의 단일 테넌트 앱 및 다중 테넌트 앱: 단일 테넌트 앱의 경우 테넌트 관리자에게 문의하여 앱에 이미 부여된 권한을 철회합니다. 다중 테넌트 앱의 경우 응용 프로그램 인스턴스가 있는 모든 테넌트의 관리자에게 문의하여 엔터프라이즈 애플리케이션에 부여된 권한을 철회합니다. 제거된 권한에 대한 동의를 취소하면 응용 프로그램이 제거된 권한을 통해 액세스를 유지하지 못하게 됩니다.
  • 고객 테넌트의 다중 테넌트 앱: 공지 사항, 블로그 및 기타 통신 채널을 통해 고객과 권한 철회에 관해 소통해야 합니다.

단일 테넌트 및 다중 테넌트 앱 모두 사용자 동의가 사용되는 테넌트의 관리 사용자가 아닌 사용자는 MyApps 포털을 사용하여 이전에 부여한 권한에 대한 동의를 철회할 수 있습니다. 최종 사용자가 MyApps 포털에서 권한을 철회하는 방법에 대한 자세한 내용은 최종 사용자 동의 철회를 참조하세요.

권한 바꾸기

낮은 권한으로도 충분할 경우 높은 권한을 가진 권한을 바꿔야 합니다.

권한을 바꾸면 중요한 데이터가 노출되거나 보안이 손상될 위험이 줄어들어 사용자 환경과 신뢰가 개선됩니다. 앱이 Directory.ReadWrite.All과 같이 높은 권한을 사용하는 경우 User.ReadWrite.All과 같이 권한이 낮은 권한이 앱 기능에 충분한지 고려해야 합니다.

참고 항목

정적 동의를 위해 앱에서 요청된 권한을 수정하면 고객이 다시 동의해야 합니다. 재동의하면 이전에 부여된 모든 권한이 철회되고 새로운 권한에 대한 동의가 부여됩니다. 동적 동의를 위해 앱에서 요청된 권한을 수정해도 이전에 부여된 권한은 철회되지 않습니다. 고객이 직접 권한을 철회해야 합니다.

권한을 바꾸려면 불필요한 권한을 제거하고 바꾸기 권한을 추가해야 합니다. 단계는 이 문서의 사용하지 않는 권한 요청 중지권한 추가 섹션에 설명된 단계와 같습니다.