RBAC(역할 기반 액세스 제어)를 사용하면 특정 사용자 또는 그룹이 리소스에 액세스하고 관리할 수 있는 특정 권한을 가질 수 있습니다. 애플리케이션 RBAC는 Azure 역할 기반 액세스 제어 및 Microsoft Entra 역할 기반 액세스 제어와 다릅니다. Azure 사용자 지정 역할과 기본 제공 역할은 모두 Azure 리소스를 관리하는 데 사용되는 Azure RBAC의 일부입니다. Microsoft Entra RBAC는 Microsoft Entra 리소스를 관리하는 데 사용됩니다. 이 문서에서는 애플리케이션별 RBAC에 대해 설명합니다. 애플리케이션별 RBAC 구현에 대한 자세한 내용은 애플리케이션에 앱 역할을 추가하고 토큰에서 받는 방법을 참조하세요.
역할 정의
RBAC는 애플리케이션에서 권한 부여를 적용하는 인기 있는 메커니즘입니다. 조직에서 RBAC를 사용하는 경우 애플리케이션 개발자는 개별 사용자 또는 그룹에 권한을 부여하는 대신 역할을 정의합니다. 그런 다음 관리자는 다른 사용자 및 그룹에 역할을 할당하여 콘텐츠 및 기능에 대한 액세스 권한이 있는 사용자를 제어할 수 있습니다.
RBAC는 애플리케이션 개발자가 리소스 및 해당 사용량을 관리하는 데 도움이 됩니다. 또한 RBAC를 사용하면 애플리케이션 개발자가 사용자가 액세스할 수 있는 애플리케이션 영역을 제어할 수 있습니다. 관리자는 사용자 할당 필수 속성을 사용하여 애플리케이션에 액세스할 수 있는 사용자를 제어할 수 있습니다. 개발자는 애플리케이션 내의 특정 사용자와 애플리케이션 내에서 사용자가 수행할 수 있는 작업을 고려해야 합니다.
애플리케이션 개발자는 먼저 Microsoft Entra 관리 센터에서 애플리케이션의 등록 섹션 내에 역할 정의를 만듭니다. 역할 정의에는 해당 역할에 할당된 사용자에 대해 반환되는 값이 포함됩니다. 그런 다음 개발자는 이 값을 사용하여 애플리케이션 논리를 구현하여 해당 사용자가 애플리케이션에서 수행할 수 있거나 수행할 수 없는 작업을 결정할 수 있습니다.
RBAC 옵션
애플리케이션에 역할 기반 액세스 제어 권한 부여를 포함하는 것을 고려할 때 다음 지침을 적용해야 합니다.
- 애플리케이션의 권한 부여 요구 사항에 필요한 역할을 정의합니다.
- 인증된 사용자에 대한 관련 역할을 적용, 저장 및 검색합니다.
- 현재 사용자에게 할당된 역할에 따라 애플리케이션 동작을 결정합니다.
역할이 정의되면 Microsoft ID 플랫폼은 인증된 사용자에 대한 역할 정보를 적용, 저장 및 검색하는 데 사용할 수 있는 여러 가지 솔루션을 지원합니다. 이러한 솔루션에는 앱 역할, Microsoft Entra 그룹 및 사용자 역할 정보에 대한 사용자 지정 데이터 저장소 사용이 포함됩니다.
개발자는 역할 할당을 애플리케이션 권한으로 해석하는 방법에 대한 고유한 구현을 유연하게 제공할 수 있습니다. 이러한 사용 권한 해석에는 애플리케이션 또는 관련 라이브러리의 플랫폼에서 제공하는 미들웨어 또는 기타 옵션을 사용하는 것이 포함될 수 있습니다. 애플리케이션은 일반적으로 사용자 역할 정보를 클레임으로 받은 다음 해당 클레임에 따라 사용자 권한을 결정합니다.
앱 역할
Microsoft Entra ID를 사용하면 애플리케이션에 대한 앱 역할을 정의 하고 해당 역할을 사용자 및 다른 애플리케이션에 할당할 수 있습니다. 사용자 또는 애플리케이션에 할당하는 역할은 애플리케이션의 리소스 및 작업에 대한 액세스 수준을 정의합니다.
Microsoft Entra ID가 인증된 사용자 또는 애플리케이션에 대한 액세스 토큰을 발급할 때, 그 액세스 토큰의 클레임에 사용자 또는 애플리케이션에 할당된 역할의 이름이 roles
포함됩니다. 요청에서 액세스 토큰을 수신하는 웹 API와 같은 애플리케이션은 클레임의 값 roles
에 따라 권한 부여 결정을 내릴 수 있습니다.
그룹
개발자는 Microsoft Entra 그룹을 사용하여 애플리케이션에서 RBAC를 구현할 수도 있습니다. 여기서 특정 그룹의 사용자 멤버 자격은 해당 역할 멤버 자격으로 해석됩니다. 조직에서 그룹을 사용하는 경우 토큰에는 그룹 클레임이 포함됩니다. 그룹 클레임은 테넌트 내에서 할당된 모든 사용자 그룹의 식별자를 지정합니다.
중요합니다
그룹으로 작업할 때 개발자는 초과분 클레임의 개념을 알고 있어야 합니다. 기본적으로 사용자가 초과분 제한(SAML 토큰의 경우 150개, JWT 토큰의 경우 200개, 암시적 흐름을 사용하는 경우 6개)을 초과하는 멤버인 경우 Microsoft Entra ID는 토큰에 그룹 클레임을 내보내지 않습니다. 대신 토큰의 소비자가 Microsoft Graph API를 쿼리하여 사용자의 그룹 멤버 자격을 검색해야 했음을 나타내는 "초과분 클레임"이 토큰에 포함됩니다. 초과분 클레임 작업에 대한 자세한 내용은 액세스 토큰의 클레임을 참조하세요. 애플리케이션에 할당된 그룹만 내보내는 것이 가능하지만, 그룹 기반 할당에는 Microsoft Entra ID P1 또는 P2 버전이 필요합니다.
사용자 지정 데이터 저장소
앱 역할과 그룹은 모두 Microsoft Entra 디렉터리에 사용자 할당에 대한 정보를 저장합니다. 개발자가 사용할 수 있는 사용자 역할 정보를 관리하는 또 다른 옵션은 사용자 지정 데이터 저장소의 디렉터리 외부에서 정보를 유지하는 것입니다. 예를 들어 SQL 데이터베이스, Azure Table Storage 또는 Table용 Azure Cosmos DB에서
사용자 지정 스토리지를 사용하면 개발자가 사용자에게 역할을 할당하는 방법과 역할을 나타내는 방법을 추가로 사용자 지정하고 제어할 수 있습니다. 그러나 추가적인 유연성은 더 많은 책임을 줍니다. 예를 들어 현재 Microsoft Entra ID에서 반환된 토큰에 이 정보를 포함할 수 있는 메커니즘은 없습니다. 사용자 지정 데이터 저장소에서 역할 정보가 유지 관리되는 경우 애플리케이션은 역할을 검색해야 합니다. 역할 검색은 일반적으로 애플리케이션을 개발하는 데 사용되는 플랫폼에서 사용할 수 있는 미들웨어에 정의된 확장성 지점을 사용하여 수행됩니다. 개발자는 사용자 지정 데이터 저장소를 올바르게 보호해야 합니다.
방법 선택
일반적으로 앱 역할은 권장되는 솔루션입니다. 앱 역할은 가장 간단한 프로그래밍 모델을 제공하며 RBAC 구현을 위한 용도로 사용됩니다. 그러나 특정 애플리케이션 요구 사항은 다른 접근 방식이 더 나은 솔루션임을 나타낼 수 있습니다.
개발자는 앱 역할을 사용하여 사용자가 애플리케이션에 로그인할 수 있는지 또는 애플리케이션이 웹 API에 대한 액세스 토큰을 가져올 수 있는지 여부를 제어할 수 있습니다. 앱 역할은 개발자가 애플리케이션에서 권한 부여의 매개 변수를 설명하고 제어하려는 경우 Microsoft Entra 그룹보다 선호됩니다. 예를 들어 그룹 식별자와 이름이 다를 수 있으므로 다음 테넌트에서 권한 부여에 그룹을 사용하는 애플리케이션이 중단됩니다. 앱 역할을 사용하는 애플리케이션은 안전하게 유지됩니다.
앱 역할 또는 그룹을 권한 부여에 사용할 수 있지만 두 역할 간의 주요 차이점은 지정된 시나리오에 가장 적합한 솔루션에 영향을 줄 수 있습니다.
앱 역할 | Microsoft Entra 그룹 | 사용자 지정 데이터 저장소 | |
---|---|---|---|
프로그래밍 모델 | 가장 간단합니다. 애플리케이션과 관련이 있으며 애플리케이션 등록에 정의됩니다. 애플리케이션과 함께 이동합니다. | 더 복잡합니다. 그룹 식별자는 테넌트마다 다르며 초과분 클레임을 고려해야 할 수 있습니다. 그룹은 애플리케이션이 아니라 Microsoft Entra 테넌트에만 해당됩니다. | 가장 복잡합니다. 개발자는 역할 정보가 저장되고 검색되는 수단을 구현해야 합니다. |
역할 값은 Microsoft Entra 테넌트 간에 정적입니다. | 예 | 아니오 | 구현에 따라 달라집니다. |
역할 값은 여러 애플리케이션에서 사용할 수 있습니다. | 아니요(각 애플리케이션 등록에서 역할 구성이 중복되지 않는 한) | 예 | 예 |
디렉터리 내에 저장된 정보 | 예 | 예 | 아니오 |
정보는 토큰을 통해 전달됩니다. | 예(역할 주장) | 예(초과분인 경우 런타임에 그룹 클레임 을 검색해야 할 수 있음) | 아니요(사용자 지정 코드를 통해 런타임에 검색됨) |
수명 | 디렉터리 내 애플리케이션 등록에 존재합니다. 애플리케이션 등록이 제거될 때 제거됩니다. | 디렉터리에 있습니다. 애플리케이션 등록이 제거되더라도 그대로 유지합니다. | 사용자 지정 데이터 저장소에 있습니다. 애플리케이션 등록에 연결되지 않습니다. |
다음 단계
- Azure Identity Management 및 액세스 제어 보안 모범 사례
- 토큰 클레임을 사용한 적절한 권한 부여에 관해 알아보려면 클레임 유효성 검사를 통한 애플리케이션 및 API 보안 참고