ODBC 사용자 디렉터리 연결 구성
목차
sm1252sp1kkr
목차
2
정책 서버가 ODBC 사용자 저장소와 통신할 수 있도록 사용자 디렉터리 연결을 구성할 수 있습니다.
사용자 디렉터리는 물론 감사 로그에도 Microsoft SQL Server 데이터베이스를 사용할 수 있습니다. 감사 로깅에 대한 캐싱을 설정하는 경우 정책 서버가 로그 메시지를 큐에 넣으므로 부하가 높아져 성능이 느려질 수 있습니다. 문제를 완화하려면 많은 사용자가 액세스하는 리소스와 연관된 영역에 대해 비동기 감사를 설정하십시오.
SQL Server 데이터 원본 구성
ODBC 디렉터리를 연결하기 전에 정책 서버에서 SQL Server 데이터 원본을 만드십시오.
다음 단계를 수행하십시오.
Windows 시스템
- 다음 작업 중 하나를 수행하십시오.
- 지원되는 32비트 Windows 운영 체제의 경우, "시작", "프로그램", "관리 도구", "ODBC 데이터 원본"을 차례로 클릭합니다.
- 지원되는 64비트 Windows 운영 체제의 경우, C:\Windows\SysWOW64로 이동하고odbcad32.exe파일을 두 번 클릭합니다.
- "시스템 DSN" 탭을 클릭합니다.
- "추가"를 클릭합니다.
- "SiteMinder® SQL Server Wire Protocol"을 선택하고 "마침"을 클릭합니다.
- "데이터 원본 이름" 필드에 데이터 원본 이름을 입력합니다.참고:데이터 원본 이름을 적어 두십시오. 이 정보는 데이터베이스를 사용자 저장소로 구성하는 데 필요합니다.
- "서버" 필드에 SQL Server 호스트 시스템의 이름을 입력합니다.
- "데이터베이스 이름" 필드에 데이터베이스 이름을 입력합니다.
- "확인"을 클릭합니다.
UNIX 시스템
- siteminder_home/db로 이동합니다.siteminder_home은 정책 서버 설치 디렉터리 경로입니다.
- 파일 sqlserverwire.ini를 복사하고 이름을system_odbc.ini로 바꿉니다.
- system_odbc.ini 파일을 엽니다.
- [SmSampleUsers Data Source] 아래에서 다음 설정을 업데이트합니다.
- nete_ps_root: 정책 서버 설치 디렉터리의 명시적 경로를 지정합니다.
- 데이터베이스: SQL Server 데이터베이스 인스턴스 이름을 지정합니다.
- myhost: SQL Server 데이터베이스의 IP 주소를 지정합니다.참고:데이터 원본 이름이 SmSampleUsers Data Source라는 것을 기억하십시오.
- [ODBC] 아래에서 다음 설정을 업데이트합니다.
- nete_ps_root: 정책 서버 설치 디렉터리의 명시적 경로를 지정합니다.
- 파일을 저장합니다.
ODBC 사용자 디렉터리 연결 설정
다음 단계를 수행하십시오.
- 관리 UI에 로그인하고 "인프라", "디렉터리"를 차례로 클릭합니다.
- "사용자 디렉터리"를 클릭합니다.
- "사용자 디렉터리 만들기"를 클릭합니다."사용자 디렉터리 만들기" 화면이 열립니다.
- 디렉터리에 사용할 이름을 입력합니다.
- "네임스페이스" 목록에서 ODBC을 선택합니다.
- "데이터 원본" 필드에 정책 서버 시스템에서 만든 데이터 원본의 이름을 입력합니다.
- "디렉터리" 섹션에서 추가 설정을 완료합니다.참고:정책 서버가 FIPS 모드에서 작동 중이며 정책 서버와 통신할 때 디렉터리 연결이 보안 SSL 연결을 사용할 경우 정책 서버와 디렉터리 저장소가 사용하는 인증서는 FIPS를 준수해야 합니다.
- (선택 사항) 데이터베이스에 대한 관리자 자격 증명을 완료합니다.
- "자격 증명 필요"를 선택합니다.
- 관리자 계정의 자격 증명을 입력합니다.참고:사용자 이름은 사용자 디렉터리 데이터가 포함된 테이블을 소유한 사용자와 일치해야 합니다. 예를 들어 SmSampleUsers 스키마를 사용하는 경우 이 사용자는 SmUser, SmUserGroup 및 SmGroup 테이블의 소유자여야 합니다. 관리자 계정에는 사용자 디렉터리에 대해 읽기 또는 읽기/쓰기 권한이 있어야 합니다.
- SQL 쿼리 체계 섹션에서 "새로 만들기"를 클릭합니다.
- Create a new object of type SQL Query Scheme(SQL 쿼리 체계 유형의 새 개체 만들기)를 선택하고 "확인"을 클릭합니다.
- "확인"을 클릭하여 SmSampleUsers 쿼리 체계를 수락합니다.
- (선택 사항) "사용자 특성" 영역에서Single Sign-On용으로 예약된 사용자 디렉터리 프로필 특성을 지정합니다.
- (선택 사항) "특성 매핑 목록" 영역에서 "만들기"를 클릭하여 사용자 특성 매핑을 구성합니다.
- 제출을 클릭합니다.
사용자 디렉터리 연결이 생성됩니다.
참고
: 정책 서버가 관리 변경 내용을 적용할 때까지(기본적으로 60초 간격) 정책 서버에서 새 사용자 디렉터리 연결을 사용할 수 없습니다. 이는 사용자 디렉터리 연결이 수정된 경우에도 적용됩니다.SQL Server 사용자 저장소 문제 해결
SQL Server 사용자 저장소에서는 대/소문자가 구분되지 않고 사용자 암호의 불필요한 후행 공백이 무시될 수 있습니다. 이 경우 사용자가 암호를 입력할 때 대/소문자를 구분하지 않거나 불필요한 후행 공백을 포함하더라도 보호된 리소스에 액세스할 수 있기 때문에 문제가 될 수 있습니다. 예를 들어 암호 정책이 "ABCD"와 같이 대/소문자를 구분하는 암호를 사용하도록 구성되어 있는 경우 사용자가 "ABcd"를 입력하더라도 SQL Server에서 이 입력이 허용됩니다. 또 다른 예로, 암호 정책 구성에 따라 사용자 암호가 " A B C"여야 하는데 사용자가 " A B C"를 입력하더라도 SQL Server에서는 암호에 포함된 불필요한 후행 공백이 무시되고 이 입력이 허용됩니다.
다음은 이러한 문제에 대한 두 가지 해결책입니다.
SQL Server 대/소문자 비구분 문제
SQL Server 데이터베이스가 데이터 정렬을 올바로 수행하지 않고 암호의 대/소문자를 구분하지 않습니다.
해결책 1
SQL Server 사용자 저장소에서 대/소문자가 구분되도록 하려면 데이터베이스 설치 시 테이블을 생성하는 동안 올바른 데이터 정렬을 선택하십시오.
데이터 정렬에 대한 자세한 내용은 다음 항목을 참조하십시오.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/instsql/in_collation_3oa6.asp
해결책 2
기본 데이터 정렬을 사용하여 SQL Server를 설치한 경우 데이터베이스에서 암호의 대/소문자 구분 여부를 인식하지 못하면 사용자 저장소에 대한 테이블을 생성할 때 올바른 데이터 정렬을 생성하십시오.
데이터 정렬을 지정하려면 다음 스크립트 중
하나
를 수정한 후 가져오십시오.- siteminder_install\db\SQL\smsampleusers_sqlserver.sql
- siteminder_install\db\SQL\smsampleusers_sqlserver_upgrade.sql
이 두 스크립트 파일은 기본 지역화(미국 영어)를 사용합니다.
smsampleusers_sqlserver.sql 스크립트 파일
smsampleusers_sqlserver.sql 스크립트 파일에서 굵게 강조 표시된 다음 행을 변경하십시오.
CREATE TABLE SmGroup ( GroupID int NOT NULL, Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , PRIMARY KEY (GroupID) ) DROP TABLE SmUser go CREATE TABLE SmUser ( UserID int NOT NULL, Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, Password nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, LastName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, FirstName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, EmailAddress nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, TelephoneNumber nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , Disabled nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , PIN nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , Mileage int NOT NULL, PasswordData varchar(2000) NOT NULL, PRIMARY KEY (UserID) ) go
이 스크립트를 수정한 후 SQL Server 데이터베이스로 가져오십시오.
중요!
이 스크립트를 실행하면 기존 데이터가 제거되고 새 테이블이 생성되므로 기존 데이터를 백업해 두십시오.smsampleusers_sqlserver_upgrade.sql 스크립트 파일
smsampleusers_sqlserver_upgrade.sql 스크립트 파일에서 굵게 강조 표시된 다음 행을 변경해야 합니다.
/* Upgrade table SmGroup*/ ALTER TABLE SmGroup ALTER COLUMN Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go /* Upgrade table SmUser*/ ALTER TABLE SmUser ALTER COLUMN Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN Password nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN LastName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN FirstName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN EmailAddress nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN TelephoneNumber nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN Disabled nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN PIN nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go
이 스크립트를 수정한 후 SQL Server 데이터베이스로 가져오십시오.
중요!
이 스크립트를 실행하면 기존 데이터가 제거되고 새 테이블이 생성되므로 기존 데이터를 백업해 두십시오.SQL Server에서 암호의 후행 공백이 무시됨
SQL Server가 비교되는 두 문자열에 채우기를 적용하여 둘의 길이를 같게 만듭니다.
해결책
SQL Server가 데이터베이스에 저장된 암호의 후행 공백을 인식하도록 하려면 관리 UI를 사용하여 ODBC 쿼리 체계 개체의 사용자 인증 쿼리를 수정하십시오. SQL Server가 문자열을 채우기 또는 자르기 없이 비교하도록 하려면
=
연산자 대신 LIKE 조건자를 포함하십시오. LIKE 조건자 식의 오른쪽에 후행 공백을 포함한 값을 사용하면 SQL Server는 비교를 수행하기 전에 두 값을 같은 길이가 되도록 채우지 않습니다. 인증 쿼리의 예는 다음과 같습니다.select Name from SmUser where Name = '%s' and Password LIKE '%s'
중요!
암호 일치 쿼리에 LIKE 조건자 식을 사용할 경우 보안 허점이 발생할 수 있습니다. 사용자가 암호에 '%'를 입력할 경우 SQL Server는 이를 LIKE 조건자에 대한 와일드카드 문자로 처리하므로 사용자가 여러 암호를 사용하여 인증할 수 있습니다.다음에 주의하십시오.
- SDK를 사용하여 ODBC 쿼리 체계 개체를 생성할 경우 Sm_PolicyApi_ODBCQueryScheme_t 개체의 pszQueryAuthenticateUser 특성을 사용하여 인증 쿼리를 지정할 수 있습니다.
- Perl 스크립팅 인터페이스를 사용하여 ODBC 쿼리 체계 개체를 생성할 경우 CreateODBCQueryScheme() API를 호출하는 동안 인증 쿼리를 지정할 수 있습니다.