SQL Server 보안
SQL Server 계정과 역할은 Windows Server용 Microsoft AppFabric 1.1 보안에서 중요한 부분을 차지합니다. AppFabric은 이러한 SQL Server 엔터티를 사용하여 모니터링 작업에서 생성된 데이터뿐만 아니라 워크플로 지속성과 관련된 상태 제어 데이터가 포함된 저장소와 테이블에 대한 액세스를 제어합니다. AppFabric은 데이터베이스 보안 관리를 지원하는 도구를 제공하지 않습니다. 계정과 역할을 만들고, 데이터베이스 개체에 대한 적절한 권한을 확인, 조작 및 할당하려면 데이터베이스 설치를 통해 제공되는 도구 지원을 사용합니다. SQL Server의 경우 SQL Server Management Studio를 사용합니다.
AppFabric은 SQL Server 로그인과 역할을 사용하여 지속성, 모니터링 저장소 및 저장 프로시저 같은 자산에 대한 액세스를 관리합니다. 보안 정책은 지속성 및 모니터링 스키마에 대한 관리 작업을 수행하고 읽고 쓸 수 있는 사용자를 결정하는 테이블 및 저장 프로시저에 대한 권한을 통해 적용됩니다. 각 스키마는 일련의 자체적인 보안 정책으로 보호됩니다.
SQL Server 인증 모드 및 AppFabric
SQL Server는 AppFabric 데이터베이스 서버에 대한 인증을 보호하는 두 가지 방법을 제공합니다.
Windows 인증. 기본 Windows 인증 모드를 통해 제공됩니다. SQL Server에 대한 가장 안전한 인증 모드입니다. Windows 인증 모드가 구성되면 SQL Server는 Windows 보안을 사용하여 Windows 운영 체제를 통해 요청 중인 사용자 계정의 계정 및 암호 유효성을 검사합니다.
SQL Server 인증. SQL Server 인증 모드를 통해 제공됩니다. 이 인증은 명시적 사용자 계정과 암호를 사용하여 SQL Server에 액세스해야 하는 응용 프로그램 및 사용자에 대한 이전 버전과의 호환성을 위해서만 제공됩니다. 가장 취약한 모드입니다.
AppFabric은 SQL Server 인증으로 작동되지만 구성 파일의 연결 문자열에 포함된 명시적 사용자 계정 이름과 암호를 전달하는 것은 권장되는 보안 모범 사례가 아닙니다. Windows 인증 모드를 사용하고 SQL Server 인증 모드를 사용하지 않도록 SQL Server를 구성하는 것이 좋습니다.
SQL Server 인증 모드를 사용해야 하거나 암호를 연결 문자열에 저장해야 하는 SQL Server 이외의 공급자를 사용하는 경우에는 암호화된 연결 문자열을 사용하는 것이 좋습니다. AppFabric에서는 구성 파일의 암호화된 섹션을 처리할 수 없으므로 AppFabric 도구를 사용하여 암호화된 연결 문자열을 보거나 추가할 수 없습니다.
AppFabric 컴퓨터에서 구성 파일의 일부를 암호화하여 구성 파일을 보호해야 하는 경우에는 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 사용합니다. 이 도구를 사용하여 AppFabric 사용자 인터페이스 외부에서 구성 파일의 보안 관련 섹션을 암호화할 수 있습니다(-pe 옵션). 나중에 해당 섹션을 확인하거나 수정해야 하는 경우 –pd 옵션을 사용하여 섹션의 암호를 해독할 수 있습니다. 섹션의 암호를 해독하면 AppFabric 도구에서 섹션을 표시 및 변경하고, 변경 내용을 구성 파일에 저장하며, AppFabric 외부에서 도구를 사용하여 섹션을 다시 암호화할 수 있습니다. ASP.NET IIS 등록 도구 사용 방법에 대한 자세한 내용은 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)(https://go.microsoft.com/fwlink/?LinkId=169163)를 참조하십시오.
SQL Server 로그인
SQL Server에 로그인하려면 SQL Server 컴퓨터에 로그온하기 위한 사용자 계정과 암호가 있어야 합니다. 이는 Windows 보안 관점에서 인증 또는 액세스 권한으로 볼 수 있습니다. SQL Server는 AppFabric 데이터베이스 리소스를 액세스하거나 관리하려는 보안 주체를 식별하기 위해 Windows 통합 인증을 사용합니다. Windows 통합 인증을 사용하여 SQL Server에 연결하려면 응용 프로그램을 실행 중인 Windows ID를 제공해야 합니다. 또한 해당 ID에 SQL Server 데이터베이스에 대한 적절한 액세스가 부여되었는지 확인해야 합니다.
데이터베이스 스키마나 데이터에 대한 구성 또는 운영 작업을 수행하려면 로그인 계정을 적절한 권한을 가진 SQL Server 역할에 매핑해야 합니다. SQL Server 역할은 Windows 그룹처럼 작동합니다. SQL Server 역할 내에서 로그인 계정의 구성원 자격은 로그인 계정이 소유한 데이터베이스 작업과 관리 활동에 대한 제어 범위를 나타냅니다. 하나의 로그인 계정이 두 개 이상 데이터베이스 역할의 구성원일 수 있습니다.
이러한 SQL Server 로그인은 AppFabric을 설치할 때 만들어집니다.
로그인 이름 | Windows 계정 | 데이터베이스 역할 구성원 자격 |
---|---|---|
AS_Administrators |
LOCALHOST\AS_Administrators |
|
AS_Observers |
LOCALHOST\AS_Observers |
|
IIS_IUSRS |
BUILTIN\IIS_IUSRS |
|
SQL Server 데이터베이스 역할
SQL Server에는 서버, 응용 프로그램 및 데이터베이스의 세 가지 데이터베이스 역할 유형이 있습니다. 완전한 내용이 되도록 여기에서 역할 유형에 대해 간단하게 설명합니다. AppFabric은 대부분의 해당 SQL Server 보안에 대해 데이터베이스 역할 모델만 사용합니다.
SQL Server “서버” 역할. SQL Server “서버” 역할은 서버 수준에 있는 저장소 외부에서 정의됩니다. SQL Server 역할은 미리 정의되어 있으므로 개수나 내용을 수정할 수 없습니다. 일반적인 서버 역할의 예로는 sysadmin 역할이 있습니다. 이 역할의 구성원 자격을 통해 로그인 계정은 모든 데이터베이스 작업을 완전히 제어하고 저장소의 SQL Server 데이터에 대한 작업을 수행할 수 있습니다. AppFabric은 보안 모델에서 서버 역할을 명시적으로 사용하지 않습니다.
SQL Server “응용 프로그램” 역할. 응용 프로그램 역할은 특정 응용 프로그램에 대한 더욱 복잡한 사용자 지정 보안 요구 사항을 지원합니다. 응용 프로그램이 저장소에 액세스할 때 데이터에 대한 보안을 적용해야 하는 일반적인 필요 때문에 두 개 이상의 응용 프로그램이 하나의 저장소를 사용할 수 있습니다. AppFabric은 보안 모델에서 응용 프로그램 역할을 명시적으로 사용하지 않습니다.
SQL Server “데이터베이스” 역할. AppFabric은 데이터베이스 역할을 광범위하게 사용합니다. 데이터베이스 역할에는 공용, 사용자 정의 및 고정의 세 가지 유형이 있습니다. 완전한 내용이 되도록 여기에서 역할 유형에 대해 설명합니다. AppFabric은 대부분의 해당 SQL Server 보안에 대해 사용자 정의 데이터베이스 역할 모델만 사용합니다.
SQL Server 데이터베이스 역할에는 다음과 같은 세 가지 유형이 있습니다.
공용. 공용 데이터베이스 역할에는 모든 데이터베이스 사용자에 대한 기본 액세스 권한이 포함됩니다. 따라서 AppFabric에서 만들어진 모든 로그인 계정은 이 역할의 구성원입니다.
고정. SQL Server “서버” 역할(예: sysadmin) 같이 고정 데이터베이스 역할은 수정할 수 없습니다. 서버 수준에 있는 서버 역할과는 다르게 데이터베이스 역할은 각 저장소의 데이터베이스 수준에 있습니다. 고정 데이터베이스 역할의 예로는 db_owner가 있습니다. 고정 데이터베이스 역할에 대해 SQL Server 로그인 사용자 계정을 추가하거나 제거할 수 있습니다.
사용자 정의. AppFabric은 설치하는 동안 비어 있는 특정 사용자 정의 데이터베이스 역할을 만듭니다. AppFabric 설치 프로그램은 Windows 계정이나 SQL Server 로그인 계정을 해당 사용자 정의 데이터베이스 역할에 명시적으로 삽입하지 않습니다. SQL Server 관리 도구를 사용하여 계정을 명시적으로 추가해야 합니다.
AppFabric은 SQL Server 데이터베이스 역할을 사용하여 모니터링 및 지속성 데이터 저장소에 대한 액세스를 제어합니다. 새 AppFabric 모니터링 또는 지속성 데이터 저장소를 초기화할 때 여러 사용자 정의 데이터베이스 보안 역할이 설치 중에 만들어집니다. 다음 표에서는 이러한 역할이 이전 섹션에서 설명된 SQL Server 로그인에 매핑되는 방식을 보여 줍니다.
SQL Server 사용자 정의 역할 | 스키마 | 매핑된 로그인 | 권한 |
---|---|---|---|
ASMonitoringDbAdmin |
모니터링 |
AS_Administrators |
준비 테이블에 쓰기, 이벤트 보기에서 읽기, 제거 및 보관 저장 프로시저 호출 |
ASMonitoringDbReader |
모니터링 |
AS_Administrators 및 AS_Observers |
이벤트 보기에서 읽기 |
ASMonitoringDbWriter |
모니터링 |
AS_Administrators |
준비 테이블에 쓰기 및 가져오기 프로시저 호출 |
Microsoft.ApplicationServer.DurableInstancing.WorkflowAdministrators |
지속성 |
AS_Administrators |
제어 명령을 저장소의 명령 큐에 삽입 |
System.Activities.DurableInstancing.InstanceStoreObservers |
지속성 |
AS_Administrators 및 AS_Observers |
인스턴스 저장소 보기에서 읽기 |
System.Activities.DurableInstancing.InstanceStoreUsers |
지속성 |
BUILTIN\IIS_IUSRS |
지속성과 관련된 저장 프로시저 호출 |
Microsoft.ApplicationServer.DurableInstancing.WorkflowManagementServiceUsers |
지속성 |
AS_Administrators |
제어 명령을 저장소의 명령 큐에서 제거 |
System.Activities.DurableInstancing.WorkflowActivationUsers |
지속성 |
AS_Administrators |
인스턴스 저장소에서 활성화할 수 있는 워크플로 인스턴스 쿼리 |
Active Directory를 사용하는 경우 여러 컴퓨터 전체에서 보안을 단순화하도록 도메인 계정을 사용하는 AppFabric 보안 역할을 디자인해야 합니다. AppFabric 관리자는 Active Directory를 통해 관리자 및 관찰자 역할에 대한 2개의 사용자 지정 그룹 계정을 명시적으로 만들 수 있습니다. 예를 들어, 이러한 계정을 "DOMAIN\MyAppFabricAdmins” 및 “DOMAIN\MyAppFabricObservers”라고 할 수 있습니다. 그런 다음 각 컴퓨터에서 수동으로 “DOMAIN\MyAppFabricAdmins” 그룹을 LOCALHOST\AS_Administrators 그룹에 추가하고 “DOMAIN\MyAppFabricObservers” 그룹을 LOCALHOST\AS_Observers 그룹에 추가하여 두 그룹 모두에게 적절한 권한을 부여할 수 있습니다. 이벤트 컬렉션 서비스 및 워크플로 관리 서비스는 “DOMAIN\MyAppFabricAdmins” 그룹의 구성원인 도메인 계정에서 실행되어야 합니다.
보안 참고 |
---|
SQL Server를 사용하는 AppFabric cmdlet은 이러한 SQL Server 데이터베이스 역할에 따라 실행 중에 ID를 인증합니다. |
SQL Server가 아닌 데이터베이스 저장소
SQL Server 데이터베이스 역할은 SQL Server로 한정됩니다. 그러나 기본 SQL Server 공급자를 사용하지 않고 자체 사용자 지정 공급자를 쓰도록 선택하면 이러한 역할의 기능을 SQL Server가 아닌 저장소의 해당하는 기능에 매핑할 수 있습니다.
SQL Server가 아닌 저장소의 경우 저장소에 대한 액세스를 보호하려면 사용자 ID와 암호를 연결 문자열에 포함해야 합니다. 예를 들어, SQL Server 인증을 통해 사용자 ID와 암호를 연결 문자열로 저장소에 전달할 수 있지만 이 방법은 사용하지 않는 것이 좋습니다. 사용자 ID와 암호를 연결 문자열로 전달하도록 선택해야 하는 경우에는 적절한 .NET Framework 보안 사례에 따라 연결 문자열을 암호화해야 합니다.
참고
암호화된 연결 문자열을 사용하면 연결된 IIS 응용 프로그램이 올바르게 실행됩니다. 그러나 연결 문자열이 암호화되면 관련 IIS 관리자 도구가 작동하지 않습니다. 도구를 사용하려면 연결 문자열을 암호 해독하고 IIS 도구를 사용하여 구성을 변경한 다음 연결 문자열을 다시 암호화해야 합니다.
2012-03-05