역할 효과적으로 디자인
많은 시나리오에서 역할 기반 보안은 매우 효과적인 메커니즘이지만 덜 효과적인 상황이 있습니다. 특정 애플리케이션에 역할 기반 보안을 적용할 위치와 방법을 결정할 때 여러 가지 요소를 고려해야 합니다.
사용자 및 데이터 특성 및 역할의 적합성
역할은 사용자 그룹의 특징을 지정하는 데 매우 잘 작동하며, 이를 기반으로 사용자가 수행할 수 있는 작업을 필터링합니다. "관리자" 및 "텔러", "관리자" 및 "독자", "Project One Employees" 및 "Project Two Employees" 등의 역할과 같이 organization 내에서 사용자의 위치를 반영하는 역할을 만들어 실제로 수행되는 경우가 많습니다. 액세스되는 데이터가 사용자에 비해 상당히 일반적인 경우 역할을 효율적으로 사용하여 다음과 같은 비즈니스 규칙을 적용할 수 있습니다.
"관리자는 모든 금액을 이체할 수 있습니다. 점원은 최대 $10,000까지만 이체할 수 있습니다."
"관리자는 무엇이든 변경할 수 있습니다. 다른 사람은 읽기만 가능합니다."
"Project One 직원은 특정 데이터베이스에 액세스할 수 있습니다. 다른 사람은 할 수 없습니다."
사용자는 역할이 비즈니스의 조직 구조를 모델링하는 방법에 따라 자연스럽게 여러 역할에 속할 수 있습니다.
그러나 보안 액세스 결정이 특정 데이터 요소의 특성에 따라 결정되는 경우 역할은 제대로 작동하지 않습니다. 예를 들어 역할을 사용하여 다음과 같은 복잡한 사용자 데이터 관계를 반영하기는 어렵습니다.
"특정 관리자는 자신의 보고서에 대한 직원 데이터에만 액세스할 수 있습니다."
"Joe Consumer는 자신의 계정 잔액을 조회할 수 있습니다."
이러한 경우 액세스되는 데이터의 타고난 특성을 더 쉽게 고려할 수 있는 데이터베이스 자체에서 보안 검사를 수행해야 하는 경우가 많습니다. 즉 , 가장 을 사용하여 클라이언트 ID를 데이터베이스에 전달하고 데이터베이스에서 요청의 유효성을 검사하도록 해야 합니다. 이는 성능에 영향을 줄 수 있으며 애플리케이션의 디자인에 영향을 줄 수 있습니다. 예를 들어 특정 사용자 ID에서 연결을 열 때 연결 풀링이 작동하지 않을 수 있습니다. 관련된 문제에 대한 자세한 내용은 다중 계층 애플리케이션 보안 및 클라이언트 가장 및 위임을 참조하세요.
Role-Based 권한 부여 정책의 복잡성 및 확장성
어떤 보안 정책을 적용하든 애플리케이션을 배포하는 시스템 관리자가 구현하는 것만큼 효과적입니다. 관리자가 보안 정책에 따라 사용자를 올바른 역할에 할당하는 실수를 하면 정책이 의도한 대로 작동하지 않습니다. 문제는 다음과 같은 상황에서 발생할 가능성이 가장 높습니다.
- 많은 역할과 사용자가 다양한 역할에 매핑되는 매우 복잡한 역할 기반 정책을 만들었습니다.
- 해당 역할에 속해야 하는 사용자에 대한 모호한 조건을 사용하여 역할을 만듭니다.
- 애플리케이션이 설치된 사이트에는 많은 사용자가 있으며 사용자가 만든 역할과 관련하여 변경되어 organization 내에서 자주 이동하고 있습니다.
- 애플리케이션이 설치된 사이트에는 여러 관리자가 책임이 있으므로 애플리케이션의 보안 요구 사항에 익숙한 관리자가 애플리케이션을 사용해야 하는 대규모 사용자 그룹에 익숙하지 않을 수 있습니다. 이는 사용자가 organization 내에서 이동할 때 특히 중요합니다. 이러한 정보는 잘 전달되어야 합니다.
또한 애플리케이션에 할당된 역할 수가 증가함에 따라 COM+가 해당 역할에서 호출자 멤버 자격을 조회하는 데 소요해야 하는 시간도 늘어나고 성능이 저하될 수 있습니다.
복잡성을 관리하고 이러한 문제를 완화하려면 다음 지침을 사용할 수 있습니다.
- 자체 설명이 포함된 역할 이름을 선택합니다. 어떤 사용자가 어떤 역할에 속해야 하는지 최대한 명확하게 확인합니다.
- 역할 기반 정책을 가능한 한 간단하게 만듭니다(더 간단하지 않음). 효과적인 정책을 유지하면서 가능한 한 적은 수의 역할을 선택합니다.
- 역할 멤버 자격이 명백한지 여부(사용자에게) 관리자를 위해 생성하는 역할 기반 정책을 명확하게 문서화합니다. 특히 각 역할에 사용할 수 있는 설명 필드를 사용하여 역할의 의도를 설명합니다. 일반적으로 누가 몇 문장에서 역할에 속해야 하는지 설명할 수 없다면 너무 복잡할 수 있습니다.
- 애플리케이션 관리자가 개별 사용자 대신 사용자 그룹으로 역할을 채우는 것이 좋습니다. 이는 훨씬 더 확장 가능한 솔루션입니다. organization 내에서 이동할 때 사용자를 더 쉽게 재할당하거나 제거할 수 있으며, 일정량의 감독 및 통신 문제로부터 관리자를 격리합니다.
관련 항목