다음을 통해 공유


애플리케이션 역할

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

애플리케이션 역할은 애플리케이션이 사용자와 같은 자체 사용 권한으로 실행할 수 있도록 설정하는 데이터베이스 보안 주체입니다. 애플리케이션 역할을 사용하여 특정 애플리케이션을 통해 연결한 사용자만 특정 데이터에 액세스할 수 있도록 설정할 수 있습니다. 데이터베이스 역할과는 달리 애플리케이션 역할에는 멤버가 없으며 기본적으로 비활성화됩니다. 애플리케이션 역할은 비밀번호가 필요한 sp_setapprole 사용하여 사용하도록 설정됩니다. 애플리케이션 역할은 데이터베이스 수준 보안 주체이므로 해당 데이터베이스에서 게스트에게 부여된 사용 권한을 통해서만 다른 데이터베이스에 액세스할 수 있습니다. 따라서 게스트가 사용하지 않도록 설정된 모든 데이터베이스는 다른 데이터베이스의 애플리케이션 역할에 액세스할 수 없습니다.

SQL Server에서 애플리케이션 역할은 서버 수준의 보안 주체에 연결되지 않기 때문에 서버 수준 메타데이터에 액세스할 수 없습니다. 이 제한을 해제하여 애플리케이션 역할이 서버 수준 메타데이터에 액세스할 수 있도록 하려면 -T4616 또는 DBCC TRACEON (4616, -1)을 사용하여 전역 플래그 4616을 설정합니다. 이 추적 플래그를 사용하지 않으려면 인증서 서명 저장 프로시저를 사용하여 애플리케이션 역할이 서버 상태를 볼 수 있도록 할 수 있습니다. 샘플 코드는 GitHub에서 이 샘플 스크립트를 참조 하세요.

애플리케이션 역할에 연결

다음은 애플리케이션 역할이 보안 컨텍스트를 전환하는 프로세스를 구성하는 단계입니다.

  1. 사용자가 클라이언트 애플리케이션을 실행합니다.

  2. 클라이언트 애플리케이션이 이 사용자로 SQL Server 인스턴스에 연결합니다.

  3. 그런 다음 애플리케이션은 애플리케이션에만 알려진 암호로 sp_setapprole 저장 프로시저를 실행합니다.

  4. 애플리케이션 역할 이름 및 비밀번호가 유효한 경우 애플리케이션 역할이 활성화됩니다.

  5. 이 시점에서 연결은 사용자의 사용 권한을 잃고 애플리케이션 역할의 사용 권한을 가정합니다.

애플리케이션 역할을 통해 얻은 사용 권한은 연결 기간 내내 유효합니다.

이전 버전의 SQL Server에서는 애플리케이션 역할을 시작한 후 사용자가 원래 보안 컨텍스트를 다시 사용할 수 있는 유일한 방법은 연결을 끊고 SQL Server에 다시 연결하는 것입니다. SQL Server 2005(9.x)부터 sp_setapprole는 쿠키를 만드는 옵션이 있습니다. 쿠키에는 애플리케이션 역할을 사용하도록 설정하기 전에 컨텍스트 정보가 포함됩니다. 그런 다음 sp_unsetapprole 저장 프로시저는 쿠키를 사용하여 세션을 원래 컨텍스트로 되돌려 냅니다. 이 새 옵션 및 예제에 대한 자세한 정보는 sp_setapprole(Transact-SQL)sp_unsetapprole(Transaction-SQL)를 참조하세요.

Important

ODBC 암호화 옵션은 SqlClient에서 지원되지 않습니다. 네트워크를 통해 기밀 정보를 전송하는 경우 이전에 SSL(Secure Sockets Layer)으로 알려진 TLS(전송 계층 보안) 또는 IPsec을 사용하여 채널을 암호화합니다. 클라이언트 애플리케이션의 자격 증명을 유지해야 하는 경우에는 crypto API 함수를 사용하여 자격 증명을 암호화하십시오. SQL Server 2005(9.x) 이상 버전에서 비밀번호 매개 변수는 단방향 해시로 저장됩니다.

Task Type
애플리케이션 역할을 만듭니다 애플리케이션 역할 만들기CREATE APPLICATION ROLE(Transact-SQL)
애플리케이션 역할을 변경합니다. ALTER APPLICATION ROLE(Transact-SQL)
애플리케이션 역할 삭제 DROP APPLICATION ROLE(Transact-SQL)
애플리케이션 역할 사용 sp_setapprole(Transact-SQL)

참고 항목

SQL Server 보안