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 권한 창에서 권한 추가
- 최소한 클라우드 애플리케이션 관리자 또는 애플리케이션 소유자로 Microsoft Entra 관리 센터에 로그인합니다.
- ID>애플리케이션>앱 등록>모든 애플리케이션으로 이동합니다.
- 권한을 추가하려는 앱 등록을 찾아 선택합니다. 다음 두 가지 방법으로 권한을 추가할 수 있습니다.
- API 권한 창에서 권한을 추가합니다.
옵션 2: 애플리케이션 매니페스트에 권한 추가
- 왼쪽 탐색 창의 관리 메뉴 그룹에서 매니페스트를 선택합니다. 선택하면 앱 등록 개체의 특성을 직접 편집할 수 있는 편집기가 열립니다.
- 애플리케이션의 매니페스트 파일에서
requiredResourceAccess
속성을 주의 깊게 편집합니다. resourceAppId
속성과resourceAccess
속성을 추가하고 필요한 권한을 할당합니다.- 변경 내용을 저장합니다.
권한을 추가하는 다음 단계를 완료하려면 다음 리소스와 권한이 필요합니다.
- 선택한 도구(예: 앱 또는 Graph Explorer를 통해)에서 HTTP 요청을 실행합니다.
- 최소한 클라우드 애플리케이션 관리자가 있는 사용자 또는 대상 앱 등록의 소유자로 API를 실행합니다.
- 이러한 변경을 수행하는 데 사용되는 앱에는
Application.ReadWrite.All
권한이 부여되어야 합니다.
앱에 필요한 권한, 권한 ID, 앱 역할(애플리케이션 권한)인지 위임된 권한인지 식별합니다. 예를 들어, Microsoft Graph 권한을 요청하려는 경우 Microsoft Graph 권한에서 권한 및 해당 ID 목록을 참조하세요.
앱에 필요한 Microsoft Graph 권한을 추가합니다. 다음 예에서는 애플리케이션 업데이트 API를 호출하여 개체 ID
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
로 식별되는 앱 등록에 필수 Microsoft Graph 권한을 추가합니다. 이 예에서는Analytics.Read
및Application.Read.All
위임된 권한과 애플리케이션 권한을 사용합니다. Microsoft Graph는 전역적으로 고유한AppId
인00000003-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.Read
및Application.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
권한을 제거할 수 있습니다.
Important
앱 등록에서 권한을 제거해도 앱에 이미 부여된 권한은 자동으로 철회되지 않습니다. 권한을 수동으로 철회해야 합니다. 자세한 내용은 이 문서의 엔터프라이즈 애플리케이션에 대한 권한 제거에 대한 동의 철회 섹션을 참조하세요.
정적 동의에 대한 권한 요청 중지
정적 동의가 필요한 권한 요청을 중지하려면 앱 등록 창에서 권한을 제거해야 합니다. 또한 테넌트 관리자는 엔터프라이즈 애플리케이션 창에서 권한을 철회해야 합니다. 엔터프라이즈 애플리케이션에 부여된 권한을 철회하는 방법에 대한 자세한 내용은 엔터프라이즈 애플리케이션에 대한 권한 철회를 참조하세요.
이 섹션에서는 정적 동의에 대한 권한 요청을 중지하는 방법을 알아봅니다.
Microsoft Entra 관리 센터에서 두 가지 방법으로 정적 동의에서 권한을 제거할 수 있습니다.
옵션 1: API 권한 창에서
- 최소한 클라우드 애플리케이션 관리자 또는 애플리케이션 소유자로 Microsoft Entra 관리 센터에 로그인합니다.
- ID>애플리케이션>앱 등록>모든 애플리케이션으로 이동합니다.
- 권한을 제거하려는 앱 등록을 찾아 선택합니다.
- API 권한 창에서 권한을 제거합니다.
옵션 2: 애플리케이션 매니페스트에서
- 왼쪽 탐색 창의 관리 메뉴 그룹에서 매니페스트를 선택합니다. 앱 등록 개체의 특성을 직접 편집할 수 있는 편집기가 열립니다.
- 애플리케이션의 매니페스트 파일에서
requiredResourceAccess
속성을 주의 깊게 편집합니다. resourceAppId
속성 및resourceAccess
속성에서 불필요한 권한을 제거합니다.- 변경 내용을 저장합니다.
권한을 제거하는 다음 단계를 완료하려면 다음 리소스와 권한이 필요합니다.
- 선택한 도구(예: 앱 또는 Graph Explorer를 통해)에서 HTTP 요청을 실행합니다.
- 최소한 클라우드 애플리케이션 관리자 또는 대상 앱 등록 소유자로서 API를 호출합니다.
- 이러한 변경을 수행하는 데 사용되는 앱에는
Application.ReadWrite.All
권한이 부여되어야 합니다.
앱에 대한 권한을 식별합니다.
예를 들어, 앱이 Microsoft Graph 권한을 요청하지 못하도록 하려면 앱에 대한 Microsoft Graph 권한, 권한 ID, 앱 역할(애플리케이션 권한)인지 위임된 권한인지 식별합니다.
앱에서 원치 않는 Microsoft Graph 권한을 제거합니다. 다음 예에서는 애플리케이션 업데이트 API를 호출하여 샘플 클라이언트 ID
00001111-aaaa-2222-bbbb-3333cccc4444
로 식별되는 앱 등록에서 원치 않는 Microsoft Graph 권한을 제거합니다. 이 예에서 애플리케이션에는Analytics.Read
,User.Read
및Application.Read.All
이 있습니다.Analytics.Read
및Application.Read.All
위임된 권한과 애플리케이션 권한을 제거해야 합니다. Microsoft Graph는 전역적으로 고유한AppId
인00000003-0000-0000-c000-000000000000
과DisplayName
및AppDisplayName
인 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.Read
및Application.Read
)을 요청합니다. 위임된 권한인Analytics.Read
및Application.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
과 같이 권한이 낮은 권한이 앱 기능에 충분한지 고려해야 합니다.
참고 항목
정적 동의를 위해 앱에서 요청된 권한을 수정하면 고객이 다시 동의해야 합니다. 재동의하면 이전에 부여된 모든 권한이 철회되고 새로운 권한에 대한 동의가 부여됩니다. 동적 동의를 위해 앱에서 요청된 권한을 수정해도 이전에 부여된 권한은 철회되지 않습니다. 고객이 직접 권한을 철회해야 합니다.
권한을 바꾸려면 불필요한 권한을 제거하고 바꾸기 권한을 추가해야 합니다. 단계는 이 문서의 사용하지 않는 권한 요청 중지 및 권한 추가 섹션에 설명된 단계와 같습니다.