여기서 문제는 데이터베이스 액세스가 추상화로 관리된다는 것입니다. 사용자는 스스로 연결하는 대신 본질적으로 일부 일반화 된 응용 프로그램 역할의 ID를 갖습니다. 개별 연결에 대한 가시성을 잃을뿐만 아니라 모든 개별 사용자에 대해 서로 다른 유형의 액세스를 정의 할 때 세분성을 잃게됩니다.
이 방법을 사용하는 주된 이유는 단순성입니다. 많은 응용 프로그램은 응용 프로그램 사용자가 데이터베이스에 대해 알지 못하도록 설계되었습니다. 특히 애플리케이션이 자체 내부 보안을 관리하는 경우에는 필요하지 않습니다. 대부분의 개별 사용자는 데이터베이스에 직접 연결하지 않으므로 명시적인 로그인을 정의 할 필요가 없습니다.
데이터베이스에 보안을 관리 할 수있는 유일한 시점은 데이터베이스에 직접 연결할 사용자가있는 경우입니다. 이것은 그들이 당신의 응용 프로그램을 돌아 다니고 더 이상 자체적으로 보안을 시행 할 수 없다는 것을 의미합니다. 여기서 장점은 보안 정의에 대해보다 세분화 될 수 있다는 것입니다. 단점은 사용자 및 권한을 관리하기위한 오버 헤드가 높다는 것입니다.
이런 종류의 액세스가 필요하다고 생각되면 역할 기반 액세스 제어 를 사용하려고 합니다 . 데이터베이스 내에서 어떤 종류의 권한이 필요한지에 따라 역할을 정의한 다음 해당 역할에 따라 개별 사용자를 그룹화해야합니다. 이를 통해 보안 모델에 대한 감사 및 제어 기능이 향상되어 직접 액세스를 관리 할 때 제어 범위를 빠르게 벗어날 수 있습니다.
이에 대한 하이브리드 접근법이 있습니다. 데이터베이스에서 보안을 부분적으로 관리하려는 경우 각각 역할별로 정의 된 여러 애플리케이션 사용자를 작성하고 해당 역할에 따라 해당 사용자에게 명시 적으로 액세스 권한을 부여 할 수 있습니다. 즉, 일부 보안 모델에 데이터베이스 엔진을 활용할 수 있지만 여전히 응용 프로그램 내에서 일부 관리를 수행해야합니다. 응용 프로그램 사용자 모델의 복잡성을 증가 시키지만 사용중인 다른 로그인에 대해 세밀한 정보를 제공합니다.