다음을 통해 공유


권한 부여 기본 사항

권한 부여(약자로 AuthZ라고도 함)는 리소스나 기능에 대한 액세스를 평가할 수 있는 권한을 설정하는 데 사용됩니다. 반대로 인증(약자로 AuthN이라고도 함)은 사용자나 서비스와 같은 엔터티가 실제로 클레임되는지를 입증하는 데 중점을 둡니다.

권한 부여에는 엔터티에 액세스가 허용되는 기능, 리소스 또는 데이터 지정이 포함됩니다. 권한 부여는 데이터로 수행할 수 있는 작업도 지정합니다. 이 권한 부여 작업을 흔히 액세스 제어라고 합니다.

인증 및 권한 부여는 사용자로만 제한되지 않는 개념입니다. 서비스나 디먼 애플리케이션은 특정 사용자를 대신하여 리소스를 직접 요청하도록 빌드되는 경우가 많습니다. 이 문서에서 "entity"라는 용어는 사용자나 애플리케이션을 나타내는 데 사용됩니다.

권한 부여 방법

권한 부여를 처리하는 몇 가지 일반적인 방법이 있습니다. 역할 기반 액세스 제어는 현재 Microsoft ID 플랫폼을 사용하는 가장 일반적인 방법입니다.

권한 부여로서 인증

가장 간단한 권한 부여 형태는 요청을 만드는 엔터티가 인증되었는지 여부에 따라 액세스 권한을 부여하거나 거부하는 것입니다. 요청자가 자신의 클레임을 입증할 수 있으면 보호된 리소스나 기능에 액세스할 수 있습니다.

액세스 제어 목록

ACL(액세스 제어 목록)을 사용한 권한 부여에는 리소스나 기능에 대한 액세스 권한 유무에 관계없이 특정 엔터티의 명시적 목록을 유지 관리하는 작업이 포함됩니다. ACL은 authentication-as-authorization을 통해 세분화된 제어를 제공하지만 엔터티 수가 증가하면 관리하기가 어려워집니다.

역할 기반 액세스 제어

RBAC(역할 기반 액세스 제어)는 애플리케이션에서 권한 부여를 적용하는 가장 일반적인 방법입니다. RBAC를 사용하는 경우 역할은 엔터티에서 수행할 수 있는 활동의 종류를 설명하기 위해 정의됩니다. 애플리케이션 개발자는 개별 엔터티가 아닌 역할에 대한 액세스 권한을 부여합니다. 그런 다음, 관리자는 다른 엔터티에 역할을 할당하여 어떤 엔터티가 어떤 리소스와 기능에 액세스하는지를 제어할 수 있습니다.

고급 RBAC 구현에서 역할은 권한 컬렉션에 매핑될 수 있습니다. 여기서 권한은 수행할 수 있는 세분화된 작업을 설명합니다. 그런 다음, 역할은 권한 조합으로 구성됩니다. 엔터티에 할당된 다양한 역할에 부여된 권한을 결합하여 엔터티에 대한 전체 권한 집합을 계산합니다. 이 방법의 좋은 예는 Azure 구독의 리소스에 대한 액세스를 제어하는 RBAC 구현입니다.

참고 항목

애플리케이션 RBACAzure RBACMicrosoft Entra RBAC와 다릅니다. Azure 사용자 지정 역할 및 기본 제공 역할은 모두 Azure RBAC에 포함되며 Azure 리소스를 관리하는 데 도움이 됩니다. Microsoft Entra RBAC를 사용하면 Microsoft Entra 리소스를 관리할 수 있습니다.

특성 기반 액세스 제어

ABAC(특성 기반 액세스 제어)는 더욱 세분화된 액세스 제어 메커니즘입니다. 이 방식에서 규칙은 엔터티, 액세스 중인 리소스 및 현재 환경에 적용됩니다. 규칙은 리소스 및 기능에 대한 액세스 수준을 결정합니다. 예를 들어 관리자만 영업일 오전 9시부터 오후 5시까지 "근무 시간 동안에만 관리자"라는 메타데이터 태그로 식별된 파일에 액세스하도록 허용할 수 있습니다. 이 경우 사용자 특성(관리자 상태), 리소스의 특성(파일의 메타데이터 태그) 및 환경 특성(현재 시간)도 검사하여 액세스 권한을 결정합니다.

ABAC의 한 가지 장점은 구체적인 역할이나 RBAC 할당을 많이 만들 필요 없이 규칙과 조건 평가를 통해 더욱 세분화된 동적 액세스 제어를 달성할 수 있다는 점입니다.

Microsoft Entra ID로 ABAC를 달성하는 한 가지 방법은 동적 멤버 자격 그룹을 사용하는 것입니다. 동적 그룹을 사용하면 관리자가 원하는 값을 가진 특정 사용자 특성에 따라 동적으로 사용자를 그룹에 할당할 수 있습니다. 예를 들어 Author라는 직위가 있는 모든 사용자가 Authos 그룹에 동적으로 할당되는 Authors 그룹을 만들 수 있습니다. 역할을 그룹에 매핑하고 사용자를 동적으로 그룹에 할당하는 권한 부여에 RBAC와 함께 동적 그룹을 사용할 수 있습니다.

Azure ABAC는 현재 사용 가능한 ABAC 솔루션의 예입니다. Azure ABAC는 특정 작업의 맥락에서 특성을 기반으로 역할 할당 조건을 추가하여 Azure RBAC에서 빌드됩니다.

권한 부여 구현

권한 부여 논리는 액세스 제어가 필요한 애플리케이션이나 솔루션 내에서 구현되는 경우가 많습니다. 대부분의 경우 애플리케이션 개발 플랫폼은 권한 부여 구현을 간소화하는 미들웨어나 기타 API 솔루션을 제공합니다. 예에는 ASP.NET에서 AuthorizeAttribute 사용이나 Angular에서 경로 가드 사용이 포함됩니다.

인증된 엔터티에 대한 정보를 사용하는 권한 부여 방법의 경우 애플리케이션은 인증 중에 교환된 정보를 평가합니다. 보안 토큰 내에 제공된 정보를 사용하는 경우가 이 예에 해당됩니다. 토큰의 정보를 인증에 사용할 계획이라면 클레임 유효성 검사를 통해 앱을 올바르게 보호하는 방법에 대한 이 지침을 따르는 것이 좋습니다. 정보가 보안 토큰에 포함되지 않은 경우 애플리케이션은 외부 리소스를 추가로 호출할 수 있습니다.

개발자가 권한 부여 논리를 애플리케이션 내에 완전히 포함시킬 필요는 없습니다. 대신 전용 권한 부여 서비스를 사용하여 권한 부여 구현과 관리를 한 곳에서 제어할 수 있습니다.

다음 단계